[luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)
由于 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)的更多相关文章
- bzoj1609 / P2896 [USACO08FEB]一起吃饭Eating Together(最长不降子序列)
P2896 [USACO08FEB]一起吃饭Eating Together 显然的最长不升/降子序列,求出最长值,则答案为$n-$最长值(改掉剩下的). 复杂度$O(nlogn)$ (然鹅有神仙写了$ ...
- 洛谷 P2896 [USACO08FEB]一起吃饭Eating Together
P2896 [USACO08FEB]一起吃饭Eating Together 题目描述 The cows are so very silly about their dinner partners. T ...
- 洛谷P2896 [USACO08FEB]一起吃饭Eating Together
题目描述 The cows are so very silly about their dinner partners. They have organized themselves into thr ...
- P2896 [USACO08FEB]一起吃饭Eating Together
传送门 可以考虑DP 设 f [ i ] [ 1/2/3 ] [ 0/1 ] 表示当前考虑到第 i 头牛,打算让当前位置的编号变成 1/2/3,并且打算让整段序列上升/下降 0/1 然后就对每种情况慢 ...
- 洛谷—— P2896 [USACO08FEB]一起吃饭Eating Together
https://www.luogu.org/problem/show?pid=2896 题目描述 The cows are so very silly about their dinner partn ...
- POJ 3670 Eating Together (DP,LIS)
题意:给定 n 个数,让你修改最少的数,使得它变成一个不下降或者不上升序列. 析:这个就是一个LIS,但是当时并没有看出来...只要求出最长LIS的长度,用总数减去就是答案. 代码如下: #inclu ...
- Operating System-进程/线程内部通信-管程(Monitor)介绍,实现以及应用
本文主要内容: 管程(Monitor)介绍 管程实现 管程应用 一.管程(Monitor)介绍 1.1 管程 前一篇文章介绍了信号量以及使用,信号量已经提供了一个方便且高效的进程同步机制,但是信号量有 ...
- super调用父类的属性方法
super:可以用来修饰属性 方法 构造器 当子类与父类中有同名的属性时,可以通过 super.此属性 显式的调用父类声明的属性 若想调用子类的同名的属性“this.此属性” 2.当子类重 ...
- Fish eating fruit 沈阳网络赛(树形dp)
Fish eating fruit \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 大体的题意就是给出一棵树,求每一对点之间的距离 ...
随机推荐
- MySQL索引使用以及优化
优化后台业主评价服务人员运行缓慢. 案发现场:后台业主评价服务人员列表页以及搜索页运行缓慢.运行时间为24074ms. 排查过程: 1.代码开头加时间,结束加时间.看运行了多少秒. 2.给评价 ...
- [USACO09NOV]灯Lights
题目描述 Bessie and the cows were playing games in the barn, but the power was reset and the lights were ...
- Uva 796 Critical Links (割边+排序)
题目链接: Uva 796 Critical Links 题目描述: 题目中给出一个有可能不连通的无向图,求出这个图的桥,并且把桥按照起点升序输出(还有啊,还有啊,每个桥的起点要比终点靠前啊),这个题 ...
- C# 输出控制台结果到文件
StreamWriter sw = new StreamWriter(@"c:\output.txt"); Console.SetOut(sw); Console.WriteLin ...
- PostgreSQL 流复制+高可用
QA PgPool-II 同步 Postgresql X1 服务器准备 192.168.59.121 PostgreSQL10 192.168.59.120 PGPool-II 3.7 X2 安装Po ...
- javascript 数字日期格式转换为中文
写一个函数,把数字日期如2014-06-21转换为 二零一四年六月二十一日星期三 function convert(dateStr) { var dict = { "0": &qu ...
- 02使用常规步骤编译NanoPiM1Plus的Android4.4.2
02使用常规步骤编译NanoPiM1Plus的Android4.4.2 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/5 17:51 版本 ...
- 人人都能读懂的css3 3d小demo
css3 3d案例总结 最近入坑 Web 动画,所以把自己的学习过程记录一下分享给大家.就把最近做的比较好的给大家分享下 1.旋转拼图 首先看下效果 代码主要由HTML和CSS3组成,应该说还是比较简 ...
- UVM基础之---------Reporting Classes
Reporting 类提供了一组工具用于格式化报告输出 report机制大概包括四个主要的类uvm_report_object,uvm_report_handler, uvm_report_serve ...
- mysql 存储引擎学习
现在我们常用的MySQL存储引擎主要是两种:InnoDB and MyISAM. 1.MyISAM 执行效率高 不支持事务 不支持外键 每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同, ...