CCPC-Wannafly Winter Camp Day3 Div1 - 排列
题目链接:https://zhixincode.com/contest/14/problem/A?problem_id=203
time limit per test: 1 second
memory limit per test: 256 megabytes
input: standard input
output: standard output


样例输入 1
5
5 3 4 1 2
样例输出 1
3 4 2 5 1
题解:
首先例如 $p = [3,4,2,1]$,则 $A(p) = [3,3,2,1]$;然后相应的 $q = [4,3,1,2]$,长度为 $4$ 的前缀其中最小值为 $1$($A(p)_{4} = 1$),因此 $4$ 排在 $q$ 的第一位。
不难发现,一般来讲,长度越长的前缀,相应的在 $q$ 中应该排在越前面,但是如果出现长度长的前缀出现在长度短的前缀的后面呢?只可能是因为它们对应的 $A(p)_{?}$ 值是相等的,长度长的才会排后面。而且我们进一步可以发现,在 $q$ 中,若某一段是递增的,那么这一段是必然是连续的,这个靠反证一下就很容易证明。
因此我们可以将 $q$ 划分成若干段,每一段都是连续递增的,而前一段中任意数必然大于后一段中的任意数。
例如上面举的例子 $q = [4,3,1,2]$ 就可以分成 $[[4],[3],[1,2]]$,然后我们观察一下这个序列分成了三段,因此对应的 $A(p)$ 就只有三个数:$\{1,2,3\}$,$A(p)$ 的第 $4$ 位是最小的,即等于 $1$;然后第 $3 $ 位是次小的,即$A(p)_{3} = 2$;然后排在最后的一段 $A(p)_{1} = A(p)_{2} = 3$ 是最大的。再然后,我们可以知道 $A(p)$ 是一个只会不严格单调递减的序列,相应地可以很容易推出字典序最小的 $p$。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+;
int n,q[maxn],p[maxn];
int main()
{
scanf("%d",&n);
int now=;
for(int i=;i<=n;i++)
{
scanf("%d",&q[i]);
if(i== || q[i-]>q[i]) p[q[i]]=++now;
}
for(int i=;i<=n;i++) if(!p[i]) p[i]=++now;
for(int i=;i<=n;i++) printf("%d ",p[i]);
}
CCPC-Wannafly Winter Camp Day3 Div1 - 排列的更多相关文章
- 2020 CCPC Wannafly Winter Camp Day1 C. 染色图
2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...
- 【CCPC-Wannafly Winter Camp Day3 (Div1) G】排列(水题)
点此看题面 大致题意:已知 \(p\)为\(n\)的一个排列,定义\(A(p)_i=min_{j=1}^ip_j\),若用\(q_i\)表示\(p\)第\(i\)小的前缀的长度(以值为第一关键字,下标 ...
- CCPC Wannafly Winter Camp Div2 部分题解
Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果, ...
- Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门 Portal 原题目描述在最下面. 简单的 ...
- CCPC-Wannafly Winter Camp Day3 Div1 - 精简改良 - [生成树][状压DP]
题目链接:https://zhixincode.com/contest/14/problem/D?problem_id=206 样例输入 1 5 5 1 2 1 1 3 1 2 4 1 2 5 1 ...
- CCPC-Wannafly Winter Camp Day3 Div1 - 石头剪刀布 - [带权并查集]
题目链接:https://zhixincode.com/contest/14/problem/I?problem_id=211 样例输入 1 3 5 2 1 1 2 1 2 1 1 2 3 2 1 ...
- 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)
点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...
- 【CCPC-Wannafly Winter Camp Day3 (Div1) D】精简改良(状压DP)
点此看题面 大致题意: 给你一张图,定义\(dis(i,j)\)为\(i\)与\(j\)的最短距离,现要求删去若干条边,使得图仍然联通,且\(\sum_{i=1}^n\sum_{j=i+1}^ndis ...
- 【CCPC-Wannafly Winter Camp Day3 (Div1) I】石头剪刀布(按秩合并并查集)
点此看题面 大致题意: 有\(n\)个人,第\(i\)个人坐在编号为\(i\)的座位上,每个人等概率有石头.剪刀.布中的一张卡片.有两种操作:第一种是第\(y\)个人挑战第\(x\)个人,如果胜利则\ ...
随机推荐
- JAVA中通过时间格式来生成唯一的文件名
有时候我们需要截图,在要截图时,有人用到了时间格式,但是时间格式中的:在文件名称中是不被允许的字符,所以就会报错,如何生成唯一的时间文件名: package com.demo; import java ...
- 基于ubuntu搭建 WordPress 个人博客
系统要求:Ubuntu 16.04.1 LTS 64 位操作系统 准备 LAMP 环境:(LAMP 是 Linux.Apache.MySQL 和 PHP 的缩写,是 Wordpress 系统依赖的基础 ...
- mysql 编译安装 window篇
传送门 # mysql下载地址 https://www.mysql.com/downloads/ # 找到MySQL Community Edition (GPL) https://dev.mysql ...
- Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结
Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结 常用200个模块 2017/04/12 22:01 <DIR> acc 2017/04 ...
- mac无法访问samba共享 提示输入用户名密码
这时候需要输入mac笔记本的用户名和密码 也可以在samba服务器上增加用用户: # smbpasswd -a user_nameNew SMB password:Retype new SMB pas ...
- 【Java】经典示例代码
成鹏致远 | lcw.cnblogs.com | 2014-02-08 单例设计模式 class Singleton{ private static Singleton instance = new ...
- LeetCode: Largest Number 解题报告 以及Comparator, CompareTo 应用
Largest Number Given a list of non negative integers, arrange them such that they form the largest n ...
- c++对c的加强
1.register关键字的加强 register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度,这只是一种请求,编译器可以拒绝这种申请. ( ...
- Oracle同一个用户下启动多个数据库实例
oracle@yingxiang-testServer1 oradata]$ export ORACLE_SID=APPDB[oracle@yingxiang-testServer1 oradata ...
- 读“40 分,60 分,90 分”
原文链接: http://mp.weixin.qq.com/s?__biz=MzA5MjYyNzY1OQ==&mid=2650901947&idx=1&sn=89af64d3b ...