题解:P13394 [GCJ 2010 #1B] Picking Up Chicks
Cade_Cunningham · · 题解
答题思路
贪心练习题。如果有一只鸡可以在
代码展示
#include<bits/stdc++.h>
#define int long long
using namespace std;
int c,x[100];
int v[100];
bool bl[100];
signed main()
{
cin>>c;
for(int T=1;T<=c;T++)
{
int n,k,b,t
int tmp=0,sum=0,ans=0;
//分别表示
//不可能走到谷仓的鸡的数量
//已经有几只鸡到达了
//答案统计
memset(bl,0,sizeof(bl));//多测清空
cin>>n>>k>>b>>t;
for(int i=1;i<=n;i++) cin>>x[i];
for(int i=1;i<=n;i++)
{
cin>>v[i];
if(x[i]+v[i]*t>=b) bl[i]=1;//打标记
}
for(int i=n;i>=1;i--)
{
if(sum>=k) break;//当已经有k只鸡通过,直接跳出循环
if(bl[i]) ans+=tmp,sum++;//如果被标记,前面不可能走到谷仓的鸡全部操作一遍
else tmp++;//没被标记,计数
}
cout<<"Case #"<<T<<": ";
if(sum<k) cout<<"IMPOSSIBLE"<<endl;//无解
else cout<<ans<<endl;
}
return 0;
}