求助今天的比赛D题
  • 板块灌水区
  • 楼主Afoat
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/10/17 18:16
  • 上次更新2023/11/5 10:33:51
查看原帖
求助今天的比赛D题
241036
Afoat楼主2020/10/17 18:16
#include <bits/stdc++.h>
using namespace std;
int n;
long long ans;
int ruler=1;
struct SIT
{
	int _ruler;
	long long _ans;
	long long _preans;
};
struct Ins
{
	int opt;
	int eff;
	bool _ed;
	SIT sit;
}ins[200010];
long long preans;
long long deal[200001];
void renew(int x,int cur)
{
	ans=ins[x-1].sit._ans;
	preans=ins[x-1].sit._preans;
	ruler=ins[x-1].sit._ruler;
//	for(int i=x+1;i<cur;i++)
//	{
//		if(i==x)
//		{
//			continue;
//		}
//		switch(ins[i].opt)
//		{
//			case 1:
//				ruler++;
//				preans=deal[ruler];
//				break;
//			case 2:
//				ruler=1;
//				ans+=preans;
//				preans=1ll;
//				break;
//			case 3:
//				renew(ins[i].eff,i);
//				break;
//		}
//	}
	for(int i=x+1;i<cur;i++)
	{
		switch(ins[i].opt)
		{
			case 1:
				ruler++;
				preans=deal[ruler];
				break;
			case 2:
				ruler=1;
				ans+=preans;
				preans=1ll;
				break;
			case 3:
				break;
		}
		if(ins[i]._ed==1&&i!=cur-1)
		{
			ins[i].sit._ans=ans;
			ins[i].sit._preans=preans;
			ins[i].sit._ruler=ruler;
		}
	}
	return;
}
int main()
{
	preans=1ll;
	scanf("%d",&n);
	for(int i=1;i<=200000;i++)
	{
		deal[i]=i+deal[i-1];
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&ins[i].opt);
		switch(ins[i].opt)
		{
			case 1:
				break;
			case 2:
				break;
			case 3:
				scanf("%d",&ins[i].eff);
				ins[ins[i].eff-1]._ed=1;
				break;
		}
	}
	ins[0].sit._ruler=1;
	ins[0].sit._preans=1ll;
	ins[0].sit._ans=0ll;
	for(int i=1;i<=n;i++)
	{
		switch(ins[i].opt)
		{
			case 1:
				ruler++;
				preans=deal[ruler];
				printf("%lld\n",ans+preans);
				break;
			case 2:
				ruler=1;
				ans+=preans;
				preans=1ll;
				printf("%lld\n",ans+preans);
				break;
			case 3:
				renew(ins[i].eff,i);
				printf("%lld\n",ans+preans);
				break;
		}
		if(ins[i]._ed==1)
		{
			ins[i].sit._ans=ans;
			ins[i].sit._preans=preans;
			ins[i].sit._ruler=ruler;
		}
	}
	return 0;
}

测试小样例都过了,绝对不是正解

但只嫖了20分确实非常的淦

2020/10/17 18:16
加载中...