能发现:

1.输出序列与掉落顺序没有任何关系(因为单调性不会被改变)。

2.输出的序列 \(h_i\) 最多有一组 \(h_i=h_{i+1}\)。

对 2 的证明:

  1. 当 \(h_{i+1}\) 与 \(h_{i}\) 奇偶性相同时 ,\(h_{i+1}\) 向 \(h_i\) 的数次掉落会使 \(h_i=h_{i+1}\) 。

  2. 当 \(h_{i+1}\) 与 \(h_i\) 奇偶性不同时,\(h_{i+1}\) 向\(h_i\) 的数次掉落会使 \(h_i+1=h_{i+1}\) ,此时由于原先奇偶性不同,所以此时的 \(h_i\) 与 \(h_{i-1}\) 奇偶性相同 ,执行2。

对于会掉落的 \(h_i\) ,其掉落的本质是:

  • 如果 \(i=1\) 或者 \(h_{i+1}<h_i+2\) ,停止 。
  • 否则 \(h_i\gets h_i+1\) ,\(h_{i+1} \gets h_{i+1}-1\) ,\(i \gets i-1\) 。

那么

如果 \(h_i\) 左边的数互不相等,那么掉落会一直到 \(i=1\) ,过程中一定会使得 \(h_i=h_{i+1}\) 。

否则,若存在\(h_i=h_{i+1}\),则掉落会在\(h_{i+1}\)处停止,此时相等的个数减少\(1\)个或不变(连续三个同奇偶时不变) 。

那么从\(h_n\)开始掉落,无论是过程中还是最后都不可能存在\(1\)对以上的相等 。

设\(sum=\sum h_i\)

由于上面的结论,所以只有唯一一个序列满足:

  • 其差分序列中均为 \(0\) 或 \(1\) 且 \(0\) 至多有一个 。

  • 长度为 \(n\) 且和为 \(sum\) 。

那么

$ 2sum=n(2h_1+n-1) $ ,可以求出 \(h_1\) ,通过序列 \({1,2,3......n}\) 开始构造这个序列,直到其总和为 \(\sum h_i\) 。

#include<bits/stdc++.h>
main()
{
int n;
scanf("%d",&n);
long long h,s=-n*((long long)n-1)/2;
for(int i=0;i<n;++i)
scanf("%lld",&h),s+=h;
for(int i=0;i<n;++i)
printf("%lld ",i+s/n+(i<s%n));
}

最新文章

  1. MySQL 分区表
  2. Android课程---优化ListView列表视图
  3. java JVM垃圾回收机制
  4. tar.gz和rpm安装文件(转载)
  5. C#三种判断数据库中取出的字段值是否为空(NULL) 的方法
  6. ios入门之c语言篇——基本函数——2——判断闰年
  7. BZOJ 3529 数表(莫比乌斯反演)
  8. 关闭 sqlserver提示信息
  9. 转:Loadrunner报错“Too many local variablesAction.c”解决方法
  10. python3 scrapy+Crontab部署过程
  11. 前端开发-DOM
  12. HTML简单使用
  13. type() 和 isinstance()区别
  14. 结合源码浅谈Spring容器与其子容器Spring MVC 冲突问题
  15. spring boot @ResponseBody转换JSON 时 Date 类型处理方法,Jackson和FastJson两种方式,springboot 2.0.9配置fastjson不生效官方解决办法
  16. 单源最短路——Dijkstara算法
  17. JAVA记录-java代码优化策略
  18. PHP最全笔记(一)(值得收藏,不时翻看一下)
  19. [javase学习笔记]-8.3 statickeyword使用的注意细节
  20. [转]MySQL update join语句

热门文章

  1. 第一个 Angular 应用程序
  2. Single Shot Multibox Detection (SSD)实战(上)
  3. LED液晶与OLED:电视显示技术比较
  4. 0算法基础学算法 搜索篇第二讲 BFS广度优先搜索的思想
  5. 听说你还不知道Spring是如何解决循环依赖问题的?
  6. DB2 SQL0805N解决和思考
  7. char与varchar2字符类型的区别
  8. Linux命令大全之帮助命令及压缩命令
  9. 大数据初级sy
  10. 单臂路由&amp;链路捆绑