CF1141C Polycarp Restores Permutation 题解
Content
给定一个长度为 \(n-1\) 的序列 \(q\),问你是否能找到一个 \(1\sim n\) 的排列 \(p\),使得 \(\forall i\in[1,n)\),\(q_i=p_{i+1}-p_i\)。
数据范围:\(2\leqslant n\leqslant 2\times 10^5\),\(-n<q_i<n\)。
Solution
首先我们不难知道,设 \(S_i=\sum\limits_{j=1}^i q_j\),那我们不难知道,\(S_i\) 越小,第 \(i+1\) 个数就越小。因此我们考虑前缀和处理下,找到能使得 \(S_i\) 最小的 \(i\),然后不难发现 \(p_{i+1}=1\),再从 \(p_{i+1}\) 开始暴力往前往后直接推出原来的数列,最后再判断 \(1\sim n\) 是否在这个数列中都恰好出现过一次即可。
Code
int n, cha[200007], a[200007], sum, ans, id1 = 1;
map<int, int> vis;
int main() {
n = Rint;
F(i, 1, n - 1) {
cha[i] = Rint, sum += cha[i];
if(sum < ans) ans = sum, id1 = i + 1;
}
a[id1] = 1;
R(i, id1 - 1, 1) a[i] = a[i + 1] - cha[i];
F(i, id1 + 1, n) a[i] = a[i - 1] + cha[i - 1];
F(i, 1, n) {
if(vis[a[i]]) return printf("-1"), 0;
vis[a[i]] = 1;
}
F(i, 1, n) if(!vis[i]) return printf("-1"), 0;
F(i, 1, n) write(a[i]), putchar(i == n ? '\n' : ' ');
return 0;
}
CF1141C Polycarp Restores Permutation 题解的更多相关文章
- $CF1141C Polycarp Restores Permutation$
\(problem\) 这题的大致意思就是已知数值差值 求1-n的排列 如果能构成排列 则输出这个排列.如果不能则输出-1 排列的值都是 大于1 而小于n的 而且没有相同的数字. 这题最关键的是 怎么 ...
- CF 1141C Polycarp Restores Permutation
Description An array of integers p1,p2,…,pnp1,p2,…,pn is called a permutation if it contains each nu ...
- Codeforces Round #547 (Div. 3) C. Polycarp Restores Permutation (数学)
题意:有一长度为\(n\)的序列\(p\),现在给你\(q_i=p_{i+1}-q_i \ (1\le i\le n)\),问你是否能还原出原序列,如果能救输出原序列,否则输出\(-1\). 题解:由 ...
- C. Polycarp Restores Permutation
链接 [https://codeforces.com/contest/1141/problem/C] 题意 qi=pi+1−pi.给你qi让你恢复pi 每个pi都不一样 分析 就是数学吧 a1 +(a ...
- Polycarp Restores Permutation
http://codeforces.com/contest/1141/problem/C一开始没想法暴力的,next_permutation(),TLE 后来看了这篇https://blog.csdn ...
- 【CF1443E】Long Permutation 题解(排列生成模板)
原题链接 题意简介 给定一个长度为 n 的排列 {1,2,3,...,n} .现有两种操作: 对某个区间 [l,r] 求和 将排列往后推 x 次 (按字典序) 其中 \(n,q \leq 2\time ...
- T - Permutation 题解(思维+dp)
题目链接 题目大意 给你一个数字n和长为n-1个字符串 字符串包含'<','>' 若s[i]='<' 则代表a[i]<a[i+1] 若s[i]='>' 则代表a[i]&g ...
- CF1006B Polycarp's Practice 题解
Content 给定一个长度为 \(n\) 的数列,试将其分成 \(k\) 段,使得每一段中的最大值的和最大. 数据范围:\(1\leqslant k,n,a_i\leqslant 2000\). S ...
- CF1454A Special Permutation 题解
Content 给定一个整数 \(n\),请构造出一个长度为 \(n\) 的排列 \(\{a_i\}_{i=1}^n\),使得对于每个 \(a_i\),都有 \(a_i\neq i\). 我们称一个长 ...
随机推荐
- 没有人比我更会使用集合!对, 是dart中的集合
目录 简介 List的使用 Set的使用 Map的使用 常见的集合方法 总结 简介 dart中的集合有三个,分别是list,set和map.dart在dart:core包中提供了对于这三种集合非常有用 ...
- CF1354F Summoning Minions
考虑我们一定是先放我们选定了\(m\)个数,一定是先放了\(m-1\)个数上去,然后让放上一个不打算选的然后拿下来,白嫖\(b * (m-1)\)的贡献,最后放上一个打算放的. 考虑我们一定是按\(b ...
- AtCoder Beginner Contest 204
身败名裂了,\(AK\)场转掉分场. 都是水题不说了. 这篇文鸽了.
- P7327 Dream and Discs
题目传送门. 题意简述:有 \(n\) 个数 \(a_1,a_2,\cdots a_n\),等概率选取区间 \(P_1,S_1\subseteq [1,n]\),\(P_2\subseteq P_1\ ...
- iptables_超解
查询: -t选项,指定要操作的表,使用-L选项,查看-t选项对应的表的规则,-L选项的意思是,列出规则,所以,上述命令的含义为列出filter表的所有规则 显示出了3条链INPUT链.FORWARD链 ...
- 16-4SUM
4.30更新,已经AC 18. 4Sum My Submissions QuestionEditorial Solution Total Accepted: 71102 Total Submissio ...
- 深度探讨 PHP 之性能
1.缘起 关于PHP,很多人的直观感觉是PHP是一种灵活的脚本语言,库类丰富,使用简单,安全,非常适合WEB开发,但性能低下.PHP的性能是否真的就 如同大家的感觉一样的差呢?本文就是围绕这么一个话题 ...
- IO流的字节输入输出流(InputStream,OutputStream)
字节输出流与文件字节输出流 文件存储原理和记事本打开文件原理 OutputStream及FileOutputStream import java.io.FileOutputStream; import ...
- 学习java的第七天
一.今日收获 1.看完全学习手册上java关键字与标识符两节 2.了解了java的关键字与标识符 二.今日难题 1.基本都理解 三.明日目标 1.继续看完全学习手册上的内容 2.加油!
- 大数据学习day25------spark08-----1. 读取数据库的形式创建DataFrame 2. Parquet格式的数据源 3. Orc格式的数据源 4.spark_sql整合hive 5.在IDEA中编写spark程序(用来操作hive) 6. SQL风格和DSL风格以及RDD的形式计算连续登陆三天的用户
1. 读取数据库的形式创建DataFrame DataFrameFromJDBC object DataFrameFromJDBC { def main(args: Array[String]): U ...