BZOJ2527【整体二分】
来源:互联网 发布:网络电话软件隐藏号码 编辑:程序博客网 时间:2024/04/29 13:34
这道题要用unsigned long long.不然会WA一个点.数据有点SXBK.
/* I will wait for you */ #include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>#include<iostream>#include<fstream>#include<vector>#include<queue>#include<deque>#include<set>#include<map>#include<string> typedef long long LL;typedef unsigned long long ULL; using namespace std; const int maxn=300010;const int maxm=210;const int maxs=26;const int INF=1<<29;const int P=1000000007;const double error=1e-9; struct edge {int v,next; }e[maxn]; int cnt=0,n,m,k;int he[maxn],be[maxn],u[maxn],v[maxn],wi[maxn],ans[maxn],q[maxn],q1[maxn],q2[maxn];ULL tem[maxn],cur[maxn],xu[maxn],s[maxn]; void ins(int u,int v){ e[cnt]=(edge){v,he[u]};he[u]=cnt++;} void add(int x,ULL c){ for(;x<=m;x+=x&(-x)) s[x]+=c;} ULL sum(int x){ ULL ans=0;for(;x;x-=x&(-x)) ans+=s[x];return ans;} void slove(int head,int tail,int l,int r){ if(head>tail) return; int mid=(l+r)/2; for(int i=l;i<=mid;i++) { if(u[i]<=v[i]) add(u[i],wi[i]),add(v[i]+1,-wi[i]); else add(1,wi[i]),add(v[i]+1,-wi[i]),add(u[i],wi[i]); } for(int i=head;i<=tail;i++) { int u=q[i];tem[i]=0; for(int j=he[u];j!=-1;j=e[j].next) tem[i]+=sum(e[j].v); } for(int i=l;i<=mid;i++) { if(u[i]<=v[i]) add(u[i],-wi[i]),add(v[i]+1,wi[i]); else add(1,-wi[i]),add(v[i]+1,wi[i]),add(u[i],-wi[i]); } if(l==r) for(int i=head;i<=tail;i++) ans[q[i]]=cur[q[i]]+tem[i]>=xu[q[i]]?l:0; else { int a=0,b=0; for(int i=head;i<=tail;i++) { if(tem[i]+cur[q[i]]>=xu[q[i]]) q1[a++]=q[i]; else q2[b++]=q[i],cur[q[i]]+=tem[i]; } for(int i=0;i<a;i++) q[head+i]=q1[i]; for(int i=0;i<b;i++) q[head+a+i]=q2[i]; slove(head,head+a-1,l,mid); slove(head+a,tail,mid+1,r); }} int main(){ scanf("%d%d",&n,&m); memset(he,-1,sizeof(he)); for(int i=1;i<=m;i++) scanf("%d",&be[i]),ins(be[i],i); for(int i=1;i<=n;i++) scanf("%llu",&xu[i]); scanf("%d",&k); for(int i=1;i<=k;i++) scanf("%d%d%d",&u[i],&v[i],&wi[i]); for(int i=1;i<=n;i++) q[i]=i;slove(1,n,1,k); for(int i=1;i<=n;i++) ans[i]?printf("%d\n",ans[i]):printf("NIE\n"); return 0;}
0 0
- BZOJ2527【整体二分】
- 【bzoj2527】Meteors【整体二分】
- bzoj2527(整体二分)
- 整体二分 【Poi2011】 Meteors bzoj2527
- [BZOJ2527][Poi2011]Meteors(整体二分+bit)
- [BZOJ2527][Poi2011][整体二分][树状数组]Meteors
- 【BZOJ2527】【POI2011】Meteors(整体二分)
- 【整体二分+树状数组】BZOJ2527 [Poi2011]Meteors
- 整体二分——BZOJ2527/Luogu3527 [POI2011]MET-Meteors
- bzoj2527 [Poi2011]Meteors(整体二分+树状数组)
- 整体二分&CDQ分治:[BZOJ2527][POI2011] meteors [BZOJ3295][CQOI2011] 动态逆序对
- 整体二分
- 整体二分
- 整体二分
- 整体二分
- 整体二分
- 整体二分
- 整体二分(二分进阶)
- java向上转型方法调用的问题
- 程序员写作必备-Word2010从正文开始设置页码
- oracle下dbca不能使用
- AndroidStudio Shortcut
- 人脸识别算法嵌入式移植的一点经验
- BZOJ2527【整体二分】
- Android Material Design之Toolbar与Palette实践
- PHPCMS V9如何做搜索模块
- Trie树
- hibernate 实现多表连接查询(转载)
- 怎么在官网下载jstl【配图详解】
- Android利用Gson解析嵌套多层的Json
- 三个演讲技巧使你的演讲更成功
- JavaWeb-07(tomcat与web程序结构与Http协议与Servlet基础)