链接

[https://codeforces.com/contest/1141/problem/C]

题意

qi=pi+1−pi.给你qi让你恢复pi

每个pi都不一样

分析

就是数学吧

a1 +(a2-a1) +(a3-a1) +(a4-a1) +(a5-a1) +(a6-a1) +…+(an-a1)=a1+a2+....+an-(n-1)a1;

=n
(n+1)/2-(n-1)*a1=a1+(a2-a1) +(a3-a1) +(a4-a1) +(a5-a1) +(a6-a1) +…+(an-a1)

(a2-a1) +(a3-a1) +(a4-a1) +(a5-a1) +(a6-a1) +…+(an-a1)可以用一个前缀和统计

a1=a1=( n × (n+1) / 2 -sum[n-1])/n;

在判断是否有重复的和超出范围的

看代码吧

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+10;
ll p[N],sum[N];
bool vis[N];
ll n;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("in.txt","r",stdin);
cout<<int('a')<<endl;
while(cin>>n){
sum[0]=0;
for(int i=1;i<n;i++)
{
cin>>p[i];
sum[i]=sum[i-1]+p[i];
} for(int i=1;i<n;i++)
sum[i]+=sum[i-1];
ll a1=(n*(n+1)/2-sum[n-1])/n;
//cout<<a1<<endl;
if(a1<1||a1>n) cout<<-1<<endl;
else{
bool flag=0;
ll last=a1;
memset(vis,0,sizeof(vis));
vis[last]=1;
vector<ll> ve;
ve.push_back(last);
for(int i=2;i<=n;i++)
if(last+p[i-1]>=1&&last+p[i-1]<=n&&!vis[last+p[i-1]]){
last=last+p[i-1];
vis[last]=1;
ve.push_back(last);
}
else{
flag=1; break;
}
if(flag) cout<<-1;
else for(int i=0;i<n;i++) cout<<ve[i]<<' ';
cout<<endl;
}
}
return 0;
}

最新文章

  1. 主要由顶点容器构成的平面图形类(Shape)——(第一次作业Draw类定义升级)
  2. HTML 学习笔记(列表)
  3. ERROR com.opensymphony.xwork2.interceptor.ParametersInterceptor.error:34 - Developer Notification
  4. cocosbuilder中使用字体描边时,字符重叠,间距过小问题
  5. SSL/TLS/WTLS原理
  6. Nginx入门之两种handler函数的挂载方式
  7. Wix学习整理(5)——安装时填写注册表
  8. ubuntu下安装UltraEdit
  9. android企业级商城源码、360&#176;全景图VR源码、全民直播源码等
  10. 在C++98基础上学习C++11新特性
  11. RK3288 GPIO
  12. 当yum安装出现Error: Package: glibc-headers .....时
  13. Insert Into 语句的语法错误
  14. TensorFlow走过的坑之---数据读取和tf中batch的使用方法
  15. 20165314 2017-2018-2《Java程序设计》课程总结
  16. [POJ2287][Tyvj1048]田忌赛马 (贪心+DP)
  17. full gc频繁的分析及解决案例
  18. ARMCC和GCC编译ARM代码的软浮点和硬浮点问题【转】
  19. oauth2-server-php-docs 概念
  20. Happy Java:定义泛型参数的方法

热门文章

  1. c#判断两个对象和对象中的属性是否相同(以及记录对象中的哪些字段,和详细的改变情况)
  2. Linux唤醒抢占----Linux进程的管理与调度(二十三)
  3. Win10家庭版-添加[组策略]
  4. html + js 实现图片上传,压缩,预览及图片压缩后得到Blob对象继续上传问题
  5. Java JDK与JRE
  6. input accept属性限制文件上传格式
  7. Pandas 的数据结构
  8. 如何征服面试官,拿到Offer [转]
  9. VS CODE 快捷键
  10. Visual Studio Code 支持TensorFlow配置支持