Technocup 2020 - Elimination Round 1-C Save the Nature
好久不打比赛一打就unrated???
被掉分掉自闭了之后,每次好不容易鼓起勇气打一场网站就炸到unrated,,,我枯了‘
这次的C题差点点就写出来了哎呀,本来想贪心不过发现贪不动,队友喊了句二分加验证就开始胡写,
第二天交了一下WA5,原来是贪心没贪全。思维还是不够爱,永远差那么一点点(指间宇宙)
int n; ll x,y,a,b,k; ll p[MAXN]; int tag[MAXN]; //不仅要满足分配给a尽量大的 //还要满足分配给a+b尽量大的 //原来WA在这里啊,掉坑里了。。 ll check(int mid) { int r=n;ll sum=0; for(int i=1;i<=mid&&r&&sum<k;++i) if(i%a==0&&i%b==0) sum+=p[r--]*(x+y)/100; for(int i=1;i*a<=mid&&r&&sum<k;i++) if((i*a)%b) sum+=(p[r--]*x/100); for(int i=1;i*b<=mid&&r&&sum<k;i++) if((i*b)%a) sum+=(p[r--]*y/100); return sum; } int main() { int tt;rd(tt); while(tt--) { rd(n);mem(tag,0); for(int i=1;i<=n;++i) rd(p[i]); rd(x),rd(a);rd(y),rd(b);rd(k); if(x<y) swap(x,y),swap(a,b); sort(p+1,p+n+1); int l=1,r=n+1,flag=0; while(l<r) { int mid=(l+r)>>1; if(check(mid)>=k) r=mid,flag=1; else l=mid+1; } if(flag==0) printf("-1\n"); else printf("%d\n",l); } //stop; return 0; }