社区讨论

0分求调,写了思路,样例输出是916212631

P1094[NOIP 2007 普及组] 纪念品分组参与者 3已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@m2d0jbax
此快照首次捕获于
2024/10/17 16:02
去年
此快照最后确认于
2025/11/04 17:00
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int w,n,cnt;
int p[30010];
int main()
{
	
	cin>>w>>n;
	cnt=0;
	for(int i=1;i<=n;i++)
	{
		cin>>p[i];
		
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=n;j>i;j--)
		{
			//1.全满足
          		//2.i取了
          		//3.j取了
          		//4.i,j取了
          		//5.超范围w了
			if(p[i]+p[j]<=w&&p[i]&&p[j])
			{
				cnt++;
				p[i]=0;
				p[j]=0;
			}
			else if(p[i]==0&&p[j]!=0)
			{
				i++;
			
			}
			else if(p[i]!=0&&p[j]==0)
			{
				j--;
			}
			else if(p[i]==0&&p[j]==0)	
			{
			
				i++;
				j--;
			
			}
			else
			{
				j--;
			}
		}
		for(int i=1;i<=n;i++)
		{
			if(p[i])
			{
				cnt++;
				//统计还没有变0(即还没有被分组的量),使它单独成组
			}
		}
		cout<<cnt;
	}
	return 0;
}

回复

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

正在加载回复...