\(problem\)

这题的大致意思就是已知数值差值 求1-n的排列

如果能构成排列 则输出这个排列。如果不能则输出-1
排列的值都是 大于1 而小于n的 而且没有相同的数字。

这题最关键的是 怎么输出这个序列 有的是存在负数的。

那么 考虑一下排列都是从1到n的对不对。

取序列的最小值 然后用\(1 - Min\)即是整个序列应该加上的数值。

首先考虑判重。 用数组 或者用\(Map\) \(or\) \(Set\) 。

都是不错的方法。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL ;
inline LL In() { LL res(0),f(1); register char c ;
while(isspace(c=getchar())) ; c == '-'? f = -1 , c = getchar() : f = 1 ;
while(res = (res << 1) + (res << 3) + (c & 15) , isdigit(c=getchar())) ; return res * f ;
}
int n ;
int p[200000+5] ;
int res[200000+5] ;
set<int> s;//判重
signed main(){
n = In() ;
for(register int i=1;i<=n-1;i++) p[i] = In() ;
res[1] = 0 ;
for(register int i=2;i<=n;i++) res[i] = res[i-1] + p[i-1] ;//计算前缀和
int Min = 0x7f7f7f7f;
for(register int i=1;i<=n;i++){
Min = min(res[i],Min);
if(s.count(res[i])==0) s.insert(res[i]) ;//插入数值
else {
cout << -1 << endl ;//如果存在重复的数值则不可能构成排列。
return 0 ;
}
}
//cout << Min << endl ;
int c = 1 - Min ;
bool f = false;
for(register int i=1;i<=n;i++) {
if(res[i] + c > n) {//如果大于n则不能构成 也是输出-1
cout << -1 << endl ;
return 0 ;
}
} for(register int i=1;i<=n;i++) {
cout << res[i] + c << ' ' ;
}
return 0 ;
}

随机推荐

  1. linux命令 info

    info命令是Linux下info格式的帮助指令. 就内容来说,info页面比man page编写得要更好.更容易理解,也更友好,但man page使用起来确实要更容易得多.一个man page只有一 ...

  2. Swoft 新手向教程 - 通过 Docker 搭建一个开发环境

    本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 PHPer Swoft首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈组件化框架,内置协程网络服务器及常用的 ...

  3. Linux文件/目录,权限相关

    查看权限 命令 # ls -l filename 结果 -rw-r--r-- l root root 27 11-10 14:50 filename 解析: -rw-r--r-- --共10位 第1位 ...

  4. 3.2.2.5 BRE运算符优先级

        在数学表达式里,正则表达式的运算符具有某种已定义的优先级,指的是某个运算符(优先级较高)将比其他运算符先被处理.       BRE运算符优先级,由高至低   运算符 表示含义 [..] [= ...

  5. 3.3.5 boolean类型

        boolean(布尔)类型有两个值:false 和 true ,用来判定逻辑条件.与Python不同的是,Java中的boolean值与整型值之间进行互相转换.       Python中Tu ...

  6. BZOJ 3277 串 & BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)

    标签那么长是因为做法太多了... 题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277 (bzoj 3473) ...

  7. ms sql server 系统表详细说明

          sysaltfiles  主数据库 保存数据库的文件 syscharsets  主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据 ...

  8. springboot跨域请求设置

    当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域HTTP请求(Cross-site HTTP request).比如说,域名A ( http://domaina ...

  9. 《WF in 24 Hours》读书笔记 - Hour 1 - Understanding Windows Workflow Foundation

    1.1 Hour 1 - Understanding Windows Workflow Foundation   1.1.1 What workflow is in general A workflo ...

  10. python supervisor进程监控工具的使用

    supervisor —— a process control system 另外一个类似 supervisor的工具,因为supervisor 不兼容python3, !!! Circus Proc ...