社区讨论

NOIP T1求助

学术版参与者 3已保存回复 19

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@mil78cs9
此快照首次捕获于
2025/11/30 12:07
3 个月前
此快照最后确认于
2025/12/05 21:44
2 个月前
查看原帖
candy6 输出82 为什么,但民间数据AC
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5;
int n,m,sum = LONG_LONG_MAX,minx,ans,b[N + 5];
struct node{
	int x,y;
	bool operator < (const node &a) const{
		return a.x > x;
	}
};
node a[N + 5];
signed main(){
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		cin >> a[i].x >> a[i].y;
	}
	sort(a + 1,a + 1 + n);
	for(int i = 1;i <= n;i++){
		if(sum > a[i].x + a[i].y){
			sum = a[i].x + a[i].y;
			minx = a[i].x;
		}
	}
	for(int i = 1;i <= n;i++){
		if(a[i].x > sum / 2)
			break;
		if(m >= a[i].x){
			m -= a[i].x;
			ans++;
		} else
			break;
	}
	int k = m / sum;
	m -= k * sum;
	ans += 2 * k;
	if(m > 0){
		for(int i = 1;i <= n;i++){
			if(a[i].x <= sum / 2)
				b[i] = a[i].y;
			else
				b[i] = a[i].x;
		}
		sort(b + 1,b + 1 + n);
		for(int i = 1;i <= n;i++){
			if(m >= b[i])
				m -= b[i],ans++;
			else
				break;
		}
	}
	cout << ans << endl;
}

回复

19 条回复,欢迎继续交流。

正在加载回复...