luogu p1867【Mc生存】经验值
原题链接:https://www.luogu.org/problem/show?pid=1867
今天看到这个题原来做过没A的时候,心里想:这不就是个模拟吗,看我2min切了它。。。
然后就硬生生调了0.5h,用出了各种大招,freopen,double,数组,中间结果,才将其拿下。。。。。。
思路应该没难度n<=20的数据o(n+玄学)复杂度,0ms跑过全部的点无压力,只是有几个细节。。。
用了double,按理说float也行的,不知道为啥不能A,而且hp赋初值的时候不要加小数点。。。
而且这个其实可以空间复杂度能减小的,但是我开了数组才解决了问题。。。
总之这个题各种玄学的细节,故归类到这个分类里
#include<cstdio> int n,s=1,sum,lv,b[55]; double hp=10,a[55]; int main() { // freopen("testdata.in","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%lf %d",&a[i],&b[i]); // for(int i=1;i<=n;i++) printf("%lf %d\n",a[i],b[i]); for(int i=1;i<=n;i++) { if(hp>a[i]) { sum+=b[i]; hp-=a[i]; if(hp>10) hp=10; } else break; } while(sum>=s) { sum-=s; lv++; s*=2; } printf("%d %d",lv,sum); return 0; }