码迷,mamicode.com
首页 > 其他好文 > 详细

Doors Breaking and Repairing

时间:2019-08-31 23:27:43      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:tar   test   str   def   nbsp   c99   type   自己   using   

题目链接:Doors Breaking and Repairing

题目大意:有n个门,先手攻击力为x(摧毁),后手恢复力为y(恢复),输入每个门的初始“生命值”,当把门的生命值攻为0时,就无法恢复了。问:最多可以把几个门的生命值攻为0

思路:(1)当 x>y 的时候肯定所有的门的生命值都能降为0

   (2)当 x<=y 的时候,先手的最优策略就是每次去攻击那些当前“生命值”比自己攻击力小的门,使它们的生命值降为0;

     后手的最优策略就是去提高那些“生命值”比先手小的门的“生命值”,来减少先手“攻破”的门的数量,

     那些“生命值”本来就比先手攻击力高的先手就更攻破不了了;所以直接用门的“”生命值”小于等于x的门的个数除以2向上取整即可。

 

 1 /* */
 2 # include <bits/stdc++.h>
 3 using namespace std;
 4 typedef long long ll;
 5 
 6 ll a[110005];
 7 int main()
 8 {
 9     int n, x, y, num=0, sum=0;
10     cin>>n>>x>>y;
11     for(int i=1; i<=n; i++ )
12     {
13         cin>>a[i];
14         if( a[i]<=x )
15             sum++;
16     }
17     if( x<=y )
18         cout<<ceil(sum/2.0)<<endl;
19     else
20         cout<<n<<endl;
21     return 0;
22 }

 

Doors Breaking and Repairing

标签:tar   test   str   def   nbsp   c99   type   自己   using   

原文地址:https://www.cnblogs.com/wsy107316/p/11440712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!