题解:AT_jag2017summer_day1_k パンプキン
zhangmuning1016 · · 题解
题意
给定整数
题目思路
这是贪心,要让得到的牌数更多,就要让扣分越少越好。
1.因为是贪心,把
2.遍历
题目代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100001], x[100001], y[100001];//数组 a 用来储存每张牌要扣的分数。
signed main()
{
int n, ans=0, sum=0;//ans 为累加的分数,sum 为能拿走的牌数
cin >> n;
for(int i=1; i <= n; i++){
cin >> x[i] >> y[i];
ans += y[i];//累加可以得到的分数
a[i] += x[i] + y[i];//储存每张牌要扣的分数
}
sort(a+1, a+n+1);
for(int i=1; i <= n; i++){
if(ans-a[i] >= 0){
ans -= a[i];//减去
sum += 1;//这张牌可行,sum 加 1
}
else{
break;//直接退出,因为后面扣分更多,ans一定也为负数
}
}
cout << sum;
return 0;
}