首页 > 其他分享 >题解 CF1759G【Restore the Permutation】

题解 CF1759G【Restore the Permutation】

时间:2022-11-19 17:33:32浏览次数:55  
标签:Restore CF1759G int 题解 pos 200010 Permutation 2i

problem

给定长为 \(n/2\) 的数组 \(b\),试求出字典序最小的排列 \(p\) 使得 \(b_i=\max_{p_{2i-1},p_{2i}}\),或者报告无解。\(n\leq 10^5\)。

solution

考虑显然的结论:\(p_{2i}=b_i\)。这时 \(p_{2i-1}<p_{2i}\) 很优。

这时相当于是剩下一些数,要去匹配这些 \(p_{2i}\)。

法一(错误)

考虑构造一组解:从小到大扫,然后匹配遇到的第一个。

然后考虑从值域出发,从小到大将一个更小的值换到前面去。可惜是 \(O(n^2)\) 的。

法二

考虑倒着扫。

因为字典序最小,也等价于大的数字尽量在后面。

维护一个堆,存放可以放的位置,每次拿最大的放。

code

点击查看代码
typedef long long LL;
int n,a[200010],pos[200010];
int mian(){
	for(int i=1;i<=n;i++) pos[i]=0;
	for(int i=2;i<=n;i+=2) scanf("%d",&a[i]),pos[a[i]]=i-1;
	priority_queue<int> q;
	for(int i=n;i>=1;i--){
		if(pos[i]) q.push(pos[i]);
		else{
			if(q.empty()) return puts("-1"),0;
			a[q.top()]=i,q.pop();
		}
	}
	for(int i=1;i<=n;i++) printf("%d%c",a[i]," \n"[i==n]);
	return 0;
}

标签:Restore,CF1759G,int,题解,pos,200010,Permutation,2i
From: https://www.cnblogs.com/caijianhong/p/solution-CF1759G.html

相关文章

  • CF755G PolandBall and Many Other Balls 题解
    老师潦草的笔记(题目大意给你$n$个球,让你选$m(1\lem\lek)$组球。每组只有$1$个球或$2$个相邻球。令选出$m$组球的方案数为$f_m$,现在让你输出$f_i(1\l......
  • arc136D Without Carry 题解
    这阵子没一道题能自己想出来,开道黄题以下找找信心qwq又一道比C简单的D。题意:给出\(n\)个\(6\)位及以下数字,问有几对数字的和在十进制下无进位。\(n\leq10^6\)......
  • 题解 Codeforces Round #834 (Div. 3) ABCDEF
    A.Yes-Yes?problem判断给定的字符串是否为无穷个YesYesYes拼接组成的字符串的连续子串。\(|S|\leq50\)。solution暴力。具体地,判断\(S,Ye+S,Y+S\)是否有一个是......
  • python(牛客)试题解析1 - 简单
    导航:一、NC103反转字符串二、NC141判断是否为回文字符串三、NC151最大公约数四、NC65斐波那契数列五、字符按排序后查看第k个最小的字母六、数组内取出下标相同......
  • 移动端点击穿透问题解决
    js解决方案1、只用touch把页面内所有click全部换成touch事件(touchstart、touchend、tap),需要特别注意a标签,a标签的href也是click,需要去掉换成js控制的跳转,或者直接改成......
  • Codeforces Round #829 A+B+C+D 题解
    A.TheUltimateSquare题意询问\(T\)次,给定\(n\)块木板,第\(i\)块为\(1\times\lceil\fraci2\rceil\)大小,求能拼出的最大正方形边长数据范围:\(1\len\le10^9,1......
  • 【题解】做题记录(2022.11)
    11.1CF449DJzzhuandNumbers题目分析:考虑直接算的话就相当于限制每一位必须有一个\(0\),显然不如反着来,也就是某一位必须全为\(1\),也就是我们计算与之后不为\(0\)......
  • DSOJ 题解 #202103. 【21网络赛C】来帮我们排排名
    【21网络赛C】来帮我们排排名-题目-DSOJ#include<stdio.h>#include<stdlib.h>#include<string.h>structplayer_data{charid[11];intproblem_tim......
  • luogu P7201 [COCI2019-2020#1] Džumbus题解
    须知本题解骨架是本人由官方题解翻译得来的,并补充了一些不详细的地方,修改了一些错误,自己写了每一个子任务的代码(因为官方题解代码和文本不太匹配)。基本信息任务名:Džumb......
  • P5999 [CEOI2016] kangaroo 蓝 题解
    前言有些题目照常DP不是很好做,感觉像是区间DP,但是怎么设状态都不好转移,那么可以考虑一种维护块儿的DP,就是这道题要用到的知识点。背景分析如果每次跳跃的点的编号形......