CSP-J 打怪兽

题目描述

为了相信 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;
}
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值