BZOJ1996 HNOI2010合唱队(区间dp)
设f[i][j][0/1]表示i~j这段区间上一次选择的是最左/最右人的方案数。转移显然。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
#define P 19650827
int n,a[N],f[N][N][];
void inc(int &x,int y){x+=y;if (x>=P) x-=P;}
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj1996.in","r",stdin);
freopen("bzoj1996.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<=n;i++) f[i][i][]=;
for (int k=;k<=n;k++)
for (int i=;i<=n-k+;i++)
{
int j=i+k-;
if (a[i]<a[i+]) inc(f[i][j][],f[i+][j][]);
if (a[i]<a[j]) inc(f[i][j][],f[i+][j][]);
if (a[j]>a[j-]) inc(f[i][j][],f[i][j-][]);
if (a[j]>a[i]) inc(f[i][j][],f[i][j-][]);
}
cout<<(f[][n][]+f[][n][])%P;
return ;
}
BZOJ1996 HNOI2010合唱队(区间dp)的更多相关文章
- P3205 [HNOI2010]合唱队[区间dp]
		
题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为Hi米(1000<=Hi<= ...
 - [HNOI2010]合唱队 区间DP
		
---题面--- 题解: 偶然翻到这道题,,,就写了. 观察到一个数被插在哪里只受前一个数的影响,如果明确了前一个数是哪个,那么我们就可以确定大小关系,就可以知道当前这个数插在哪里,而上一个插入的数就 ...
 - 【BZOJ1996】【HNOI2010】合唱队 [区间DP]
		
合唱队 Time Limit: 4 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Output Sample ...
 - BZOJ1996:[HNOI2010]CHORUS 合唱队(区间DP)
		
Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Solution 辣鸡guide真难用 ...
 - LG3205/BZOJ1996 「HNOI2010」合唱队  区间DP
		
区间DP 区间DP: 显然是一个区间向左右拓展形成的下一个区间,具有包含关系,所以可以使用区间DP. 状态设计: 考虑和关路灯一样设计状态 因为不知道当前这个区间是从哪个区间拓展而来,即不知道这个区间 ...
 - [HNOI2010]CHORUS 合唱队 (区间DP)
		
题目描述 对于一个包含 NN 个整数的数列 AA ,我们可以把它的所有元素加入一个双头队列 BB . 首先 A1A1 作为队列的唯一元素,然后依次加入 A2∼ANA2∼AN ,如果 Ai<Ai− ...
 - 【BZOJ1996】[Hnoi2010]chorus 合唱队 区间DP
		
[BZOJ1996][Hnoi2010]chorus 合唱队 Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Ou ...
 - BZOJ1996 合唱队 区间DP
		
OJ地址:http://www.lydsy.com/JudgeOnline/problem.php?id=1996 设dp(i,j,k)代表在理想结果中[i,j]段最后添加的是i或j(k=0or1) ...
 - 洛谷P3205合唱队——区间DP
		
题目:https://www.luogu.org/problemnew/show/P3205 枚举点,分类为上一个区间的左端点或右端点,满足条件便+=即可: 注意不要重复(当l=2时). 代码如下: ...
 
随机推荐
- 【转载】GC基本算法及C++GC机制
			
原文: GC基本算法及C++GC机制 阅读目录 前言 基本概念 有向可达图与根集 三种基本的垃圾收集算法及其改进算法 1.引用计数算法 2. Mark & Sweep 算法 3. 节点复制算法 ...
 - GDAL中通过GDALDriver类的Create函数实现图像的保存
			
GDAL中除了读取各种类型的图像外,也可以实现对各种图像的保存操作,具体实现测试代码如下: int test_gadl_GDALDataset_write() { const char* image_ ...
 - kobject和kset的一些学习心得
			
#include <linux/module.h> #include <linux/kernel.h> #include <linux/kobject.h> #in ...
 - Keil5的设置
			
目录 编码格式 字体大小 代码颜色 编码格式 有时候用keil打开工程的时候,发现中文注释是乱码的格式,这是因为编码格式方式不对造成的.可以通过设置不同的编码方式来解决. 点击Edit->Con ...
 - fiddler的断点使用
			
功能 用于修改数据 1.断点设置请求之前--修改请求数据 2.断点设置在响应时--对响应的数据修改 已中断的会话最前面的图标为红色的带箭头的标志 设置断点方法 1.菜单栏:rules->auto ...
 - LJ语录
			
"保持安静,不要打扰我睡觉." ( 半分钟后) "哎呦喂~可以睡觉喽~" "考场上遇到这种题目,你们应该高兴." "因为考场上那群 ...
 - ADO.Net之SqlConnection、 Sqlcommand的应用
			
ADO.Net之SqlConnection. Sqlcommand的应用 SqlConnection 的介绍与应用 1.介绍与作用 SqlConnection是ADO.NET中的连接类. 使用sqlc ...
 - linux同步软件
			
linux同步软件:scp,rsync,inotify,sersync 1.scp: scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式 ...
 - 产品需求文档(PRD)的写作 【转】
			
产品需求文档(PRD)的写作 一.文章的摘要介绍 无论我们做什么事都讲究方式方法,写产品需求文档(以下称PRD文档)也是如此,之前我通过四篇文章分享了自己写PRD文档的一些方法,而这一篇文章主要是 ...
 - USACO 1.5.4 Checker Challenge跳棋的挑战(回溯法求解N皇后问题+八皇后问题说明)
			
Description 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子. 列号 0 1 2 3 4 5 6 ...