邹丛懋
(邹丛懋)
1
#include<bits/stdc++.h>
#define N 100005
#define M 100005
#define int long long
using namespace std;
struct knife
{
int kan;
int fei;
}a[N];
int n,h,ans;
bool cmp(knife s1,knife s2)
{
return s1.kan<s2.kan;
}
signed main()
{
cin>>n>>h;
for(int i=1;i<=n;i++)
{
cin>>a[i].kan>>a[i].fei;
}
for(int i=1;i<n;i++)
{
h-=a[i].fei;
ans++;
}
while((h-a[n].fei)>0)
{
h-=a[n].kan;
ans++;
}
ans++;
cout<<ans;
return 0;
}
蒟蒻求条qaq
2 个赞
椰子糕
(严志刚)
6
思路不太对
应该把飞刀伤害和砍刀伤害一起排序(要区分伤害类型),所以一个武器占用数组两个空间。
可以这么存
for(int i=0;i<n;i++){
cin>>x>>y;
f[2*i].atk=x;
f[2*i].type=0;
f[2*i+1].atk=y;
f[2*i+1].type=1;
}
2 个赞
邹丛懋
(邹丛懋)
7
#include<bits/stdc++.h>
#define N 100005
#define M 100005
#define int long long
using namespace std;
struct knife
{
int sh;
int type;
}a[N];
int n,h,ans,x,y,ks;
bool cmp(knife s1,knife s2)
{
return s1.sh>s2.sh;
}
signed main()
{
cin>>n>>h;
for(int i=1;i<=n;i++)
{
cin>>x>>y;
a[i*2].sh=x;
a[i*2].type=0;
a[i*2-1].sh=y;
a[i*2-1].type=1;
ks++;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=2*n;i++)
{
if(a[i].type==1&&(ks>1||(h-a[i].sh)<=0))
{
h-=a[i].sh;
ks--;
ans++;
if(h<0)break;
}
else
{
int ti=i;
if(a[i].type==0)ti=i+1;
while(h-a[ti].sh>0)
{
h-=a[i].sh;
ans++;
}
ans++;
break;
}
}
cout<<ans;
return 0;
}
}
变成10分了
2 个赞