H. Fight Against Monsters

题目链接

贪心求解,a.atk/a.time值较大的排在前边。但是这样使用除法会导致精度损失,compare函数中的比较规则变为a.atk*b.time>b.atk*a.time就行了。当相等的时候按照atk的大小进行排序就行。
(原先的时候想按照a.atk/a.hp值较大的排在前边,想了一下是不行的。因为hp不同的怪兽攻击的次数可能是一样的。)

代码:

#include  			  
#include 
using namespace std;
const int inf=1e5+7;
int cnt[2*inf];
struct node
{int hp;int atk;	int time;
}arr[inf]; bool compare(node a,node b)
{   if(  a.atk*b.time  ==b.atk *a.time  )return a.atk >b.atk ;  else return  a.atk*b.time > b.atk*a.time;     
}int main( )
{int T,n;int kk=1,k=0;for(int i=1;i<=2*inf;i=i+(++kk)){while(++k<=i)		// 7,8,9,10是四。 {cnt[k]=kk;		//其中的k应该是生命值。	}k--;} /*for(int i=0;i<=100;i++)cout<

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部