前言

我切掉这道题是命运石之门的选择


正题

题目链接:https://www.luogu.org/problemnew/show/P2101


题目大意

nnn个连在一起的高度hih_ihi​盒子。一个刷子只能直着刷而且得连续都得刷。求至少刷多少次。


解题思路

fi,jf_{i,j}fi,j​表示前iii个已经刷完了,上一个高度为jjj的刷过来。首先我们要把jjj离散化了。
然后考虑fi,j=min{fi−1,k(k≥j),fi,j−1+bi−bj}f_{i,j}=min\{f_{i-1,k(k\geq j)},f_{i,j-1}+b_i-b_j\}fi,j​=min{fi−1,k(k≥j)​,fi,j−1​+bi​−bj​}
这样横着刷的就搞定了,但是还有竖着刷的所以就要加(b[j]!=a[i])(b[j]!=a[i])(b[j]!=a[i])
然后对于那个kkk用前缀合搞定。


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const ll N=5100;
ll n,a[N],b[N],f[2][N],mins,m;
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld",&a[i]);b[i]=a[i];}sort(b+1,b+1+n);m=unique(b+1,b+n+1)-(b+1);memset(f,0x3f,sizeof(f));f[0][0]=0;mins=2147483647;for(ll i=1;i<=n;i++){memset(f[i&1],0x3f,sizeof(f[i&1]));f[i&1][0]=f[~i&1][0];for(ll j=1;j<=m;j++){if(b[j]>a[i]) break;f[i&1][j]=min(f[~i&1][j],f[i&1][j-1]+b[j]-b[j-1]);}for(ll j=0;j<=m;j++){if(b[j]>a[i]) break;if(b[j]!=a[i])    f[i&1][j]+=1;if(i==n) mins=min(f[i&1][j],mins);}for(ll j=m-1;j>=0;j--)f[i&1][j]=min(f[i&1][j+1],f[i&1][j]);}printf("%lld",mins);
}

P2101-命运石之门的选择【dp,离散化】相关推荐

  1. Luogu P2101 命运石之门的选择(分治+搜索)

    P2101 命运石之门的选择 题意 题目描述 在某一条不知名世界线的冈伦今天突然接到了一条\(dmail\),上面说世界线将会发生巨大变动,未来的他无论如何都无法扭转这种变动回到原来的世界线.而世界线 ...

  2. 【离散化】【DP】命运石之门的选择

    命运石之门的选择 题目大意: 有n个盒子,高度为ai,可以数值刷盒子,也可以横着刷,但如果前面没盒子了,就要停下,问刷完这些盒子最少要刷多少次 原题: 题目描述 在某一条不知名世界线的冈伦今天突然接到 ...

  3. P4945-最后的战役【dp,离散化】

    正题 题目大意:https://www.luogu.org/problemnew/show/P4945 题目大意 第isi\ si s可以 获取1∼i1\sim i1∼i中最大的能量 获取1∼i1\s ...

  4. 过河(dp+离散化)

    过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点 ...

  5. HDU 6447 YJJ's Salesman(树状数组优化DP + 离散化)

    HDU 6447 YJJ's Salesman 题目 给一个二维数组,从(0,0)走到(1e9, 1e9).每次只能走右,下,右下,三个方向.其中只有通过右下走到特定给出的点(村庄)时才会获得分值.问 ...

  6. poj3666(基础dp+离散化)

    题目链接:http://poj.org/problem?id=3666 Making the Grade Time Limit: 1000MS   Memory Limit: 65536K Total ...

  7. *POJ3666.Making the Grade(DP+离散化)

    题目链接:http://poj.org/problem?id=3666 题意:求将一个序列调整成纯单调(可以相等)的序列所需要的最小代价 解题思路: 分两种情况讨论: ①不减序列:dp[i][j]表示 ...

  8. poj3666(DP+离散化)

    题目链接:http://poj.org/problem?id=3666 思路: 看了讨论区说本题的数据比较弱,只需要考虑不减序列即可,比较懒,所以我也只写了这一部分的代码,思路都一样,能AC就行了. ...

  9. 市面上有哪几种门_选择 low-e门窗玻璃,你想知道的都在这了

    最近系统门窗群里,不少读者粉丝在咨询关于Low-e玻璃的问题,大家越来越重视好的门窗对于隔热.隔音.隔辐射的作用.我汇总了群里大家咨询最多的20个问题,希望对大家在挑选门窗玻璃时起到一些帮助. 在介绍 ...

最新文章

  1. Qt中多线程间的同步
  2. sess.run()详解
  3. 异常处理——上传文件到HDFS,put: `.': No such file or directory
  4. node.js知识点总结
  5. MacOS中Elasticsearch的安装「借助Homebrew」
  6. MATLAB中神经网络train函数使用说明
  7. 通过原码、反码、补码彻底搞清左移、右移、无符号右移
  8. 毕设日志——RCNN
  9. [转载] Java Challengers#1:JVM中的方法重载
  10. python制作ppt_如何利用Excel与Python制作PPT
  11. 【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
  12. Storm运行原理探索
  13. 用产品思维设计API(二)——数据解耦,才是前后分离的本质
  14. <<算法竞赛进阶指南>>:陪审团
  15. 手机apk应用程序未安装解决办法
  16. 低代码架构,内容赋能业务的最后一块拼图?
  17. 甲骨文大数据利器:内存数据库和一体机
  18. 2022年全国最新高级消防设施操作员模拟题库及答案
  19. 关于前端的一些学习记录(1)
  20. mvc 、mvp、 mvvm

热门文章

  1. 怎么用计算机计算出选手最后得分,WPS技巧:TRIMMEAN函数计算选手得分
  2. php图片上传 thinkphp5,thinkphp5图片上传接口
  3. js重新渲染div_前端工程师必备:从浏览器的渲染到性能优化
  4. 机器学习之tensorflow出现的一些问题
  5. leetcode59. 螺旋矩阵 II
  6. [数据结构]链表中销毁和清空的区别
  7. Stack(栈 c++模版实现)
  8. K-periodic Garland CodeForces - 1353E(暴力+贪心+dp)
  9. php 如何生成二级目录json,使用PHP根据已解码的JSON创建文件夹/文件结构
  10. 数据结构---邻接表的BFS