【EOJ Monthly 2018.10 - B】 莫干山奇遇 (思维构造,数学,数组,贪心)(总结)
题干:
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】 莫干山奇遇 (思维构造,数学,数组,贪心)(总结)相关推荐
- 【EOJ Monthly 2018.10 - A】oxx 的小姐姐们(模拟,水题,填充矩阵,输出格式有坑)
题干: Time limit per test: 1.0 seconds Memory limit: 512 megabytes oxx 和他的小姐姐(们)躺在图书馆前的大草坪上看星星. 有强迫症的 ...
- 华东师范大学2018.11月赛【EOJ Monthly 2018.11】
[EOJ Monthly 2018.11] A. 心与心的距离 Time limit per test: 2.0 seconds Memory limit: 512 MB 近在咫尺,远在天边.心与心的 ...
- EOJ Monthly 2018.11 D. 猜价格
猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...
- EOJ Monthly 2018.12 B. 清点星辰(蒙特卡洛模拟)
B. 清点星辰 单测试点时限: 2.0 秒 内存限制: 512 MB "夜里, 你要抬头仰望满天的星星. 我那颗实在太小了, 我都没法指给你看它在哪儿." 这样倒也好,我的星星,对 ...
- EOJ Monthly 2018.1
985月赛,当时鸽了,现在想补一补 A. 石头剪刀布的套路 Time limit per test: 1.0 seconds Memory limit: 256 megabytes 现在有一种石头剪刀 ...
- 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码 转载于: ...
- 2018.10.01 NOIP模拟 卡牌游戏(贪心)
传送门 简单贪心题. 然而考试的时候失了智少讨论了一种情况导致gg. 实际上用到了二分图匹配的思想,L每次找到刚好比当前的牌小一点的出出去,看能匹配几个. 如何处理? 我们先考虑第一种比分策略. 我们 ...
- EOJ Monthly 2021.1
EOJ Monthly 2021.1 2/6 2021快乐,期末考加油-- B想通了比C简单 C思路没问题但是不知道为什么一直WA19 B - 洪水 B. 洪水 - EOJ Monthly 2021. ...
- 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 ...
最新文章
- MTK 快速开机 技术详解
- SAP HANA企业级培训系列课程第一部分
- Java web小项目_个人主页(1)—— 云环境搭建与项目部署
- python database ioerror_python – IOError:[Errno 2]没有这样的文件或...
- safari 浏览器提示添加到主屏幕_Safari浏览器的秘密技能
- python爬虫使用代理ip_爬虫使用代理IP的为什么不能全部成功
- 如何让用户留在生态系统里?向苹果学习!【转载】
- 【转】8G内存下MySQL的优化详细方案
- Arduino 各种模块篇 motor shield 电机扩展板(舵机、直流电机、步进电机party)
- 凸优化第七章统计估计 7.3最优检测器设计及假性检验
- Axis1.4容器WebService服务发布过程
- qt之QTcpSocket
- WMB Compute 节点访问数据库
- 如何彻底关闭Win10自动更新,Win10永久关闭自动更新的方法
- #023单词接龙1(字符串)(女友)
- T-Pot安装教程(保证能运行,附安装需要的所有东西清单)
- nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新
- 软件测试2小时入门-曹红杏-专题视频课程
- OpenCV实践小项目(二) -文档ocr扫描识别
- 函数最值题目及答案_关于函数的习题及答案
热门文章
- h5禁用浏览器下载视频_【必备】 一键视频下载器插件,非常好用的浏览器插件!...
- 撤销 恢复快捷键 Linux,Linux Vim撤销和恢复撤销快捷键用法详解
- html HTML1300 进行了导航,jquery根据文章H标签自动生成导航目录
- python autoit上传文件_结合python+selenium使用AutoIt V3实现文件、图片上传
- ajax如何提交多表单的值_25 HTML5表单基本控件(二)
- ESlint静态代码检测工具安装
- java生成四则运算表达式_生成四则运算(java实现)
- python argument list too long_间歇“OSError:[Errno 7]参数列表太长”,命令短(~125个字符)...
- lvm 扩展根目录_转://如何增加linux根目录的磁盘空间(基于LVM)?
- 常量池在堆还是方法区_第九章_方法区