BZOJ1996 [Hnoi2010]chorus 合唱队
很容易想到区间DP
然后发现这个区间只和圆序列的最后一个数有关,而原序列的最后一个数只可能是现在区间的头或者尾
令$f[i][j][0/1]$表示在区间$[i, j]$之间,原序列的最后一个数是当前区间的头/尾的总答案数
于是只要讨论$a[i], a[i + 1], a[j - 1], a[j]$之间的关系搞一搞就可以了
/**************************************************************
Problem: 1996
User: rausen
Language: C++
Result: Accepted
Time:112 ms
Memory:8700 kb
****************************************************************/ #include <cstdio>
#include <cstring> using namespace std;
const int N = (int) 1e3 + ;
const int mod = ; int n, a[N];
int f[N][N][], ans; int main() {
int i, j, len;
scanf("%d", &n);
if (n == ) {
puts("");
return ;
}
for (i = ; i <= n; ++i) scanf("%d", a + i);
for (i = ; i < n; ++i)
f[i][i + ][] = f[i][i + ][] = bool(a[i] < a[i + ]);
for (len = ; len <= n; ++len)
for (i = ; i <= n - len + ; ++i) {
j = i + len - , f[i][j][] = f[i][j][] = ;
if (a[j] > a[j - ]) f[i][j][] += f[i][j - ][];
if (a[j] > a[i]) f[i][j][] += f[i][j - ][];
if (a[i] < a[i + ]) f[i][j][] += f[i + ][j][];
if (a[i] < a[j]) f[i][j][] += f[i + ][j][];
f[i][j][] %= mod, f[i][j][] %= mod;
}
ans = (f[][n][] + f[][n][]) % mod;
printf("%d\n", ans);
return ;
}
BZOJ1996 [Hnoi2010]chorus 合唱队的更多相关文章
- bzoj千题计划211:bzoj1996: [Hnoi2010]chorus 合唱队
http://www.lydsy.com/JudgeOnline/problem.php?id=1996 f[i][j][0/1] 表示已经排出队形中的[i,j],最后一个插入的人在[i,j]的i或j ...
- BZOJ1996:[HNOI2010]CHORUS 合唱队(区间DP)
Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Solution 辣鸡guide真难用 ...
- BZOJ1996: [Hnoi2010]chorus 合唱队 (DP)
就是想水一发 #include <stdio.h> #include <algorithm> #include <iostream> using namespace ...
- 【BZOJ1996】[Hnoi2010]chorus 合唱队 区间DP
[BZOJ1996][Hnoi2010]chorus 合唱队 Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Ou ...
- bzoj1196:[Hnoi2010]chorus 合唱队
这数据范围明显的区间dp啊...然而据说二维会wa...那就写三维把... #include<cstdio> #include<cstring> #include<cct ...
- BZOJ 1996: [Hnoi2010]chorus 合唱队(dp)
简单的dp题..不能更水了.. --------------------------------------------------------------- #include<cstdio&g ...
- 【BZOJ】1996: [Hnoi2010]chorus 合唱队【区间dp】
1996: [Hnoi2010]chorus 合唱队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2088 Solved: 1371[Submit][ ...
- bzoj 1996: [Hnoi2010]chorus 合唱队
Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Source 因为只会在区间的两端进行 ...
- 【洛谷P3205】[HNOI2010]CHORUS 合唱队
合唱队 区间DP f[l][r][0/1]表示生成目标序列中的区间[l,r],最后一个数是a[l]/a[r] 的方案数 边界: f[i][i][0]=1 转移: f[l][r][0]=(a[l]< ...
随机推荐
- 20145320 《Java程序设计》第8周学习总结
20145320 <Java程序设计>第8周学习总结 教材学习内容总结 15.1日志 java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件,就可以在标准ja ...
- 【NFC】Android NFC API Reference中英文
0 Near Field Communication Near Field Communication (NFC) is a set of short-range wireless technol ...
- SGU 455 Sequence analysis(Cycle detection,floyd判圈算法)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=455 Due to the slow 'mod' and 'div' operati ...
- Android Studio 常见问题之Rendering Problems
1.有时会出现下面的问题: 可以按如下解决 点击任何一项即可
- 鸟哥的linux私房菜学习记录之系统设定工具与硬件检测
这部分没啥用,就不记录了,关于服务器的在服务器篇
- textarea 多行文本保存数据到DB,取出后恢复换行
Steps: 1.保存到数据库之前把textarea中的换行字符转换为<br>. var dbStr = textareaStr.replace(/\n|\r\n/g,"< ...
- [已解决]Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
以Eclipse版本[Version: Luna Release (4.4.0),]为例, 依次打开:Window >show view > other > Maven Reposi ...
- HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而HTT ...
- LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”
出现这类问题一般是由于所运行的项目是VC6(或者vs2003)创建的,而后又用VS2005或者更高版本工具打开项目导致的,原因都是因为LIBCD.lib文件被更改了.要解决问题的话,只要在链接设置那里 ...
- 如何利用.snk文件生成DLL文件中的Publickeytoken
1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...