社区讨论

CCF 神机 这写法有80pts

P14635[NOIP2025] 糖果店参与者 18已保存回复 20

讨论操作

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

当前回复
19 条
当前快照
1 份
快照标识符
@miswiep4
此快照首次捕获于
2025/12/05 21:29
2 个月前
此快照最后确认于
2025/12/09 02:39
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
long long n,m,ans;
struct node{
	long long x,y,sum;
}a[N];
bool cmp(node a,node b){
	if(a.sum!=b.sum)return a.sum<b.sum;
	else return a.x<a.y;
}
bool cmp2(node a,node b){
	if(a.x!=b.x)return a.x<b.x;
	else return a.y<b.y;
}
int main(){
//	freopen("candy.in","r",stdin);
//	freopen("candy.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y;
		a[i].sum=a[i].x+a[i].y;
	}	
	sort(a+1,a+n+1,cmp);
	long long v=0;
	for(int i=1;i<=n;i++){
		if(v+a[1].sum<=m){
			v+=a[1].sum;
			ans+=2;			
		}	
	}
	//cout<<a[1].sum<<"\n";
	if(v==m){
	//	cout<<ans;
	//	return 0;
	}
	long long cnt1=0,cnt2=0,cnt3=0,cnt4=0,cnt5=0,cnt6=0,cnt7=0,cnt8=0,cnt9=0,cnt10=0,cnt11=0,cnt12=0,cnt13=0,cnt14=0;
	long long v2=a[1].sum*(ans/2-1); //??????? ????С?? 
	long long v3=a[1].sum*(ans/2-1-1);
	long long v4=a[1].sum*(ans/2-1-1-1);
	long long v5=a[1].sum*(ans/2-1-1-1-1);
	long long v6=a[1].sum*(ans/2-1-1-1-1-1);
	long long v7=a[1].sum*(ans/2-1-1-1-1-1-1);
	long long v8=a[1].sum*(ans/2-1-1-1-1-1-1-1);
	long long v9=a[1].sum*(ans/2-1-1-1-1-1-1-1-1);
   long long v10=a[1].sum*(ans/2-1-1-1-1-1-1-1-1-1);
   long long v11=a[1].sum*(ans/2-1-1-1-1-1-1-1-1-1-1);
   long long v12=a[1].sum*(ans/2-1-1-1-1-1-1-1-1-1-1-1);
   long long v13=a[1].sum*(ans/2-1-1-1-1-1-1-1-1-1-1-1-1);
   long long v14=a[1].sum*(ans/2-1-1-1-1-1-1-1-1-1-1-1-1-1);
	long long ans2=ans-2;
	long long ans3=ans-2-2;
	long long ans4=ans-2-2-2;
	long long ans5=ans-2-2-2-2;
	long long ans6=ans-2-2-2-2-2;
	long long ans7=ans-2-2-2-2-2-2;
	long long ans8=ans-2-2-2-2-2-2-2;
	long long ans9=ans-2-2-2-2-2-2-2-2;
   long long ans10=ans-2-2-2-2-2-2-2-2-2;
   long long ans11=ans-2-2-2-2-2-2-2-2-2-2;
   long long ans12=ans-2-2-2-2-2-2-2-2-2-2-2;
   long long ans13=ans-2-2-2-2-2-2-2-2-2-2-2-2;
   long long ans14=ans-2-2-2-2-2-2-2-2-2-2-2-2-2;
	sort(a+1,a+n+1,cmp2);
//	cout<<'\n';
	for(int i=1;i<=n;i++){
		if(v+a[i].x<=m){
			v+=a[i].x;
			cnt1++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v2+a[i].x<=m){
			v2+=a[i].x;
			cnt2++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v3+a[i].x<=m){
			v3+=a[i].x;
			cnt3++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v4+a[i].x<=m){
			v4+=a[i].x;
			cnt4++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v5+a[i].x<=m){
			v5+=a[i].x;
			cnt5++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v6+a[i].x<=m){
			v6+=a[i].x;
			cnt6++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v7+a[i].x<=m){
			v7+=a[i].x;
			cnt7++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v8+a[i].x<=m){
			v8+=a[i].x;
			cnt8++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v9+a[i].x<=m){
			v9+=a[i].x;
			cnt9++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v10+a[i].x<=m){
			v10+=a[i].x;
			cnt10++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v11+a[i].x<=m){
			v11+=a[i].x;
			cnt11++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v12+a[i].x<=m){
			v12+=a[i].x;
			cnt12++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v13+a[i].x<=m){
			v13+=a[i].x;
			cnt13++;
		}
	}
	for(int i=1;i<=n;i++){
		if(v14+a[i].x<=m){
			v14+=a[i].x;
			cnt14++;
		}
	}
//	cout<<cnt3<<' ';
//	cout<<ans+cnt1<<" "<<ans2+cnt2<<" "<<ans3+cnt3<<"\n";
	cout<<max(max(max(max(max(max(max(max(max(max(max(max(max(ans+cnt1,ans2+cnt2),ans3+cnt3),ans4+cnt4),cnt5+ans5),cnt6+ans6),ans7+cnt7),ans8+cnt8),cnt9+ans9),cnt10+ans10),cnt11+ans11),cnt12+ans12),cnt13+ans13),cnt14+ans14);
	return 0;
} 

回复

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

正在加载回复...