感觉这题的状态还是比较明显的。设置状态 \(f[i][j][0/1]\) 表示dp到第 \(i\) 个位置,前面(包括这里)已经出现了 \(j\) 个山峰,当前位置是不是山峰即可 dp。这样的状态有一个很优秀的性质:我们注意到在最后的答案当中,我们一定不会去修改山峰的高度(这样做显然毫无意义)。那么这样dp我们可以通过分类讨论直接计算出使一个节点成为山峰的代价。

  如:降低一个位置使得前面与后面均为山峰,降低到小于两者的高度。降低一个位置使得后一个位置为山峰,降低一个位置使得前一个位置为山峰,都只要降低到为山峰的位置更低即可。复杂度很高,但codeforces经常都是玄学复杂度……( • ̀ω•́ )✧

#include <bits/stdc++.h>
using namespace std;
#define maxn 100000
#define int long long
#define INF 999999999999LL
int n, K, a[maxn], f[][maxn][]; int read()
{
int x = , k = ;
char c; c = getchar();
while(c < '' || c > '') { if(c == '-') k = -; c = getchar(); }
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * k;
} int Check(int x, int y, int z) { int t = min(y, z); return x >= t ? x - t + : ; }
void Down(int &x, int y) { x = x < y ? x : y; } signed main()
{
n = read(), K = (n >> ) + ; if(!(n & )) K -= ;
for(int i = ; i <= n; i ++) a[i] = read();
int fore = , pre = , now = ;
for(int i = ; i <= ; i ++)
for(int j = ; j < maxn; j ++)
f[i][j][] = f[i][j][] = INF;
f[fore][][] = f[pre][][] = ;
for(int i = ; i <= n; i ++)
{
int t = (i >> ) + ;
for(int j = ; j < maxn; j ++)
f[now][j][] = f[now][j][] = INF;
for(int j = ; j <= i; j ++)
{
int t1, t2, t3;
if(i > ) t1 = a[i - ], t2 = a[i - ], t3 = a[i];
else if(i > ) t1 = -INF, t2 = a[i - ], t3 = a[i];
else t1 = -INF, t2 = -INF, t3 = a[i];
Down(f[now][j][], f[fore][j - ][] + Check(t2, t1, t3));
Down(f[now][j][], f[fore][j - ][] + Check(t2, t3, INF));
Down(f[now][j][], f[pre][j][] + Check(t3, t2, INF));
Down(f[now][j][], f[pre][j][]);
}
int tem = fore; fore = pre, pre = now, now = tem;
}
for(int i = ; i <= K; i ++)
printf("%I64d ", min(f[pre][i][], f[pre][i][]));
puts("");
return ;
}

【题解】CF#1012 C-Hill的更多相关文章

  1. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  2. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T5(思维)

    还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cst ...

  3. 【bzoj题解】1012 最大数

    题目描述 现在请求你维护一个数列,要求提供以下两种操作:1.查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2.插入操作.语法:A ...

  4. 竞赛题解 - [CF 1080D]Olya and magical square

    Olya and magical square - 竞赛题解 借鉴了一下神犇tly的博客QwQ(还是打一下广告) 终于弄懂了 Codeforces 传送门 『题目』(直接上翻译了) 给一个边长为 \( ...

  5. [题解] [CF 1250J] The Parade

    题面 题目大意: 给定一个 \(n\) , 所有军人的数量均在 \([1, n]\) 给定 \(a_i\) 代表高度为 \(i\) 的军人的个数 你要将这些军人分成 \(k\) 行, 满足下面两个条件 ...

  6. 题解 CF 1372 B

    题目 传送门 题意 给出 \(n\),输出 \(a\) ,\(b\) (\(0 < a \leq b < n\)),使\(a+b=n\)且 \(\operatorname{lcm}(a,b ...

  7. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T4(模拟)

    随便模拟下就过了qwq 然后忘了特判WA了QwQ #include <cstdio> #include <algorithm> #include <cstring> ...

  8. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T3(贪心)

    是一道水题 虽然看起来像是DP,但其实是贪心 扫一遍就A了 QwQ #include <cstdio> #include <algorithm> #include <cs ...

  9. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T2(模拟)

    题目要求很简单,做法很粗暴 直接扫一遍即可 注意结果会爆int #include <cstdio> #include <algorithm> #include <cstr ...

随机推荐

  1. P1294 高手去散步

    P1294 高手去散步 题目背景 高手最近谈恋爱了.不过是单相思.“即使是单相思,也是完整的爱情”,高手从未放弃对它的追求.今天,这个阳光明媚的早晨,太阳从西边缓缓升起.于是它找到高手,希望在晨读开始 ...

  2. CLR via c#读书笔记九:接口

    1.接口对一组方法签名进行了统一命名.接口还能定义事件.无参属性和有参属性(C#的索引器). 2.c#禁止接口定义任何一种静态成员. 3.C#编译器要求将实现接口的方法标记为public.CLR要求将 ...

  3. springBoot RabbitMq 转换json序列化

    package com.alirm.redis_cache.config.RabbitMQ; import org.springframework.amqp.rabbit.core.RabbitTem ...

  4. 解决Entity Framework查询匿名对象后的跨域访问的一种方式

    在Entity Framework中,可以使用lambda表达式进行对数据的查询,而且可以将查询结果直接映射为对象或者对象列表,这极大的提高的开发速度,并且使数据层的数据更加方便处理和传递.但是很多时 ...

  5. centos7下安装mysql8.0.12及设置权限

    一.mysql版本介绍 mysql的官网为:https://www.mysql.com/ 在官网上可以看到多个版本,主要版本如下, 1.MySQL Community Server 社区版本,开源免费 ...

  6. 函数返回const,以便控制访问

    #include <stdio.h> class const_out_parameter{ private: ]; public: int* const_out_parameter_tes ...

  7. tomcat6升级到7时400问题,以及url带有汉字时出错。

    tomcat6升级到7时400问题: 在文件catalina.properties后加入tomcat.util.http.parser.HttpParser.requestTargetAllow=|. ...

  8. Solr与Elasticsearch区别

    Elasticsearch Elasticsearch是一个实时的分布式搜索和分析引擎.它可以帮助你用前所未有的速度去处理大规模数据. 它可以用于全文搜索,结构化搜索以及分析. 优点 Elastics ...

  9. jQuery的图片懒加载

    jQuery的图片懒加载 function imgLazyLoad(options) { var settings = { Id: $('img'), threshold: 100, effectsp ...

  10. js经典试题之w3规范系列

    js经典试题之w3规范系列 1:w3c 制定的 javascript 标准事件模型的正确的顺序? 答案:事件捕获->事件处理->事件冒泡 解析:先事件捕获从windows > doc ...