bzoj3441: 乌鸦喝水
来源:互联网 发布:淘宝客服规则雷区 编辑:程序博客网 时间:2024/04/28 01:09
前言
今天早上贼颓。。
显示去poj看错了一题,然后poj还炸裂了评测不了。。
然后做这题又看错了,想了半天。。
然后想出一点点东西的时候发现看错题了QAQ
于是一早上就荒废了。。
感觉这是退役的节奏啊
题解
ORZ
膜的这个人。。根据挺牛逼的模拟题。。
我就懒得写了 不要打死我
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int N=100005;int n,m,x;struct qq{ int cnt,id;//这个东西可以被喝多少次 这是哪一个瓶子 }s[N];bool cmp (qq a,qq b){return a.cnt==b.cnt?a.id>b.id:a.cnt<b.cnt;}int w=0;int f[N];int lb (int x){return x&(-x);}void add (int x,int y){ while (x<=n) { f[x]+=y; x+=lb(x); }}int get (int x){ int lalal=0; while (x>=1) { lalal+=f[x]; x-=lb(x); } return lalal;}int ans=0;int shen=0,now=0;int find (int x){ int ans1=now; int l=now,r=n; while (l<=r) { int mid=(l+r)>>1; if (get(mid)-get(now)<=x) { ans1=mid; l=mid+1; } else r=mid-1; } return ans1;}void solve (){ for (int u=1;u<=w;u++) { if (s[u].cnt<ans) { add(s[u].id,-1); continue; } while (shen<m&&ans+(get(n)-get(now))<=s[u].cnt)//这个点现在还不会GG { int lalal=get(n)-get(now); ans+=lalal; now=0; shen++; } if (shen>=m) break; int ooo=find(s[u].cnt-ans); now=ooo; ans=s[u].cnt; add(s[u].id,-1); }}int main(){ scanf("%d%d%d",&n,&m,&x); for (int u=1;u<=n;u++) { scanf("%d",&s[u].cnt); s[u].id=u; } for (int u=1;u<=n;u++) { int w; scanf("%d",&w); s[u].cnt=(x-s[u].cnt)/w+1; } w=0; for (int u=1;u<=n;u++) { if (s[u].cnt>0) { s[++w]=s[u]; add(s[u].id,1); } } sort(s+1,s+1+w,cmp); solve(); printf("%d\n",ans); return 0;}
阅读全文
0 0
- BZOJ3441 乌鸦喝水
- [BZOJ3441]乌鸦喝水
- bzoj3441: 乌鸦喝水
- 乌鸦喝水
- 乌鸦喝水
- 新编乌鸦喝水
- BZOJ:3441 乌鸦喝水
- 线段树 乌鸦喝水
- “乌鸦喝水”是寓言吗?
- 乌鸦喝水(异常处理版 >_<)
- 家有千金之乌鸦喝水
- bzoj3441
- bzoj 3441: 乌鸦喝水(说实话有生之年没有见过这么难的模拟)
- 权利的游戏-三眼乌鸦喝水算法Aesop's Fables
- 权利的游戏-三眼乌鸦喝水算法Aesop's Fables
- 喝水
- 乌鸦坐飞机
- 肌肤喝水
- Groovy 入门教程
- [python]编码问题 待整理
- CAN之数据链路层协议
- Spring中@ResponseBody写在了public 之后
- 91. Decode Ways
- bzoj3441: 乌鸦喝水
- key文件信息等隐藏设置(keystore.properties)
- Spring官网下载各版本jar包
- SVN客户端查看日志显示1970-01-01 和 No data 解决办法
- 主题:钩子函数简析及实例
- 第二阶段mybatis框架熟悉
- duilib各种Api
- 数据库事务的四大特性以及事务的隔离级别
- c语言简单小游戏(模拟魔塔)