Codeforces Round #809 (Div. 2)C.Qpwoeirut And The City
题目大意:
当一栋楼比旁边两栋楼都高的时候,这栋楼为cool,对除了1和n以外的所有楼可以增加任意层,问在满足使最多的楼cool的前提下的花费最小。
当n为奇数的情况下:
cool的楼实际上是固定的,只要将他们需要的花费加起来就好。
当n为偶数的情况下:
cool的楼并不固定,但是他的形式是固定的,要么所有cool楼之间隔一个楼,要么cool楼之间除了一个间隔2,其他全部间隔1;
所以我们可以通过枚举间隔2来枚举所有情况,取消费的最小值。
举个例子:0 1 0 1 0 1 0 0 1 0 1 0 /*间隔为2的只有一组*/
1 void solve() {
2
3 cin >> n;
4 for (int i = 1; i <= n; ++i) {
5 cin >> a[i];
6 b[i] = c[i] = 0;
7 }
8 b[0] = c[0] = b[n + 1] = c[n + 1] = 0;
9 for (int i = 2; i <= n-1; i += 2) {
10 int maxv = max(a[i - 1], a[i + 1]);
11 b[i] += max(1ll*0, 1ll * maxv - a[i] + 1);
12 }
13 for (int i = n - 1; i >= 2; i -= 2) {
14 int maxv = max(a[i - 1], a[i + 1]);
15 c[i] += max(1ll*0, 1ll * maxv - a[i] + 1);
16 }
17 for (int i = 1; i <= n; ++i) b[i] += b[i - 1];/*前缀和*/
18 for (int i = n; i >= 1; --i) c[i] += c[i + 1];/*后缀和*/
19
20 if (n & 1) {
21 cout << b[n - 1] << endl;
22 return;
23 } else {
24 int minn =1e18;
25 for (int i = 1; i <= n; ++i) {
26 minn = min(minn, b[i] + c[i + 1]);/*枚举间隔*/
27 }
28 cout << minn << endl;
29 }
30 }
比较新的就是枚举间隔的方法,用前后缀枚举
其次比较需要注意的是数据范围,超过平常的1e9了,所以注意读题
Codeforces Round #809 (Div. 2)C.Qpwoeirut And The City的更多相关文章
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
- Codeforces Round #268 (Div. 2) ABCD
CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...
随机推荐
- k8s-Pod基础
制作镜像 第一个pod 搭建Harbor仓库 重启策略 启动命令 pod基本命令 设置环境变量 数据持久化和共享-hostPath 数据持久化和共享-emptyDir JSON格式编写pod文件 Co ...
- DataGridVIew控件绑定数据之后的,增、插、删操作
最开始没有绑定数据,很快就实现了增.插.删操作,可是绑定数据之后,进行这些操作就会报错. 网上对这方面的资料比较少,自己摸索着找到了解决方法,也就是直接对绑定的数据进行操作,这里以DataTable为 ...
- 第十三篇:axios网络通信
好了这事一个非常艰巨的任务 解释以下的全部代码 <template> <div class="hello"> <p style="colo ...
- Windows如何创存储虚拟机并制作存储虚拟化LUN的映射
创建虚拟机 只能设置为8G,不能多也不能少 选择仅主机模式 选择使用现有磁盘 浏览选择自己的vmdk文件 选择保存现有格式 点击完成 点击编辑虚拟机设置 添加一个40G的硬盘 修改为40G并选择存储为 ...
- SpringMVC 07: WEB-INF下的资源访问 + SpringMVC拦截器
WBE-INF目录下的资源访问 项目配置和Spring博客集(指SpringMVC 02)中配置一样 出于对网站资源的安全性保护,放在WBE-INF目录下的资源不可以被外部直接访问 在WEB-INF/ ...
- vim 正则表达式
1.查找字符串 /str n 下一个 2.替换表达式 :[range]s/from/to/[flags] range:搜索范围,如果没有指定范围,则作用于但前行. :1,10s/from/to/ 表示 ...
- vacuum和vacuum full的处理过程
对于数据库系统的并发控制,KingbaseES采用MVCC(多版本并发控制)进行处理. 这种机制有一个缺点,就是随着时间的推移,数据文件中积累的dead tuples会越来越多. 怎么去清理这些dea ...
- 本地 maven + scala 跑spark wordcount
pom.xml 点击查看代码 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http: ...
- 引擎之旅 Chapter.1 高分辨率时钟
目录 游戏中的时间线 真实时间线 游戏时间线 全局时钟的实现方式 我们如何理解时间.在现实生活中,时间就是一个有方向的直线.从一个无穷远到另一个无穷远.用数学去抽象地思考,它就是一个从无穷小到无穷大的 ...
- ES6中的箭头函数与普通函数的区别
箭头函数与普通函数的区别 1.语法上更加简洁.清晰 基本语法: // 关于箭头函数的参数 // 如果箭头函数没有参数,直接写一个括号即可 let fun1 = () => { console.l ...