bzoj3441: 乌鸦喝水
发布日期:2021-05-06 23:49:09 浏览次数:29 分类:精选文章

本文共 1191 字,大约阅读时间需要 3 分钟。

前言

今天早上贼颓。。

显示去poj看错了一题,然后poj还炸裂了评测不了。。
然后做这题又看错了,想了半天。。
然后想出一点点东西的时候发现看错题了QAQ
于是一早上就荒废了。。
感觉这是退役的节奏啊

题解

膜的这个人。。根据挺牛逼的模拟题。。
我就懒得写了
不要打死我

#include
#include
#include
#include
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
=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
=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;}
上一篇:bzoj 4479: [Jsoi2013]吃货jyy
下一篇:linux 常用工具

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年03月29日 15时33分48秒