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;
} 
京公网安备 11010502036488号