【BZOJ1996】[Hnoi2010]chorus 合唱队

Description

Input

Output

Sample Input

4
1701 1702 1703 1704

Sample Output

8

HINT

题解:用f[i][j][0/1]表示从i开始往后j个人,最后一个人是i/i+j-1,的方案数。$O(n^2)$DP即可。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int P=19650827;
int n;
int f[1010][1010][2],v[1010];
int main()
{
scanf("%d",&n);
int i,j;
for(i=1;i<=n;i++) scanf("%d",&v[i]),f[0][i][0]=1;
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(v[j]<v[j+1]) f[i][j][0]=(f[i][j][0]+f[i-1][j+1][0])%P;
if(v[j]<v[j+i]) f[i][j][0]=(f[i][j][0]+f[i-1][j+1][1])%P;
if(v[j+i]>v[j]) f[i][j][1]=(f[i][j][1]+f[i-1][j][0])%P;
if(v[j+i]>v[j+i-1]) f[i][j][1]=(f[i][j][1]+f[i-1][j][1])%P;
}
}
printf("%d",(f[n-1][1][0]+f[n-1][1][1])%P);
return 0;
}

【BZOJ1996】[Hnoi2010]chorus 合唱队 区间DP的更多相关文章

  1. BZOJ1996:[HNOI2010]CHORUS 合唱队(区间DP)

    Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Solution 辣鸡guide真难用 ...

  2. [HNOI2010]CHORUS 合唱队 (区间DP)

    题目描述 对于一个包含 NN 个整数的数列 AA ,我们可以把它的所有元素加入一个双头队列 BB . 首先 A1A1 作为队列的唯一元素,然后依次加入 A2∼ANA2∼AN ,如果 Ai<Ai− ...

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

  4. 【BZOJ1996】【HNOI2010】合唱队 [区间DP]

    合唱队 Time Limit: 4 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Output Sample ...

  5. LG3205/BZOJ1996 「HNOI2010」合唱队 区间DP

    区间DP 区间DP: 显然是一个区间向左右拓展形成的下一个区间,具有包含关系,所以可以使用区间DP. 状态设计: 考虑和关路灯一样设计状态 因为不知道当前这个区间是从哪个区间拓展而来,即不知道这个区间 ...

  6. BZOJ1996 [Hnoi2010]chorus 合唱队

    很容易想到区间DP 然后发现这个区间只和圆序列的最后一个数有关,而原序列的最后一个数只可能是现在区间的头或者尾 令$f[i][j][0/1]$表示在区间$[i, j]$之间,原序列的最后一个数是当前区 ...

  7. BZOJ1996: [Hnoi2010]chorus 合唱队 (DP)

    就是想水一发 #include <stdio.h> #include <algorithm> #include <iostream> using namespace ...

  8. 【BZOJ】1996: [Hnoi2010]chorus 合唱队【区间dp】

    1996: [Hnoi2010]chorus 合唱队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2088  Solved: 1371[Submit][ ...

  9. BZOJ 1996: [Hnoi2010]chorus 合唱队(dp)

    简单的dp题..不能更水了.. --------------------------------------------------------------- #include<cstdio&g ...

随机推荐

  1. Mongodb的CRUD

    1.查询 使用db.collection.find()方法进行查询.db.collection.findOne()返回单个文档.mongodb的所有查询操作都是针对单个collection > ...

  2. Javascript 中使用Json的四种途径

    1.jQuery插件支持的转换方式: 复制代码代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 ...

  3. Lintcode---实现 Trie

    实现一个 Trie,包含 insert, search, 和 startsWith 这三个方法. 注意事项 你可以假设所有的输入都是小写字母a-z. 您在真实的面试中是否遇到过这个题? Yes 样例 ...

  4. mysql 查询锁,解锁语句

    一:锁表: 锁定数据表,避免在备份过程中,表被更新 mysql>LOCK TABLES tbl_name READ; 为表增加一个写锁定: mysql>LOCK TABLES tbl_na ...

  5. zookeeper(四):核心原理(Watcher、事件和状态)

    zookeeper主要是为了统一分布式系统中各个节点的工作状态,在资源冲突的情况下协调提供节点资源抢占,提供给每个节点了解整个集群所处状态的途径.这一切的实现都依赖于zookeeper中的事件监听和通 ...

  6. oracle TABLE ACCESS BY INDEX ROWID 你不知道的索引回表-开发系列(三)

    1 引言 近期系统常常提示一个sql查询时间过长的问题,看了一下就是一个每天依照时间戳统计前一天量的sql. 表总的数据量为53483065. 语句例如以下: select count(x.seria ...

  7. Android 开发手记二 C可执行程序编译实例(转帖)

    http://www.cnblogs.com/gaozehua/archive/2011/09/02/2164077.html

  8. 凑成整数x----二进制枚举

    给n个数,给定x. 用这n个数求和凑成x,问有多少种凑法. #include<bits/stdc++.h> using namespace std; int main() { int n, ...

  9. [J2EE]MyBatis HelloWorld

    一.MyBatis简单介绍 iBatis是apche的一个开源项目.2010年迁移到google code后改名为MyBatis,2013年前已到github.MyBatis是一个基于java的持久层 ...

  10. Solr学习01:Solr基础知识

    一.什么是solr 首先,要了解下Solr是什么,以下是官方的描述. Solr是一个来自Apache Lucence项目,是一个热门开源的企业级搜索平台.为目前世界上相当多的大型互联网站点提供搜索和导 ...