CF549GHappy Line

Posted Syara

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF549GHappy Line相关的知识,希望对你有一定的参考价值。

首先你直接模拟复杂度上天,不能通过此题。

由于有解时最后单调不降,那么我们考虑排序。

排什么?找不变量。

假设当前 \\(a_i,a_i+1\\) 需要进行操作。

那么结果变成 \\(a_i+1+1,a_i-1\\)

\\(a_i+1\\)\\(pos_1=i+1\\),值 \\(val_1\\)\\(a_i+1\\) ,更改后 \\(pos_2=i\\)\\(val_2\\)\\(a_i+1+1\\)

不难发现 \\(val_1+pos_1=val_2+pos_2\\)

不难推出,对于任意 \\(a_i\\)\\(val+pos\\) 是定值。

我们将 \\(a_i+i\\) 排序得到序列 \\(b\\),输出 \\(b_i-i\\)

不难发现无解情况是有 \\(b_i=b_i+1\\mid 1\\le i<n\\)

#include <stdio.h>
#include <algorithm>
int n,i;
int a[200005];
int main()

	scanf("%d",&n);
	for(i=1;i<=n;++i)
	
		scanf("%d",a+i);
		a[i]+=i;
	
	std::sort(a+1,a+n+1);
	for(i=1;i<n;++i)
	
		if(a[i]==a[i+1])
		
			puts(":(");
			return 0;
		
	
	for(i=1;i<=n;++i)
	
		printf("%d ",a[i]-=i);
	
	return 0;


以上是关于CF549GHappy Line的主要内容,如果未能解决你的问题,请参考以下文章

CF549E Sasha Circle

Codeforces 549G Happy Line[问题转换 sort]

cf549B Looksery Party 贪心

Codeforces Round #549 (Div. 1)

CF431B Shower Line

[CF650D]Zip-line