Educational Codeforces Round 43 (Rated for Div. 2) D. Degree Set(xjbg?)

题目链接:http://codeforces.com/contest/976/problem/D


看题解,学思路,智障儿童根本不会做。。。。


代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define pb push_back
#define mp make_pair
using namespace std;
const int MAXN=305;
typedef pair<int,int> pii;
vector<pii> ans;
void dfs(int now,vector<int> d)
{
	if(d.empty())
		return ;
	for(int i=0;i<d[0];i++)
	{
		for(int j=now+i+1;j<=now+d.back();j++)
		{
			ans.pb({now+i+1,j+1});
		}
	}
	for(int i=1;i<d.size();i++)
		d[i]-=d[0];
	int nxt=now+d[0];
	d.erase(d.begin());
	if(!d.empty())
		d.pop_back();
	dfs(nxt,d);
}
vector<int> d;
int main()
{
	//freopen("in.txt","r",stdin);
	//freopen("out.txt","w",stdout);
	int n;
	scanf("%d",&n);
	d.resize(n);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&d[i]);
	}
	dfs(0,d);
	printf("%d\n",ans.size());
	for(auto i:ans)
	{
		printf("%d %d\n",i.xx,i.yy);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/sinat_32872703/article/details/80275271