CF神秘WA求问。
  • 板块灌水区
  • 楼主ShanQing
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/14 09:04
  • 上次更新2024/4/14 09:20:27
查看原帖
CF神秘WA求问。
368204
ShanQing楼主2024/4/14 09:04

神秘。样例2本地+洛谷IDE均输出13 0,而交上去显示输出了什么
13 4
1 1
1 1
3 3
3 3
从没有遇到过。语言是C++14 (GCC 6-32)。

//writer:Oier_szc
#include <bits/stdc++.h>
//#include <windows.h>
#define ED cerr<<endl;
#define TS cerr<<"I AK IOI"<<endl;
#define cr(x) cerr<<x<<endl;
#define cr2(x,y) cerr<<x<<" "<<y<<endl;
#define cr3(x,y,z) cerr<<x<<" "<<y<<" "<<z<<endl;
#define cr4(x,y,z,w) cerr<<x<<" "<<y<<" "<<z<<" "<<w<<endl;
#define pii pair<int,int>
#define fi first
#define se second
//#define int long long
using namespace std;
const int N=20,INF=2e9,mod=1e9+7;
int n,t;
int a[N],pre[N];
vector<pii> ans;
void ins(int l,int r)
{
	ans.push_back({l,r});
}
void make(int l,int r)
{
	if(l==r) return;
	ins(r,r);
	for(int i=2;i<=r-l;++i)
	{
		make(r-i+1,r-1);
		ins(r-i+1,r);
		ins(r-i+1,r-1);
	}
	make(l,r-1);
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&a[i]);
		pre[i]=pre[i-1]+a[i];
	}
	int sum=pre[n];
	int Ans=0,l=-1,r=-1,s;
	for(int i=0;i<(1<<n);++i)
	{
		int get=0;
		for(int j=1,k=1;j<=n;)
		{
			k=j;
			while(k<=n&&(i>>(k-1))&1) ++k;
			--k;
			if(k<j) 
			{
				++j;
				continue;
			}
			get+=(k-j+1)*(k-j+1)-pre[k]+pre[j-1];
			j=k+1;
		}
		if(get>Ans) Ans=get,s=i;
	} 
	for(int j=1,k=1;j<=n;)
	{
		k=j;
		while(k<=n&&(s>>(k-1))&1) ++k;
		--k;
		if(k<j) 
		{
			++j;
			continue;
		}
		for(int x=j;x<=k;++x)
		{
			if(a[x]) ins(x,x);
		}
		make(j,k);
		ins(j,k);
		j=k+1;
	}
	sum+=Ans;
	printf("%d %d\n",sum,ans.size());
	for(int i=0;i<ans.size();++i) printf("%d %d\n",ans[i].fi,ans[i].se);
	return 0;
}
/*
18
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
*/
2024/4/14 09:04
加载中...