社区讨论

求代码思路对不对

P14635[NOIP2025] 糖果店参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mik6tzl2
此快照首次捕获于
2025/11/29 19:08
3 个月前
此快照最后确认于
2025/11/30 20:10
3 个月前
查看原帖
民间100(赛后回忆)
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;
		m -= a[i].x;
		ans++;
	}
	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;
}

回复

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

正在加载回复...