社区讨论

考场上那个电脑无端就退出程序,搞得我最后0分,回来改了一下就AC了

P7912[CSP-J 2021] 小熊的果篮参与者 4已保存回复 8

讨论操作

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

当前回复
8 条
当前快照
1 份
快照标识符
@lobhly8d
此快照首次捕获于
2023/10/29 21:08
2 年前
此快照最后确认于
2023/11/04 02:24
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int r=200010;
int n,m,t,hs,daa,x[r],xyg[r],st[r],gs[r],da[r];
map<int,map<int,int> >b;
int find(int hm)
{
	if (gs[xyg[hm]]>0) return xyg[hm];
	return xyg[hm]=find(xyg[hm]);
}
int main ()
{
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		cin>>x[i];x[i]++;
		if (t!=x[i]||i==1)
		{
			t=x[i];hs++;
			xyg[hs]=hs+1;
		}
		b[hs][++gs[hs]]=i;
	}
	gs[hs+1]=r;
	for (int i=1;i<=hs;i++) st[i]=1;
	while (0==0)
	{
		daa=0;t=0;
		for (int i=1;i<=hs;i=find(i))
		if (gs[i]>0&&(x[b[i][st[i]]]!=t||daa==0))
		{
			daa++;
			da[daa]=b[i][st[i]];
			b[i][st[i]]=0;
			st[i]++;
			gs[i]--;
			t=x[da[daa]];
		}
		if (daa==0) break;
		for (int i=1;i<=daa;i++) cout<<da[i]<<" ";
		cout<<endl;	
	}
	return 0;
}

回复

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

正在加载回复...