P3205 [HNOI2010]合唱队

题意:

有n个数,然后插入队伍中,如果队列当前为空,则直接插入,然后每次插入和上一次插入的比较,如果大于,插入当前队列的最右侧,如果小于,插入当前队列的最左侧
现在给你一个插入后的队形,问有多少种插入方式?

题解:

我们这样分析,对于区间[l,r],最近一次插入的要么是第l位要么就是第r位
所以我们设f[i][j]表示可以排成理想队列中[i,j]区间,且以最后一个排进去是第i人的初始队列种数。
设g[i][j]表示可以排成理想队列中[i,j]区间,且以最后一个排进去是第j人的初始队列种数。
我们考虑f[i][j],第i位是本次刚插入的,那上一个插入的位置可能是在第i+1位或者是第j位,第i+1位的话就是上一次插入的是最左侧,第j位的话就是上一次插入的是最右侧,所以f[i][j]可以由f[i+1][j]和g[i+][j]得到,前提是a[i]要小于a[i+1],或者a[i]小于a[j],因为第i位插入到最左侧,所以肯定是小于上次插入
同理对g[i][j]也可以推导出相应公式
最终为:

代码:

#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\n",a,b);
typedef long long ll;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=1e3+9;
const int mod=19650827;
int a[maxn];
int f[maxn][maxn],g[maxn][maxn];
int main()
{int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++)f[i][i]=1;for(int len=1;len<=n;len++){for(int i=1;i+len-1<=n;i++){int j=i+len-1;if(a[i]<a[i+1])//如果上一次进来的是第i+1位 f[i][j]+=f[i+1][j];if(a[i]<a[j])//如果上一次进来的是第j位 f[i][j]+=g[i+1][j];if(a[j]>a[i])//如果上一次进来的是第 i位 g[i][j]+=f[i][j-1];if(a[j]>a[j-1])//如果上一次进入的是第j-1位 g[i][j]+=g[i][j-1];f[i][j]%=mod;g[i][j]%=mod;}}cout<<(f[1][n]+g[1][n])%mod; return 0;
}

P3205 [HNOI2010]合唱队相关推荐

  1. 洛谷——P3205 [HNOI2010]合唱队

    P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...

  2. 洛谷P3205 [HNOI2010]合唱队 题解

    洛谷P3205 [HNOI2010]合唱队 题解 题目链接:P3205 [HNOI2010]合唱队 题意: 为了在即将到来的晚会上有更好的演出效果,作为 AAA 合唱队负责人的小 A 需要将合唱队的人 ...

  3. 【区间dp】洛谷 P3205 [HNOI2010]合唱队

    P3205 [HNOI2010]合唱队 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意:有一个初始队形,这个初始队形可以是任意队形 给定一个理想队形,问你通过以下的排列方式有几 ...

  4. 洛谷 P3205 [HNOI2010]合唱队 解题报告

    P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...

  5. 【动态规划dp】区间DP模板 Acwing 282. 石子合并 | P3205 [HNOI2010]合唱队

    区间DP 模板 282. 石子合并 #include<iostream> #include<cmath> #include<algorithm> #include& ...

  6. 洛谷 P3205 [HNOI2010]合唱队(区间dp)

     题目链接: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205  思路: 这题我是看了题解才做出来的,贴一下这位大佬的博客题解 P320 ...

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

    题目链接:[HNOI2010]合唱队 - 洛谷 这道题也是一道区间DP题,因为他满足大区间包含小区间,换句话说就是大区间的答案可以由小区间得到,就比如i~j的方案可以由i+1~j和i~j-1得到,所以 ...

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

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

  9. 洛谷P3205 [HNOI2010]合唱队

    题目 为了在即将到来的晚会上有更好的演出效果,作为 AAA 合唱队负责人的小 A 需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共 nn 个人,第 ii 个人的身高为 h_ihi​ 米(10 ...

最新文章

  1. 初步了解Linux创建文件系统命令
  2. 两点C#的propertyGrid的使用心得
  3. 复制粘贴不连续单元格_表格筛选状态下怎么复制粘贴数据
  4. NYOJ975 - 关于521
  5. GetCurrentTime(),GetLocalTime(),GetSystemTime()之间的区别
  6. 广告JS代码效果大全
  7. 为什么RSA 公钥指数(e=65537)
  8. win10安装Tomcat10详细教程
  9. 强化学习 Sarsa 实战GYM下的CliffWalking爬悬崖游戏
  10. 中国姿势矫正设备市场深度研究分析报告
  11. 八叉树体素遍历近邻体素搜索
  12. D2 归来, 特此YC一篇
  13. 【教学】深度学习小项目汇总_含源代码包运行
  14. 【每日早报】2019/09/27
  15. Vue+ElementUI中 el-dialog弹框蒙层问题
  16. Rserve的R语言客户端RSclient
  17. 网络测速linux,Linux系统下的网络带宽测速
  18. Loopback 录屏和录音频(Mac录屏教程/录视频教程/Loopback 教程)
  19. 懒人外贸工具 外贸批量远程工具
  20. 【JQuery】Datatables插件的基本使用方法

热门文章

  1. 岛国小姐姐来例假时,男朋友背着她偷偷查手机......
  2. 你这么爱听歌,一定活得很难过吧 | 今日最佳
  3. 每日一笑 | 男朋友整天沉迷游戏怎么办...?
  4. 数学思维比数学运算更重要
  5. 10分钟读懂人工智能、机器学习到底有什么关系
  6. android宿舍管理系统源码,基于android操作系统的手机宿舍管理系统使用手册
  7. java 四字节uid,Java入门教程-序列化版本号serialVersionUID的作用
  8. python地理空间分析指南pdf邓世超_Python地理空间分析指南(第2版)源代码.zip
  9. python中random什么意思_python中的random
  10. c语言字符比较思路,C语言讲解思路资料