GYM 100247 F. Battle Fury(二分)
2017-03-01 14:02
543 查看
Description
n只怪兽,第i只怪兽有a[i]血,每次选中一个怪兽攻击可以对其造成p点伤害,对其余怪兽每只造成q点溅射伤害,问最少需要多少次攻击可以打死所有怪兽
Input
第一行三个整数n,p,q分别表示怪兽数量,攻击伤害和溅射伤害,之后n个整数a[i]表示每只怪兽的血量
(1<=n<=200000,1<=q<=p<=1e9,1<=a[i]<=1e9)
Output
输出杀死所有怪兽的最少攻击次数
Sample Input
2 3 2
5 5
Sample Output
2
Solution
二分答案,对于一个二分值k,如果某只怪兽的剩余血量不大于k*q,那么这只怪兽不需要多余攻击直接被溅射死,否则需要攻击(a[i]-k*q)/p+((a[i]-k*q)%p==0?0:1)次,看所有怪兽需要的攻击次数与k的大小关系决定二分方向
Code
n只怪兽,第i只怪兽有a[i]血,每次选中一个怪兽攻击可以对其造成p点伤害,对其余怪兽每只造成q点溅射伤害,问最少需要多少次攻击可以打死所有怪兽
Input
第一行三个整数n,p,q分别表示怪兽数量,攻击伤害和溅射伤害,之后n个整数a[i]表示每只怪兽的血量
(1<=n<=200000,1<=q<=p<=1e9,1<=a[i]<=1e9)
Output
输出杀死所有怪兽的最少攻击次数
Sample Input
2 3 2
5 5
Sample Output
2
Solution
二分答案,对于一个二分值k,如果某只怪兽的剩余血量不大于k*q,那么这只怪兽不需要多余攻击直接被溅射死,否则需要攻击(a[i]-k*q)/p+((a[i]-k*q)%p==0?0:1)次,看所有怪兽需要的攻击次数与k的大小关系决定二分方向
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 222222 int n; ll p,q,a[maxn]; bool check(ll k) { ll ans=0; for(int i=1;i<=n;i++) { if(a[i]<=k*q)continue; else ans+=(a[i]-k*q)/p+((a[i]-k*q)%p==0?0:1); } if(ans<=k)return 1; return 0; } int main() { while(~scanf("%d%I64d%I64d",&n,&p,&q)) { ll Max=0; for(int i=1;i<=n;i++) { scanf("%I64d",&a[i]); Max=max(Max,a[i]); } if(p==q) { printf("%I64d\n",Max/p+(Max%p==0?0:1)); continue; } p-=q; ll l=1,r=Max,mid,ans=r; while(l<=r) { mid=(l+r)/2; if(check(mid))r=mid-1,ans=mid; else l=mid+1; } printf("%I64d\n",ans); } return 0; }
相关文章推荐
- 【二分】【动态规划】Gym - 101156E - Longest Increasing Subsequences
- [二分答案 2-SAT验证 前缀后缀优化建图 线段树优化建图] Codeforces gym 100159 Facebook Hacker Cup 2012 I. Unfriending
- GYM 101243 J. Architect of Your Own Fortune【二分匹配】
- Codeforces Gym 101505D Orchard Division(离散化+树状数组+扫描线+二分)
- Gym 100425A Luggage Distribution (组合数学,二分)
- Codeforces Gym 101608 G WiFi Password(尺取/二分+ST表 )
- 【计算几何】【凸包】【极角排序】【二分】Gym - 101128J - Saint John Festival
- Gym - 100814G Galway Girl (最短路spfa+二分)
- GYM 100247 E. Of Groups and Rights(dfs)
- Gym 100712F Travelling Salesman(二分+并查集)
- Gym 101064 D Black Hills golden jewels 二分
- Gym 100886J Sockets(二分+贪心)
- Gym 100531H Problem H. Hiking in the Hills 二分
- Gym 100883J palprime(二分判断点在凸包里)
- Gym - 100570E:Palindrome Query (hash+BIT+二分维护回文串长度)
- [codeforces] Gym - 100814D Frozen Rivers (BFS + 二分)
- Yet Another Median Task Gym - 100741G 二分中位数
- GYM 100247 G. City Square(水~)
- Gym - 101201J (二分+ST)
- GYM 100801J Journey to the “The World's Start”【二分+Dp+单调队列】