[NOIP2004]合唱队形【动态规划】
来源:互联网 发布:java 文件夹监听 编辑:程序博客网 时间:2024/05/16 05:20
【问题描述】
【输入文件】
【输出文件】
解题思路:这题的方法还是比较明显的,就是经典的最长不降与不升子序列的结合,枚举1到n作为中间的人,中间为i时,DP求出1到i的最长不降子序列和i到n的最长不升子序列,注意求出来之后i一定要在序列中,然后不断更新答案即可。
代码(前几年的代码都年代久远了QAQ):
program chorus(input,output);var f:array[1..150]of longint;a,ff:array[1..150]of longint;i,n,k:longint;function dps(s,e:longint):longint;var i,j:longint;beginfor i:=s to e do for j:=s to i do if (a[j]<=ff[j]) thenff[i]:=ff[j]+1;dps:=0;for i:=s to e do if ff[i]>dps then dps:=ff[i];for i:=1 to n do ff[i]:=1;end;function dpj(s,e:longint):longint;var i,j:longint;beginfor i:=s to e do for j:=s to i do if(a[j]>a[i])and(ff[i]<=ff[j]) then ff[i]:=ff[j]+1;dpj:=0;for i:=s to e do if ff[i]>dpj then dpj:=ff[i];for i:=1 to n do ff[i]:=1;end;beginreadln(n);for i:=1 to n do read(a[i]);fillchar(f,sizeof(f),1);for i:=1 to n do ff[i]:=1;k:=maxlongint;for i:=1 to n do begin f[i]:=n-(dps(1,i)+dpj(i+1,n)); if f[i] end;writeln(k);end.
0 0
- [NOIP2004]合唱队形【动态规划】
- |Tyvj|NOIP2004|动态规划|P1067 合唱队形
- 合唱队形 动态规划
- 合唱队形-动态规划
- 动态规划--合唱队形
- 动态规划:合唱队形
- 合唱队形 动态规划
- NOIP2004 合唱队形
- [DP][NOIP2004] 合唱队形
- 【NOIP2004】合唱队形题解
- 【NOIP2004】合唱队形
- NOIP2004 合唱队形
- 合唱队形 noip2004 vijosp1098
- 动态规划试题:合唱队形
- 合唱队形(动态规划)
- 动态规划3:合唱队形
- 合唱队形(LIS) 动态规划
- 合唱队形(动态规划)
- oi,我的信仰
- CH Round#58 OrzCC杯NOIP模拟赛day2-颜色问题
- CH Round#58 OrzCC杯noip模拟赛day2-树的问题
- [NOIP2003]加分二叉树【动态规划】
- [NOIP2003]传染病控制【搜索】
- [NOIP2004]合唱队形【动态规划】
- [NOIP2004]虫食算【搜索】
- [NOIP2006]能量项链【动态规划】
- [NOIP2006]金明的预算方案【动态规…
- [NOIP2007]树网的核【搜索,最短路…
- [NOIP2008]传纸条【多维DP】
- [NOIP2009]最优贸易【spfa,dp,强联…
- [NOIP2009]靶形数独【搜索】
- [NOIP2010]乌龟棋【动态规划】