传送门

由于 Di 只有 3 种情况,那么就很简单了

f[i][j][0] 表示前 i 个,且第 i 个变成 j 的 递增序列最小修改次数

f[i][j][1] 表示前 i 个,且第 i 个变成 j 的 递减序列最小修改次数

状态转移看代码。

——代码

 #include <cstdio>
#include <iostream> const int MAXN = ;
int n, ans = ~( << );
int a[MAXN], f[MAXN][][]; inline long long read()
{
long long x = , f = ;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -;
for(; isdigit(ch); ch = getchar()) x = (x << ) + (x << ) + ch - '';
return x * f;
} inline int min(int x, int y)
{
return x < y ? x : y;
} int main()
{
int i, j;
n = read();
for(i = ; i <= n; i++) a[i] = read();
for(i = ; i <= n; i++)
{
f[i][][] = f[i - ][][] + (a[i] != );
f[i][][] = min(f[i - ][][], f[i - ][][]) + (a[i] != );
f[i][][] = min(f[i - ][][], min(f[i - ][][], f[i - ][][])) + (a[i] != ); f[i][][] = min(f[i - ][][], min(f[i - ][][], f[i - ][][])) + (a[i] != );
f[i][][] = min(f[i - ][][], f[i - ][][]) + (a[i] != );
f[i][][] = f[i - ][][] + (a[i] != );
}
for(i = ; i <= ; i++)
for(j = ; j <= ; j++)
ans = min(ans, f[n][i][j]);
printf("%d\n", ans);
return ;
}

[luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)的更多相关文章

  1. bzoj1609 / P2896 [USACO08FEB]一起吃饭Eating Together(最长不降子序列)

    P2896 [USACO08FEB]一起吃饭Eating Together 显然的最长不升/降子序列,求出最长值,则答案为$n-$最长值(改掉剩下的). 复杂度$O(nlogn)$ (然鹅有神仙写了$ ...

  2. 洛谷 P2896 [USACO08FEB]一起吃饭Eating Together

    P2896 [USACO08FEB]一起吃饭Eating Together 题目描述 The cows are so very silly about their dinner partners. T ...

  3. 洛谷P2896 [USACO08FEB]一起吃饭Eating Together

    题目描述 The cows are so very silly about their dinner partners. They have organized themselves into thr ...

  4. P2896 [USACO08FEB]一起吃饭Eating Together

    传送门 可以考虑DP 设 f [ i ] [ 1/2/3 ] [ 0/1 ] 表示当前考虑到第 i 头牛,打算让当前位置的编号变成 1/2/3,并且打算让整段序列上升/下降 0/1 然后就对每种情况慢 ...

  5. 洛谷—— P2896 [USACO08FEB]一起吃饭Eating Together

    https://www.luogu.org/problem/show?pid=2896 题目描述 The cows are so very silly about their dinner partn ...

  6. POJ 3670 Eating Together (DP,LIS)

    题意:给定 n 个数,让你修改最少的数,使得它变成一个不下降或者不上升序列. 析:这个就是一个LIS,但是当时并没有看出来...只要求出最长LIS的长度,用总数减去就是答案. 代码如下: #inclu ...

  7. Operating System-进程/线程内部通信-管程(Monitor)介绍,实现以及应用

    本文主要内容: 管程(Monitor)介绍 管程实现 管程应用 一.管程(Monitor)介绍 1.1 管程 前一篇文章介绍了信号量以及使用,信号量已经提供了一个方便且高效的进程同步机制,但是信号量有 ...

  8. super调用父类的属性方法

    super:可以用来修饰属性  方法   构造器 当子类与父类中有同名的属性时,可以通过   super.此属性  显式的调用父类声明的属性 若想调用子类的同名的属性“this.此属性” 2.当子类重 ...

  9. Fish eating fruit 沈阳网络赛(树形dp)

    Fish eating fruit \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 大体的题意就是给出一棵树,求每一对点之间的距离 ...

随机推荐

  1. 07-11 Linux命令操作

    1. 查看当做操作目录位置    > pwd 2. 查看(当前)目录里边的文件内容    > ls                //list    > ls  -l  或ll    ...

  2. P1606 [USACO07FEB]荷叶塘Lilypad Pond(最短路计数)

    P1606 [USACO07FEB]荷叶塘Lilypad Pond 题目描述 FJ has installed a beautiful pond for his cows' aesthetic enj ...

  3. VBNET AutoCAD Activex 切换图层为当前图层失效

    最近有朋友询问切换图层的代码 com切换图层 <CommandMethod("mycl")> Public Sub MySubLayerChange() Dim Thi ...

  4. 擅长排列的小明II

    先搜索 出来一点结果之后  看结果之间的 联系 得出  递推公式  . #include<stdio.h> #include<string.h> #include<mat ...

  5. 转 MySQL数据库基础

    http://lib.csdn.net/article/mysql/57883 1 数据库基础 一.数据库与数据库管理系统 1.数据库(DB):存放数据的仓库,从广义来说,数据不仅包括数字,还包括了文 ...

  6. java excel poi导入 过滤空行的方法 判断是否是空行

    private boolean isRowEmpty(Row row){ for (int c = row.getFirstCellNum(); c < row.getLastCellNum() ...

  7. js实现点击上下按钮,图片向上向下循环滚动切换

    //popup.js //jquery.1.4.2-min.js (function(p,j){function u(){if(!c.isReady){try{v.documentElement.do ...

  8. 通过机智云APP来学习安卓

    效果非常之好,安卓6.0之后就进行了动态授权.按照网上的视频一步一步调试的非常成功,非常舒服.

  9. 梦想CAD控件 2019.05.05更新

    下载地址: http://www.mxdraw.com/ndetail_20141.html 1. 增加vs2017版本控件 2. 增加windows触摸屏支持 3. 增加手写签名功能 4. 修改PL ...

  10. Python爬虫:抓取手机APP的数据

    摘要 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 表单: 表单中包括了用户名和密码,当然都是加密 ...