poj3671
首先容易想到的是LIS,但是n<=30000,所以肯定要优化;
壮哉单调队列又登场了;
然后再找一个最长不上升序列并求两者最大值即可,复杂度O(n logn);
应该说这是解题通法了,但再回头看题目,这道题中,1<=di<=3这个条件没有用
于是很容易想到,还是以最长不下降序列为例:
明显序列结尾元素只有3种可能:以1开头,以2开头,以3开头(全是3);
设d[1],d[2],d[3]代表上述3种可能;
则从后往前,对于当前数t,d[t]=max{d[t],d[k]+1} (t<=k<=3)
则复杂度优化为O(n);
var d:array[..] of longint;
a:array[..] of integer;
n,i,t,j:longint;
function max(a,b:longint):longint;
begin
if a>b then max:=a else max:=b;
end; begin
readln(n);
for i:= to n do
readln(a[i]);
for i:=n downto do
begin
t:=a[i];
for j:=t to do
d[t]:=max(d[t],d[j]+);
end;
writeln(n-max(d[],d[]));
end.
poj3671的更多相关文章
- POJ3671 Dining Cows
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8126 Accepted: 3441 Description The c ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- 【POJ水题完成表】
题目 完成情况 poj1000:A+B problem 完成 poj1002:电话上按键对应着数字.现在给n个电话,求排序.相同的归一类 完成 poj1003:求最小的n让1+1/2+1/3+...+ ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
随机推荐
- phpstorm配置取消掉63342
http://ask.csdn.net/questions/171665
- makefile:4: *** missing separator. Stop.
今天在编写蜂鸣器的驱动程序时,makefile文件是这样: CROSS=arm-linux- all: beep beep: beep.c $(CROSS)gcc -o beep beep.c $(C ...
- Catalyst揭秘 Day2 Catalyst源码初探
Catalyst揭秘 Day2 Catalyst源码初探 这节课从源码角度来讲catalyst. 首先有一个观点要澄清,就是技术不是越底层就越是性能和效率更高.因为除了指令执行性能以外,更重要的是架构 ...
- [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程
[Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...
- easyui 多行文本框 Multiline TextBox
<input class="easyui-textbox" data-options="multiline:true" value="This ...
- SAX EntityResolver 的作用
1.1 何为 EntityResolver : 官方解释: 如果SAX应用程序叙事实现自定义处理外部实体,则必须实现此接口, 并使用setEntityResolver方法向SAX 驱动器注册一个实例. ...
- Linux环境变量的设置和查看方法
Linux环境变量的设置和查看方法 1. 显示环境变量HOME [root@AY1404171530212980a0Z ~]# echo $HOME /root 2. ...
- idea14使用maven创建web工程
参考博客:http://geeksun.iteye.com/blog/2179658 http://www.bubuko.com/infodetail-387387.html ------------ ...
- Matlab划分测试集和训练集
% x是原数据集,分出训练样本和测试样本 [ndata, D] = size(X); %ndata样本数,D维数 R = randperm(ndata); %1到n这些数随机打乱得到的一个随机数字序列 ...
- hdu 1028
递推 #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> ...