题干:

Time limit per test: 2.0 seconds

Memory limit: 512 megabytes

出题人当然是希望出的题目有关 oxx,于是想方设法给题目配上一些有关 oxx 的背景故事,使得它看起来不那么无趣。但有的时候却无法引入合适的小姐姐,使得 oxx 显得非常可怜。所以出题人删除了故事,只留下一个枯燥乏味的数学问题。

【故事已删除】

给一个长度为 n 的序列 a1,a2,…,an ,求一个长度为 m 的序列 b1,b2,…,bm 使得:

  • a1,a2,…,an 是 b1,b2,…,bm 的子序列(不一定连续),且
  • 存在常数 p>0 使得 b1,b2,…,bm 是一个 p -莫干山序列。

序列 s1,s2,…,sn 是 p -莫干山序列,当且仅当:存在 0≤x<p 对于 1≤i≤n 满足 si=(x+i)modp 。

求 m 的最小值。

Input

第一行一个整数 n (1≤n≤2⋅105 )。

第二行 n 个整数用空格隔开 a1,a2,…,an (0≤ai≤109 )。

Output

输出最小的 m 。

Examples

Input

2
0 2

Output

3

Input

3
0 2 0

Output

4

Input

1
0

Output

1

Input

10
0 1 2 3 5 6 7 8 9 1000000000

Output

1000000001

Input

3
0 1 2

Output

3

Note

样例 1: [0, 1, 2].

样例 2: [0, 1, 2, 0].

样例 3: [0].

解题报告:

首先注意到 p 的取值应该就是 max(ai)+1 。然后相邻两项之间贪心地填东西。答案就是

下面给出证明:

显然可以注意到,p越大,需要填的数就会越多,相应的,m就越大,所以我们需要让p越小越好,下界是多少呢?因为我们需要可以表示出所有的ai啊!!所以p肯定要大于max(ai),于是乎令p=max(ai)+1是正解。

其次,x的取值,因为题目说存在一个x,使对于任意的i、、、说明确定了x之后,就不再改变了。(想想如果是对于任意的i,都存在一个x,如果这样叙述的话?、、、这题就简单多了貌似)一般这种存在性构造问题,都是构造的值令第一个值(a1)是最优的,为最优解。所以我们令x=(a1) -1。对于这个题也只能是让第一个值是最优的,因为可以证明,每两个数之间要插入的数字的个数都是相同的。于是p、x这两个值都被我们得到了,这个题也就自然而然解决了。

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAX = 2e5 +5;
ll a[MAX];
int main()
{int n;ll maxx = -1;cin>>n;for(int i = 1; i<=n; i++) {scanf("%lld",a+i);maxx = max(maxx,a[i]);}ll p = maxx+1;ll ans = 0;for(int i = 2; i<=n; i++) {ans += (a[i]-a[i-1] - 1 + p)%p;}printf("%lld\n",ans + n);return 0;
}

总结:

对于这种存在某变量的构造问题,往往可以先讲一些不确定量找到对应的确定量(比如这题要先把p确定了),然后再确定这个存在性的变量(往往和数组中的第一个元素或者某一个元素是对应的)。

【EOJ Monthly 2018.10 - B】 莫干山奇遇 (思维构造,数学,数组,贪心)(总结)相关推荐

  1. 【EOJ Monthly 2018.10 - A】oxx 的小姐姐们(模拟,水题,填充矩阵,输出格式有坑)

    题干: Time limit per test: 1.0 seconds Memory limit: 512 megabytes oxx 和他的小姐姐(们)躺在图书馆前的大草坪上看星星. 有强迫症的 ...

  2. 华东师范大学2018.11月赛【EOJ Monthly 2018.11】

    [EOJ Monthly 2018.11] A. 心与心的距离 Time limit per test: 2.0 seconds Memory limit: 512 MB 近在咫尺,远在天边.心与心的 ...

  3. EOJ Monthly 2018.11 D. 猜价格

    猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...

  4. EOJ Monthly 2018.12 B. 清点星辰(蒙特卡洛模拟)

    B. 清点星辰 单测试点时限: 2.0 秒 内存限制: 512 MB "夜里, 你要抬头仰望满天的星星. 我那颗实在太小了, 我都没法指给你看它在哪儿." 这样倒也好,我的星星,对 ...

  5. EOJ Monthly 2018.1

    985月赛,当时鸽了,现在想补一补 A. 石头剪刀布的套路 Time limit per test: 1.0 seconds Memory limit: 256 megabytes 现在有一种石头剪刀 ...

  6. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)

    传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码 转载于: ...

  7. 2018.10.01 NOIP模拟 卡牌游戏(贪心)

    传送门 简单贪心题. 然而考试的时候失了智少讨论了一种情况导致gg. 实际上用到了二分图匹配的思想,L每次找到刚好比当前的牌小一点的出出去,看能匹配几个. 如何处理? 我们先考虑第一种比分策略. 我们 ...

  8. EOJ Monthly 2021.1

    EOJ Monthly 2021.1 2/6 2021快乐,期末考加油-- B想通了比C简单 C思路没问题但是不知道为什么一直WA19 B - 洪水 B. 洪水 - EOJ Monthly 2021. ...

  9. EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)

    EOJ Monthly 2019.11 ∑i=1n∑a1=1i∑a2=1i∑a3=1i⋯∑ak−1i∑aki[gcd(a1,a2,a3,-,ak−1,ak,i)==1]=∑i=1n∑d∣iμ(d)⌊i ...

最新文章

  1. MTK 快速开机 技术详解
  2. SAP HANA企业级培训系列课程第一部分
  3. Java web小项目_个人主页(1)—— 云环境搭建与项目部署
  4. python database ioerror_python – IOError:[Errno 2]没有这样的文件或...
  5. safari 浏览器提示添加到主屏幕_Safari浏览器的秘密技能
  6. python爬虫使用代理ip_爬虫使用代理IP的为什么不能全部成功
  7. 如何让用户留在生态系统里?向苹果学习!【转载】
  8. 【转】8G内存下MySQL的优化详细方案
  9. Arduino 各种模块篇 motor shield 电机扩展板(舵机、直流电机、步进电机party)
  10. 凸优化第七章统计估计 7.3最优检测器设计及假性检验
  11. Axis1.4容器WebService服务发布过程
  12. qt之QTcpSocket
  13. WMB Compute 节点访问数据库
  14. 如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法
  15. #023单词接龙1(字符串)(女友)
  16. T-Pot安装教程(保证能运行,附安装需要的所有东西清单)
  17. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新
  18. 软件测试2小时入门-曹红杏-专题视频课程
  19. OpenCV实践小项目(二) -文档ocr扫描识别
  20. 函数最值题目及答案_关于函数的习题及答案

热门文章

  1. h5禁用浏览器下载视频_【必备】 一键视频下载器插件,非常好用的浏览器插件!...
  2. 撤销 恢复快捷键 Linux,Linux Vim撤销和恢复撤销快捷键用法详解
  3. html HTML1300 进行了导航,jquery根据文章H标签自动生成导航目录
  4. python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传
  5. ajax如何提交多表单的值_25 HTML5表单基本控件(二)
  6. ESlint静态代码检测工具安装
  7. java生成四则运算表达式_生成四则运算(java实现)
  8. python argument list too long_间歇“OSError:[Errno 7]参数列表太长”,命令短(~125个字符)...
  9. lvm 扩展根目录_转://如何增加linux根目录的磁盘空间(基于LVM)?
  10. 常量池在堆还是方法区_第九章_方法区