HDU 4858 项目管理(点分块)
来源:互联网 发布:网络运营总监培训 编辑:程序博客网 时间:2024/06/16 12:38
题意:给出一张图,两种操作
1.将点x加上权值y
2.询问与点x相邻点的权值和
分析:将点分为重点和轻点,度数大于等于
#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>#include<map>#include<cstdlib>#include<cmath>#include<vector>//#pragma comment(linker, "/STACK:1024000000,1024000000");using namespace std;#define INF 0x3f3f3f3f#define maxn 200004int n,m;int x[maxn],y[maxn];int fir[maxn],nex[maxn],v[maxn],e_max;int in[maxn];int sum[maxn],val[maxn];bool heavy[maxn];void init(){ memset(sum,0,sizeof sum); memset(val,0,sizeof val); memset(heavy,false,sizeof heavy); memset(in,0,sizeof in); memset(fir,-1,sizeof fir); e_max=0;}void add_edge(int s,int t){ int e=e_max++; v[e]=t; nex[e]=fir[s]; fir[s]=e;}void build(){ int block=sqrt(m); for(int i=1; i<=n; i++) { if(in[i]>=block) heavy[i]=true; } for(int i=0; i<m; i++) { int u=x[i],v=y[i]; if(heavy[u]&&heavy[v]) { add_edge(u,v); add_edge(v,u); } if(!heavy[u]) add_edge(u,v); if(!heavy[v]) add_edge(v,u); }}void update(int x,int y){ val[x]+=y; if(!heavy[x]) { for(int i=fir[x]; ~i; i=nex[i]) { int e=v[i]; sum[e]+=y; } }}int query(int x){ int ans=0; if(heavy[x]) ans+=sum[x]; for(int i=fir[x]; ~i; i=nex[i]) { int e=v[i]; ans+=val[e]; } return ans;}int main(){ int T; scanf("%d",&T); while(T--) { init(); scanf("%d%d",&n,&m); for(int i=0; i<m; i++) { scanf("%d%d",&x[i],&y[i]); in[x[i]]++; in[y[i]]++; } build(); int q; scanf("%d",&q); while(q--) { int op; scanf("%d",&op); if(!op) { int x,y; scanf("%d%d",&x,&y); update(x,y); } else { int x; scanf("%d",&x); printf("%d\n",query(x)); } } } return 0;}
0 0
- HDU 4858 项目管理(点分块)
- [hdu 4858项目管理]分块
- hdu 4858 项目管理 分块
- 【分块】 HDOJ 4858 项目管理
- Hdu 4467 Graph(点分块)
- 分块法 hdu4858 项目管理
- HDU4858 项目管理 (分块)
- HDU 4858 项目管理
- hdu 4858 项目管理
- HDU 4858 项目管理
- HDU 4858 项目管理
- hdu 4858 项目管理
- hdu 4858 项目管理
- hdu 4858 项目管理
- HDU 4858 项目管理
- HDU 4858 项目管理(模拟)
- HDU-4858-项目管理【STL】
- 分块法 hdu4858 项目管理 1月5日
- Python爬虫入门实战一
- 解决进入app界面白屏黑屏问题
- C++学习笔记(二)C++primer 部分习题和知识点
- React Native -19.React Native Timer定时器的使用
- Faster-Rcnn
- HDU 4858 项目管理(点分块)
- 6-Functions
- linux 防火墙
- 利用文本挖掘技术来找出《天龙八部》中的“小鲜词”
- 宏的扩展应用-版本控制
- 7-Classes
- 用 Java 和 百度翻译API 实现代码注释翻译
- union和union all的区别
- [os]os vmware 手机连接