题目描述
为了相信 wjyyy 有足够的实力,现任国王 yazhi 准备让 wjyyy 去打怪兽。
很显然,身无分文的 wjyyy 没法打怪兽,贴心的 yazhi 给了 wjyyy n 把宝剑。对于每个宝剑 i, wjyyy 一次攻击只会以下面两种方式进行:
- 挥舞宝剑砍向怪兽,对怪兽造成 ai 的伤害,宝剑不会受损,可以继续使用。
- 将宝剑以迅雷不及掩耳盗铃之势扔向怪兽,造成 bi 的伤害。显然,扔出去的宝剑就没法拿回来了,也没法再砍和扔了
然而为了面对接下来的难题,顺利的当上国王,wjyyy 需要节省体力,怪兽的血量为 h, 请帮他计算最少多少次攻击可以杀死怪物。
代码
#include<bits/stdc++.h>
#define P pair<int,int>
#define mp make_pair
#define fi first
#define se second
#define N 147292
using namespace std;
int n,m,T,a[N],b[N];
int calc(int u,int v)
{
int res=(u>=T || v>=T)?calc(u/10,v/10):0;
return res?res:(u%T==v%T?0:u%T>v%T?1:-1);
}
bool cmp(int u,int v){return max(0,calc(u,v));}
int main()
{
int mx=0;
cin>>n>>m;
T=abs(n-m)+2;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&a[i],&b[i]);
if(calc(mx,a[i])<0) mx=a[i];
}
sort(b+1,b+n+1,cmp);
int ans=0;
for(int i=1;i<=n && calc(b[i],mx)>0 && m>0;i++,ans++) m-=b[i];
cout<<ans+(m+mx-1)/mx;
}