CF1392F题解
首先题意很明显就不说了吧www
先说一下做这道题的经历
昨天下午和 blw 一起去食堂吃饭,和他产生了一点儿冲突,于是我考了一下他 P1119 (就是那道 Floyd),他很快做出来了,于是考了我这道题,并称其为“神仙结论题”
首先我 10min 就搞出了正解,然而 blw 说我 WA 了,我就很谔谔,或许是他搞错了吧qaq
并且吐槽一句这题结论不难想啊
首先这道题序列单调递增,所以不论怎么操作最后的序列都是单调不降的。
并且,还有一个明显能够得到的结论:
若 \([a_L+1<a_{L+1}][a_{R-1}+1<a_R][\sum_{i=L+1}^{R-1}[a_i<a_{i+1}]] = 1\),那么可以让 \(a_L\) 加一,\(a_R\) 减一。
证明很简单,略。
于是,我们每次就让最右边能够产生“山体滑坡”(本题的名称,也相当于最右边能够进行操作的数)减尽量多,最左边能够进行“山体滑坡”的数加上这个数。
于是左边的数就会尽量大,右边的数就会尽量小。
再由于题意,能够得到最多只有两个相邻的项相等。
于是我们就得出了以下算法:
先算出最所有项的和,然后算出 \(a_1\),由结论得:\(a_i = a_{i-1}+1\)。
这时用最开始所有项的和减去现在所有项的和,还会剩下 \(O(n)\) 的值。
从左往右一个一个填即可。
code:
#include<cstdio>
#include<cctype>
typedef long long ll;
const int M=1e6+5;
int n;
ll sum,ans,a[M];
inline ll read(){
ll a=0;char s;
while(!isdigit(s=getchar()));
while(a=a*10+(s^48),isdigit(s=getchar()));
return a;
}
signed main(){
int i;
n=read();
for(i=1;i<=n;++i)a[i]=read(),sum+=a[i];
sum-=1ll*n*(n+1)>>1;
ans=sum/n;sum-=ans*n;
for(i=1;i<=n;++i)a[i]=ans+i;
i=1;
while(sum--)++a[i++];
for(i=1;i<=n;++i)printf("%lld ",a[i]);
}
CF1392F题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Android下数据库创建
什么情况下我们才用数据库做数据存储? 大量数据结构相同的数据需要存储时. sqlite 嵌入式 轻量级 SqliteOpenHelper 创建数据库步骤: 1.创建一个类集成SqliteOpenHel ...
- CentOS更新VMware Tools及设置共享文件夹
CentOS设置共享文件夹 设置共享文件夹 点击虚拟机->设置 2. 打开虚拟机设置->选项->共享文件夹->总是启用->添加 3. 点击下一步创建主机路径并命名 4. ...
- IP分组和分片
本文讨论两个问题①IP数据报的首部②IP数据报的分片 TCP/IP模型分为五层,从上到下依次是应用层.传输层.网络层.数据链路层和物理层. IP数据报是网络层的概念. IP数据报的首部 版本号:0~3 ...
- Docker入门的亿点点学习
前段时间花了些时间学习了亿点点docker,也算是入门了吧,顺便记了一下笔记拿出来分享给想要接触docker的兄弟们. 没有服务器的兄嘚可以去腾讯云或者阿里云领取免费的试用产品嗷,如果已经领取过了,又 ...
- 帆软报表(finereport)雷达图钻取详细点新页面展示
添加参数栏,季度下拉框的空间名为combobox0 添加雷达图,通过第三页面做跳转 雷达图钻取.cpt为联动钻取的第三页面 添加纬度(所点击钻取的点) 参数 wd 添加季度参数 jd 值为季 ...
- Solution -「多校联训」战神归来
\(\mathcal{Description}\) Link. 一条地铁线路上共 \(m\) 个站点,\(n\) 个人乘坐地铁,第 \(i\) 个人需要从 \(s_i\) 站坐到 \(e_i\ ...
- C#字符串Base64编解码
C#字符串Base64编解码 首先讲一下什么是Base64编码所谓Base64就是一种基于64个可打印字符来表示二进制数据的方法.Base64编码是从二进制到字符的过程,常用于在网络上传输不可见字符( ...
- AI 神经网络理解
神经网络理解 原文写于2019-12-05,2021-12-08改为markdown
- PHP7.x环境下安装redis扩展
注:以下介绍的安装方式为PHP的安装路径为/usr/local/php,如果你的服务器上PHP的安装目录不一致请按实际情况处理. 首先下载PHP7的redis扩展 wget https://githu ...
- 图解python | 安装与环境设置
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...