P2896 [USACO08FEB]一起吃饭Eating Together
可以考虑DP
设 f [ i ] [ 1/2/3 ] [ 0/1 ] 表示当前考虑到第 i 头牛,打算让当前位置的编号变成 1/2/3,并且打算让整段序列上升/下降 0/1
然后就对每种情况慢慢考虑转移就行了
可以发现第一维可以直接优化掉,然后空间就是 O(1),时间就是 O(n)
太简单就不用注释了吧...
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
int n,f[][];
int main()
{
int a;
n=read();
while(n--)
{
a=read();
if(a==)
{
f[][]=min(f[][],min(f[][],f[][]))+;
f[][]=min(f[][],f[][])+;
f[][]=min(f[][],min(f[][],f[][]));
f[][]=min(f[][],f[][])+;
f[][]=f[][]+;
continue;
}
if(a==)
{
f[][]=min(f[][],min(f[][],f[][]))+;
f[][]=min(f[][],f[][]);
f[][]=f[][]+;
f[][]=min(f[][],min(f[][],f[][]))+;
f[][]=min(f[][],f[][]);
f[][]=f[][]+;
continue;
}
f[][]=min(f[][],min(f[][],f[][]));
f[][]=min(f[][],f[][])+;
f[][]=f[][]+;
f[][]=min(f[][],min(f[][],f[][]))+;
f[][]=min(f[][],f[][])+;
}
int ans=1e9+;
for(int i=;i<=;i++) for(int j=;j<=;j++) ans=min(ans,f[i][j]);
printf("%d",ans);
return ;
}
P2896 [USACO08FEB]一起吃饭Eating Together的更多相关文章
- 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
https://www.luogu.org/problem/show?pid=2896 题目描述 The cows are so very silly about their dinner partn ...
- [luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)
传送门 由于 Di 只有 3 种情况,那么就很简单了 f[i][j][0] 表示前 i 个,且第 i 个变成 j 的 递增序列最小修改次数 f[i][j][1] 表示前 i 个,且第 i 个变成 j ...
- super调用父类的属性方法
super:可以用来修饰属性 方法 构造器 当子类与父类中有同名的属性时,可以通过 super.此属性 显式的调用父类声明的属性 若想调用子类的同名的属性“this.此属性” 2.当子类重 ...
- BZOJ 1711: [Usaco2007 Open]Dining吃饭
1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 902 Solved: 476[Submit ...
- Bzoj1711 [Usaco2007 Open]Dining吃饭
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 872 Solved: 459 Description 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食 ...
- hdu------(4302)Holedox Eating(树状数组+二分)
Holedox Eating Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
随机推荐
- linux设置自动获取IP地址
右键单击,选择设置 勾选桥接模式
- JVM实用参数(三)打印所有XX参数及值
JVM实用参数(三)打印所有XX参数及值 原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-3-printing-al ...
- GUI编程02
1 编写一个导航栏 from tkinter import * root = Tk() root.title("测试") root.geometry("400x400+4 ...
- MySQL update select组合
update t_news inner join (select readCount from t_news t2 where t2.id=1) t1 set t_news.readCount = t ...
- SVN资源库报错:Could not create the view: org.tigris.subversion.subclipse.ui.repository.RepositoriesView
解决方法: 关闭正在运行的myeclipse,然后打开myeclipse安装路径(我的安装在c盘): c:\ProgramFiles\MyEclipse\MyEclipse Professional ...
- JavaPersistenceWithHibernate第二版笔记-第七章-003Mapping an identifier bag(@OrderColumn、@ElementCollection、@CollectionTable、、)
一.结构 二.代码 1. package org.jpwh.model.collections.listofstrings; import org.jpwh.model.Constants; impo ...
- JavaPersistenceWithHibernate第二版笔记-第七章-002Mapping an identifier bag(@CollectionId、@ElementCollection、@CollectionTable、@Type)
一.结构 A bag is an unordered collection that allows duplicate elements, like the java.util.Collection ...
- jemalloc和内存管里
netty的buffer引入了缓冲池.该缓冲池实现使用了jemalloc的思想.为了看懂这块代码学写了内容分配的知识.这里讲的内存分配是堆的内存分配,其他内容本文不会涉及. 内存分配是面向虚拟内存的而 ...
- HTML相关知识和经验的碎片化记录
1.标签input在type="file"时,name是必须属性 <form id="MainFileUpload" name="MainFil ...
- TestNG入门
在Eclipse中安装TestNG 打开Eclipse Help ->Install New Software , 然后Add "http://beust.com/ecli ...