传送门

可以考虑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的更多相关文章

  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

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

  5. [luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)

    传送门 由于 Di 只有 3 种情况,那么就很简单了 f[i][j][0] 表示前 i 个,且第 i 个变成 j 的 递增序列最小修改次数 f[i][j][1] 表示前 i 个,且第 i 个变成 j ...

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

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

  7. BZOJ 1711: [Usaco2007 Open]Dining吃饭

    1711: [Usaco2007 Open]Dining吃饭 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 902  Solved: 476[Submit ...

  8. Bzoj1711 [Usaco2007 Open]Dining吃饭

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 872  Solved: 459 Description 农夫JOHN为牛们做了很好的食品,但是牛吃饭很挑食 ...

  9. hdu------(4302)Holedox Eating(树状数组+二分)

    Holedox Eating Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

随机推荐

  1. linux设置自动获取IP地址

    右键单击,选择设置 勾选桥接模式

  2. JVM实用参数(三)打印所有XX参数及值

    JVM实用参数(三)打印所有XX参数及值 原文地址:https://blog.codecentric.de/en/2012/07/useful-jvm-flags-part-3-printing-al ...

  3. GUI编程02

    1 编写一个导航栏 from tkinter import * root = Tk() root.title("测试") root.geometry("400x400+4 ...

  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 ...

  5. SVN资源库报错:Could not create the view: org.tigris.subversion.subclipse.ui.repository.RepositoriesView

    解决方法: 关闭正在运行的myeclipse,然后打开myeclipse安装路径(我的安装在c盘): c:\ProgramFiles\MyEclipse\MyEclipse Professional ...

  6. JavaPersistenceWithHibernate第二版笔记-第七章-003Mapping an identifier bag(@OrderColumn、@ElementCollection、@CollectionTable、、)

    一.结构 二.代码 1. package org.jpwh.model.collections.listofstrings; import org.jpwh.model.Constants; impo ...

  7. JavaPersistenceWithHibernate第二版笔记-第七章-002Mapping an identifier bag(@CollectionId、@ElementCollection、@CollectionTable、@Type)

    一.结构 A bag is an unordered collection that allows duplicate elements, like the java.util.Collection ...

  8. jemalloc和内存管里

    netty的buffer引入了缓冲池.该缓冲池实现使用了jemalloc的思想.为了看懂这块代码学写了内容分配的知识.这里讲的内存分配是堆的内存分配,其他内容本文不会涉及. 内存分配是面向虚拟内存的而 ...

  9. HTML相关知识和经验的碎片化记录

    1.标签input在type="file"时,name是必须属性 <form id="MainFileUpload" name="MainFil ...

  10. TestNG入门

    在Eclipse中安装TestNG 打开Eclipse   Help ->Install New Software ,   然后Add   "http://beust.com/ecli ...