社区讨论

luogu上坠机了55分 官方数据大概会多少

P14635[NOIP2025] 糖果店参与者 3已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mijziahk
此快照首次捕获于
2025/11/29 15:43
3 个月前
此快照最后确认于
2025/11/30 11:55
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int N = 1e5 + 10;
ll n, m;
struct node {
	ll a, b;
} a[N];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	cin >> n >> m; ll mn = LLONG_MAX;
	for(int i=1; i<=n; i++) {
		cin >> a[i].a >> a[i].b; mn = min(mn, a[i].a);
	}
	if(m < mn) {
		cout << "0"; return 0;
	}
	sort(a+1, a+n+1, [](node a,node b){return a.a+a.b<b.a+b.b;});
	ll tmp = a[1].a + a[1].b, res = a[1].a, ans = 0; a[1].a = 1e10;
	sort(a+1, a+n+1, [](node a,node b){return a.a<b.a;});


	ll now = 0, las = 0;
	for(int i=1; i<n; i++) {
		if(a[i].a*2 <= tmp) now += a[i].a, ans++, las = i;
		else break;
	}
	cout << ans << " ";
	ll ans2 = ans - 1, now2 = now - a[las].a;
	if(m - now >= tmp) ans += 2*(m-now)/tmp, now += (m-now)/tmp*tmp;
	if(m - now >= res) ans++;
	if(m - now2 >= tmp) ans2 += 2*(m-now2)/tmp, now2 += (m-now2)/tmp*tmp;
	if(m - now2 >= res) ans2++;
	
	cout << max(ans, ans2);

	return 0;
}

回复

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

正在加载回复...