先打能回血的,按消耗从小到大打: 然后按回血量降序打剩下的(把消耗和回血反着看就是上一种怪,打法一样): 中间体力小于0就输出无解 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=100005; int n,t1,t2; long long z; struct qwe { int d,a,id; }a[N],b[N]; bool cmp1(c…
3709: [PA2014]Bohater 或者:Bohater 题解 好狠啊这个题 z 要开 long long ,可能算掉血回血的时候会爆 long long 吧 首先把能回血的怪打死(不然你后面血不够咋办) 打回血怪的顺序按照消耗血量升序排列 然后再考虑杀掉血怪 当我们杀完所有怪物,最后的体力值是确定的 然后我们倒着看,杀掉血怪的时候,我们当做将血瓶吐出来还给掉血怪,然后掉血怪把消耗的血再还给你,然后推回去,看看能不能到达杀回血怪最后的血量巅峰,所以倒着看,处理就和杀回血怪差不多了,倒着看…
[BZOJ4619][Wf2016]Swap Space Description 你有许多电脑,它们的硬盘用不同的文件系统储存数据.你想要通过格式化来统一文件系统.格式化硬盘可能使它的容量发生变化.为了格式化,你需要买额外的硬盘.当然,你想要买容量最小的额外储存设备以便省钱.你可以按任意顺序格式化硬盘.格式化之前,你要把该硬盘上所有数据移到一个或更多的其他硬盘上(可以分割数据).格式化后,该硬盘可以立刻开始使用.你没有必要把数据放到它原来所在的硬盘上.数据也可以被放到你额外买的硬盘上.举个例子,…
斐波那契数列<10^9的数很少很少...所以直接暴力枚举就行了... ------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; ++i )…