BZOJ4378: [POI2015]Logistyka
来源:互联网 发布:学会php上手java 编辑:程序博客网 时间:2024/05/01 22:06
每个数对答案的贡献=min(a[i],s)
所以用树状数组维护小于等于每个数的权值和以及个数
每次对于一个s,把小于s的所有数加起来,再把大于s的当成s,统计一下贡献,看能否实现
#include<iostream>#include<cstdio>#include<map>#include<algorithm>#define N 2000010using namespace std;struct ppp {long long siz,sum;};ppp c[N];ppp operator+(ppp x,ppp y){return (ppp){x.siz+y.siz,x.sum+y.sum};}long long n,m;long long lowbit(long long x) {return x&(-x);}void change(long long x,ppp v){for(;x<=m+1;x+=lowbit(x))c[x]=c[x]+v;}ppp check(long long x){ppp ret={0,0};for(;x;x-=lowbit(x))ret=ret+c[x];return ret;}long long o[N],x[N],y[N];long long aa[N];map<long long,long long>p;long long a[N];int main(){scanf("%lld%lld",&n,&m);long long i,j;char s[10];for(i=1;i<=m;i++){scanf("%s%lld%lld",s,&x[i],&y[i]);if(s[0]=='Z') o[i]=1;aa[i]=y[i];}sort(aa+1,aa+m+1);p[0]=1;for(i=1;i<=m;i++)p[aa[i]]=i+1;change(p[0],(ppp){n,0});for(i=1;i<=m;i++){if(o[i]==0){change(p[a[x[i]]],(ppp){-1,-a[x[i]]});a[x[i]]=y[i];change(p[a[x[i]]],(ppp){1,a[x[i]]});}else{ppp t=check(p[y[i]]);//cout<<t.siz<<' '<<t.sum<<endl;if((n-t.siz)*y[i]+t.sum>=y[i]*x[i]) puts("TAK");else puts("NIE");}}}
0 0
- 【POI2015】【BZOJ4378】Logistyka
- BZOJ4378: [POI2015]Logistyka
- 【bzoj4378】[POI2015]Logistyka
- [bzoj4378][POI2015]Logistyka
- BZOJ4378[POI2015] Logistyka
- BZOJ4378 POI2015 Logistyka
- BZOJ4378: [POI2015]Logistyka
- 【BZOJ4378】[POI2015]Logistyka【树状数组】【结论题】
- bzoj4378 Logistyka 树状数组
- 4378: [POI2015]Logistyka
- BZOJ 4378: [POI2015]Logistyka 树状数组
- POI2015 题解
- bzoj 3747: [POI2015]Kinoman
- bzoj3747【POI2015】Kinoman
- [BZOJ3747] [POI2015]Kinoman
- BZOJ 3747: [POI2015]Kinoman
- BZOJ 3748: [POI2015]Kwadraty
- BZOJ4379: [POI2015]Modernizacja autostrady
- ZooKeeper简单介绍(一)
- Java中的线程池
- tableViewCell详说registerNib: 与 registerClass: 的区别
- nyoj195飞翔DP
- 攻城狮学习之路
- BZOJ4378: [POI2015]Logistyka
- ThreadPoolExecutor 官方使用说明
- 关于SizeOf测定JVM中对象占用内存
- Handler.post 问题
- nyoj_74 小学生算术
- C++中调用C代码,出现“Undefined Reference…”
- Android模拟器2.0初探
- js自定义命名空间
- C++重载函数与重载运算符