我们可以发现,对于最后队列的一段区间[i,j],不论这一段区间如何插入,除了最后一个插入的对象外,剩下的对后续插入没有影响,这启发我们可以用DP来解决这一问题。

  w[i][j][0..1]代表区间[i,j],最后一个插入的元素是i(0)或者j(1)的方案数,那么就可以根据判断当前插入元素与上一元素的大小关系很容易的转移了。

  

/**************************************************************
Problem:
User: BLADEVIL
Language: Pascal
Result: Accepted
Time: ms
Memory: kb
****************************************************************/ //By BLADEVIL
const
d39 =; var
n :longint;
i, j, l :longint;
h :array[..] of longint;
w :array[..,..,..] of longint;
ans :longint; begin
read(n);
for i:= to n do read(h[i]); for i:= to n do
begin
w[i][i][]:=;
w[i][i][]:=;
end;
for l:= to n- do
for i:= to n-l do
begin
j:=i+l;
if h[i+]>h[i] then w[i][j][]:=(w[i][j][]+w[i+][j][]) mod d39;
if i+<>j then if h[j]>h[i] then w[i][j][]:=(w[i][j][]+w[i+][j][]) mod d39;
if h[j]>h[i] then w[i][j][]:=(w[i][j][]+w[i][j-][]) mod d39;
if i<>j- then if h[j]>h[j-] then w[i][j][]:=(w[i][j][]+w[i][j-][]) mod d39;
end;
ans:=(w[][n][]+w[][n][]) mod d39;
writeln(ans);
end.

bzoj 1996 DP的更多相关文章

  1. bzoj 3622 DP + 容斥

    LINK 题意:给出n,k,有a,b两种值,a和b间互相配对,求$a>b$的配对组数-b>a的配对组数恰好等于k的情况有多少种. 思路:粗看会想这是道容斥组合题,但关键在于如何得到每个a[ ...

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

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

  3. BZOJ 1996: [Hnoi2010]chorus 合唱队(区间dp)

    题目: https://www.lydsy.com/JudgeOnline/problem.php?id=1996 题解: 这题刚拿到手的时候一脸懵逼qwq,经过思考与分析(看题解),发现是一道区间d ...

  4. bzoj 1996 区间dp

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

  5. BZOJ 1996 合唱队(DP)

    考虑从最后的队形开始依次还原最初的队形. 对于当前的队形,要么选最左边的,要么选最右边的. 如果选了左边的,那么下次选择的一定是大于它的.右边的同理. 所以定义dp[mark][l][r]为区间[l, ...

  6. BZOJ - 1003 DP+最短路

    这道题被马老板毒瘤了一下,TLE到怀疑人生 //然而BZOJ上妥妥地过了(5500ms+ -> 400ms+) 要么SPFA太玄学要么是初始化block被卡到O(n^4) 不管了,不改了 另外D ...

  7. BZOJ 2431 & DP

    题意:求逆序对数量为k的长度为n的排列的个数 SOL: 显然我们可以对最后一位数字进行讨论,判断其已经产生多少逆序对数量,然后对于前n-1位同样考虑---->每一个长度的排列我们都可以看做是相同 ...

  8. bzoj 1791 DP

    首先对于一棵树我们可以tree_dp来解决这个问题,那么对于环上每个点为根的树我们可以求出这个树的一端为根的最长链,并且在tree_dp的过程中更新答案.那么我们对于环,从某个点断开,破环为链,然后再 ...

  9. bzoj 1996: [Hnoi2010]chorus 合唱队

    Description Input Output Sample Input 4 1701 1702 1703 1704 Sample Output 8 HINT Source 因为只会在区间的两端进行 ...

随机推荐

  1. windows 无法上网问题解决一例

    dhcp获取ip地址,网卡驱动和ip地址获取正常,ping www.baidu.com可以ping通,但是打开浏览器或者qq上网不行,而且系统有提示腾讯管家出错的信息,初步怀疑360和腾讯管家打架导致 ...

  2. Qt Qml 汽车仪表

    上一个原文连接http://blog.csdn.net/z609932088/article/details/53946245 参考资料连接:链接: https://pan.baidu.com/s/1 ...

  3. Struts2(二.用户登录模块)

    1.编写Javabean /src/myuser/User.java 在strut1中,Javabean需要继承于struts1 api中的ActionForm类.struts2没有此要求 strut ...

  4. python学习总结----异常处理

    相关概念 - 错误:程序运行之前的语法错误,如:关键字.缩进不齐.括号不成对. - 异常:在程序运行过程中出现的问题,如:除数为0.对象属性不存在等. 异常处理 - 说明:异常处理可以理解为特殊的流程 ...

  5. 05-Mysql数据库----补充内容

    数据库命名规则: 数据库命名规则: 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 基本上跟python或者 ...

  6. resetroot_169route_python2(用于ubuntu12.04和14.04,centos系列)

    #!/usr/bin/python import os import json import subprocess from cloudinit.sources.DataSourceConfigDri ...

  7. 问题 A: 分数矩阵

    题目描述 我们定义如下矩阵:1/1 1/2 1/31/2 1/1 1/21/3 1/2 1/1矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增.请求出这个矩阵的总和. 输入 输入包含多组测 ...

  8. Daily Scrum02 12.01

    今天是2013年12月的第一天,希望大家都有一个新的开始,一起努力!     Member Today's Task Tomorrow's Task 李孟 Task 856: 熟悉单元测试方法熟悉单元 ...

  9. pta数组作业

    7-2 设计思路:本题要求处理数据并输出最大值及其对应的最小下标,首先输入n,然后定义一个长度为n的数组用于存储数据,定义m=a[0],n=0,从a[1]开始与m进行比较,若某项大于m,就把该项的值赋 ...

  10. Codeforces Round #401 (Div. 1) C(set+树状数组)

    题意: 给出一个序列,给出一个k,要求给出一个划分方案,使得连续区间内不同的数不超过k个,问划分的最少区间个数,输出时将k=1~n的答案都输出 比赛的时候想的有点偏,然后写了个nlog^2n的做法,T ...