首页 > 其他分享 >【CF549G】Happy Line

【CF549G】Happy Line

时间:2023-02-05 09:45:20浏览次数:39  
标签:CF549G val int pos Line include Happy

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

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

排什么?找不变量。

假设当前 \(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;
}

标签:CF549G,val,int,pos,Line,include,Happy
From: https://www.cnblogs.com/Syara/p/17092877.html

相关文章

  • 【UVA1232】SKYLINE
    线段树简单题。简化题意依次给出\(n\)个区间\([l_i,r_i]\),这个区间的值\(h_i\),求出这个区间内小于\(h_i\)的位置个数累计求和,然后把这些位置覆盖为\(h_i\)。解题......
  • display:inline-block产生元素间空隙原理和解决方法
    写轮播图时偶遇一个排版问题,用inline-block会产生无法通过margin=0消除的空隙原理元素被当成行内元素排版的时候,元素之间的空白符(空格、回车换行等)都会被浏览器处......
  • C++ atomic的Cacheline及Memory fence问题
    我们都知道多核编程常用锁避免多个线程在修改同一个数据时产生racecondition。当锁成为性能瓶颈时,我们又总想试着绕开它,而不可避免地接触了原子指令。但在实践中,用原子指......
  • Andlua+实现WakeUpOnline远程开机
    一、最终效果远程开机app下载:下载链接:https://wwp.lanzoup.com/iDR330ml4l2b提取码:dxcg注意:使用前请按照2.1的步骤设置电脑“mac地址:填写自己的mac地址主机地址:......
  • Android RecyclerView实现ViewPager效果,用LinearSnapHelper
    文章目录​​LinearSnapHelper效果​​LinearSnapHelper效果SnapHelper是RecyclerView功能的一种拓展,使RecyclerView滑动行为类似ViewPager,无论怎么滑动最终停留在某页正中......
  • Headline
     ......
  • ifc4x3 附录E示例-LinearPlacement_2
    ifc4x3 附录E示例-LinearPlacement_2示例概述意图此场景演示了IfcLinearPlacement与IfcAxi2PlacementLinear和IfcPointByDistanceExpression的组合使用。 先决条件......
  • UVA 12657 Boxes in a Line (双向链表)
    题意:给定N个盒子,分别标号为1~N;有下面4种操作:“1 X Y” 表示将X移到Y的左边;“2 X Y” 表示将Y移到Y的右边;“3 X Y” 表示交换X与Y的位置;“4”  表示将1~N所有的......
  • 2019年icpc沈阳网络赛 Guanguan's Happy water
    题目链接:​​点击这里​​题目大意:已知一个数列f(n):f[x]=a[x] (1<=x<=k)f[x]=f[x-1]*p[1]+f[x-2]*p[2]………+f[x-k]*p[k] (x>k)给你所有的a[i],再给你接下来k个f[i],求......
  • inline内联函数详解
    这几天看题解一直遇到inline所以学习总结一下1、C++inline内联函数(1)引入inline关键字的原因:在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入......