2 5 11 3 15 13 10 9 8 5 11 3 8 9 10 13 16
Case #1: why am I so diao? Case #2: madan!Hint第一组样例解释 5个ACMer,初始战斗力选择范围是[0,11],接下来每场战斗力提升上限是3,2,1,0,0,...,0 百小度首先使得自己的初始战斗力为10,打败战斗力为10的第一个ACMer, 然后选择战斗力提升3,变成13,打败战斗力为13的第二个ACMer, 然后选择战斗力提升2,变成15,打败战斗力为15的第三个ACMer, 之后再以任意顺序打败剩下的ACMer
2015年百度之星程序设计大赛 - 初赛(1)
/* 思路:战斗力排序,然后初始战斗力枚举到最大的匹配,前面的无视了,渣渣 于是开始比较下一个对手,贪心的法则是升到和他一样,若能搞掉最后一个就赢 */ #include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int N=1e+4+100; long long zhan[N]; int main() { int n,t; long long my,k,m; bool ok; scanf("%d",&t); for(int th=1;th<=t;th++){ scanf("%d%lld%lld",&n,&m,&k); ok=1; for(int i=0;i<n;i++) scanf("%lld",&zhan[i]); sort(zhan,zhan+n); int now=0; while(now<n&&zhan[now]<=m){ my=zhan[now]; now++; } if(now==0) { ok=0; goto AC; } now--; for(int i=now+1;i<n;i++){ if(k+my>=zhan[i]){ my=zhan[i]; if(k>0) k--; } else { ok=0; break; } } AC: printf("Case #%d:\n",th); if(ok) printf("why am I so diao?\n"); else printf("madan!\n"); } return 0; }