题目如下:

题目描述

为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形。假定合唱队一共N个人,第i个人的身高为Hi米(1000<=Hi<=2000),并已知任何两个人的身高都不同。假定最终排出的队形是A 个人站成一排,为了简化问题,小A想出了如下排队的方式:他让所有的人先按任意顺序站成一个初始队形,然后从左到右按以下原则依次将每个人插入最终棑排出的队形中:

-第一个人直接插入空的当前队形中。

-对从第二个人开始的每个人,如果他比前面那个人高(H较大),那么将他插入当前队形的最右边。如果他比前面那个人矮(H较小),那么将他插入当前队形的最左边。

当N个人全部插入当前队形后便获得最终排出的队形。

例如,有6个人站成一个初始队形,身高依次为1850、1900、1700、1650、1800和1750,

那么小A会按以下步骤获得最终排出的队形:

1850

  • 1850 , 1900 因为 1900 > 1850

  • 1700, 1850, 1900 因为 1700 < 1900

  • 1650 . 1700, 1850, 1900 因为 1650 < 1700

  • 1650 , 1700, 1850, 1900, 1800 因为 1800 > 1650

  • 1750, 1650, 1700,1850, 1900, 1800 因为 1750 < 1800

因此,最终排出的队形是 1750,1650,1700,1850, 1900,1800

小A心中有一个理想队形,他想知道多少种初始队形可以获得理想的队形

输入输出格式

输入格式:
输出格式:

注意要mod19650827

输入输出样例

输入样例#1:

4
1701 1702 1703 1704

输出样例#1:

8

说明

30%的数据:n<=100

100%的数据:n<=1000

这道题是区间DP,所以第一层循环区间长度(len),第二层循环左端点(l),那么可算得右端点(r)为len+l-1

然后得到dp方程:

f[i][j][0/1]

0表示加在左边   1表示加在右边

粘代码:

//By ChriscalL
#include<iostream>
#include<cstdio>
#define MAXN 1005
#define mod 19650827
using namespace std;
int a[MAXN];
int f[MAXN][MAXN][2]={0};//最后一维表示这个数字在左边为0,右边为1
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);f[i][i][0]=1;}for(int i=2;i<=n;i++) {//枚举长度for(int l=1;l<=n;l++){int r=i+l-1;if(a[l]<a[l+1])  f[l][r][0]=(f[l+1][r][0]+f[l][r][0])%mod;if(a[l]<a[r])    f[l][r][0]=(f[l+1][r][1]+f[l][r][0])%mod;if(a[r]>a[r-1])  f[l][r][1]=(f[l][r-1][1]+f[l][r][1])%mod;if(a[r]>a[l])    f[l][r][1]=(f[l][r-1][0]+f[l][r][1])%mod;}}int ans=(f[1][n][0]+f[1][n][1])%mod;printf("%d",ans);return 0;
}

ok 石家庄五一集训第一题(其实是第二题,第一题没传博客)

结束,打板!

洛谷 3205 合唱队 区间DP相关推荐

  1. 洛谷P3205合唱队——区间DP

    题目:https://www.luogu.org/problemnew/show/P3205 枚举点,分类为上一个区间的左端点或右端点,满足条件便+=即可: 注意不要重复(当l=2时). 代码如下: ...

  2. 洛谷--橙色百道DP总结

    最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...

  3. 洛谷P2879 [USACO07JAN]区间统计Tallest Cow

    洛谷P2879 [USACO07JAN]区间统计Tallest Cow 题目描述 给出牛的可能最高身高,然后输入m组数据 a b,代表a,b可以相望,最后求所有牛的可能最高身高输出 输入输出格式 输入 ...

  4. P3205 [HNOI2010]合唱队 (区间dp)

    [HNOI2010]合唱队 - 洛谷 分析: 根据题意我们发现,小a每次排队的时候,会出现两种情况 当前排入的人比初始队列中前一个人矮,排到最左边 当前排入的人比初始队列中前一个人高,排到最右边 现在 ...

  5. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp

    cf传送门 P3643 [APIO2016]划艇 文章目录 题意: 思路: 题意: aia_iai​在[li,ri][l_i,r_i][li​,ri​]等概率随机选一个数,求aaa数组不增的概率. 思 ...

  6. 洛谷 P1890 gcd区间

    P1890 gcd区间 题目提供者 洛谷OnlineJudge 标签 数论(数学相关) 难度 普及/提高- 题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R] ...

  7. 洛谷 P2657 (数位DP)

    ### 洛谷 P2657 题目链接 ### 题目大意:给你一个数的范围 [A,B] ,问你这段区间内,有几个数满足如下条件: 1.两个相邻数位上的数的差值至少为 2 . 2.不包含前导零. 很简单的数 ...

  8. 洛谷 Golden Sword(dp,优先队列优化【含板子】)|| 补充练习:洛谷 跳房子

    题目链接: 「SWTR-03」Golden Sword - 洛谷 思路: 设表示放第i个原料,锅里共有 j 个时的耐久度之和. 容易知道dp方程为,其中 这样就可以写出暴力dp的代码如下:(需要枚举i ...

  9. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股 ...

最新文章

  1. 关于AXI DMA CYCLIC 调试过程中的问题
  2. IT 巡检内容、方法大全
  3. 4.WaitForSingleObject函数分析
  4. php读取excel中数据库,ThinkPHP 框架实现的读取excel导入数据库操作示例
  5. java线程和线程池的使用
  6. 时隔两年,盘点ECCV 2018影响力最大的20篇论文
  7. 199. Binary Tree Right Side View
  8. golang 中io包用法(一)
  9. LeetCode 338. 比特位计数(动态规划)
  10. “敏捷开发”怎么就“敏捷”了
  11. golang库文件收集
  12. android微信支付+指纹支付密码错误,为什么微信付款无法指纹支付密码?如何开启指纹支付?...
  13. 计算机出现假桌面怎么解决办法,W10电脑下“AppHangXProcB1”导致桌面频繁假死如何解决?...
  14. 华硕主板的网络唤醒(Wake-on-LAN)
  15. 计算机表格数据怎么样汇总,Excel 中如何汇总相同结构的多个工作表数据
  16. jQuery实用网页元素颜色修改插件
  17. 缩略图查看器(Thumbs.DB Viewer) 1.2.0.80
  18. [原创] 4步骤,让你的皮肤晶莹剔透(2分钟学会)
  19. 阿里巴巴Java开发手册.pdf
  20. 【网页设计】期末大作业html+css(我的音乐网站)

热门文章

  1. 计算机专业硕士阶段学哪些课程,计算机科学与技术学科学术型硕士研究生培养方案...
  2. 电子科大格院18级电子信息导论调研报告-关于朝阳食堂食物浪费现象调查研究报告
  3. 小米手机广告关闭攻略
  4. linux查看虚拟列表,C++类中虚表的详细讲解
  5. 高质量App的架构设计与思考!
  6. ubuntu系统简单尝试
  7. Day16(PHP操作MySQL)
  8. 可变光程UV-Vis分光光度计
  9. 怎么把字母缩小当符号_全脑学拼音怎么操作,有资料有方法
  10. 模拟电路53(高阶有源滤波电路)