1996: [Hnoi2010]chorus 合唱队

Time Limit: 4 Sec  Memory Limit: 64 MB
Submit: 1850  Solved: 1197
[Submit][Status][Discuss]

Description

Input

Output

Sample Input

4
1701 1702 1703 1704

Sample Output

8

HINT

题解:
这个题目,首先分析一下题目的性质,对于一个排列,我们要保证可以形成最终的序列,那么就必须要保证他们的相对位置不变,看一下数据范围n^2,就可以知道这个题目应该要记一下当前dp的左右端点。
当然,发现这样并不能转移,发现对于一个元素,如果处理到当前为的答案序列已经确定,他前面的数确定,那么他的位置也是确定的,所以还要记一下他当前前面的是谁,所以设dp[i][j]0/1]表示已经形成了答案串的i~j部分,上一个点是i还是j的方案数,转移十分简单。注意初始化的时候只能初始话一边(至于为什么博主也不知道,只是知道如果初始化两边,就会是答案的两倍,然后还要拓展欧几里德求逆)。
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#define MAXN 1100
#define mod 19650827
#define ll long long
using namespace std;
ll dp[MAXN][MAXN][2];
int n,h[MAXN];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&h[i]);for(int i=1;i<=n;i++) dp[i][i][0]=1;for(int len=2;len<=n;len++)for(int i=1;i<=n;i++){int j=i+len-1;if(j>n) break;if(h[i]<h[i+1]) dp[i][j][0]=dp[i][j][0]+dp[i+1][j][0];if(h[i]<h[j]) dp[i][j][0]=dp[i][j][0]+dp[i+1][j][1];if(h[j]>h[i]) dp[i][j][1]=dp[i][j][1]+dp[i][j-1][0];if(h[j]>h[j-1]) dp[i][j][1]=dp[i][j][1]+dp[i][j-1][1];if(dp[i][j][0]>=mod) dp[i][j][0]-=mod;if(dp[i][j][1]>=mod) dp[i][j][1]-=mod;}printf("%lld",(dp[1][n][0]+dp[1][n][1])%mod);return 0;
}

转载于:https://www.cnblogs.com/renjianshige/p/7701410.html

1996: [Hnoi2010]chorus 合唱队相关推荐

  1. BZOJ 1996 [Hnoi2010]chorus 合唱队

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1996 题解 区间dp,记f[i][j]表示[i,j][i,j][i,j]区间,最后一个取 ...

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

    Description 为了在即将到来的晚会上有吏好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身髙为Hi米(1000<= ...

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

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

  4. bzoj1996 [Hnoi2010]chorus 合唱队 区间dp

    题目隐藏了一个性质,就是新加入的不是在区间最左边,就是在最右边 所以就直接根据最左边和最右边的大小关系转移就可以了 #include<iostream> #include<cstdi ...

  5. BZOJ ac100题存档

    不知不觉AC100题了,放眼望去好像都是水题.在这里就做一个存档吧(特别感谢各位大神尤其是云神http://hi.baidu.com/greencloud和丽洁姐http://wjmzbmr.com/ ...

  6. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

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

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

  8. P3205 [HNOI2010]合唱队

    P3205 [HNOI2010]合唱队 题意: 有n个数,然后插入队伍中,如果队列当前为空,则直接插入,然后每次插入和上一次插入的比较,如果大于,插入当前队列的最右侧,如果小于,插入当前队列的最左侧 ...

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

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

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

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

最新文章

  1. oracle 查询字段除了as,Oracle中怎样查询数据表的哪个字段是主键
  2. 先进先出算法(FIFO)——页面置换
  3. c语言学习之基础知识点介绍(十二):结构体的介绍
  4. PHP中 $_SERVER的信息汇总
  5. Gradle的好处:运行单个测试
  6. php进程间通信 yoc_续上篇Swoole多进程数据共享的问题
  7. batch spring 重复执行_重复的Spring Batch作业实例
  8. BZOJ3884 上帝与集合的正确用法 【欧拉定理】
  9. C++实现简单的二叉树
  10. string的operate+=
  11. eclipse中项目已经启动,可是tomcat一直显示在启动中
  12. windows 设置目录不可执行程序
  13. python如何定义类_python中如何定义类
  14. 最新版QQ机器人搭建保姆教程,保熟【最新beta2版本】
  15. 电脑蓝屏代码:nvlddmkm.sys的处理方法
  16. 文件存取服务器是用的什么,什么是文件存储?
  17. 深度学习相关概念:权重初始化
  18. Windows下安装Nexus私服及更新索引
  19. mermaid流程图工具_基于 Mermaid 的时序图、流程图和甘特图
  20. Day1 命名规范 静态函数 构造析构 指针引用

热门文章

  1. Shell常用快捷键
  2. mysql-备份和还原(普通还原和binlog还原)
  3. JS-商品图片点击轮换
  4. 【转】html5离线储存,application cache,manifest使用体验
  5. 解决C#中ListView闪烁的办法
  6. asp.net 后台方法和js方法互动
  7. DataGrid的动态绑定问题(二)
  8. Shutdown In Period 1.0
  9. 线上只执行一次的脚本编写注意事项
  10. 【转】JMeter学习(十八)JMeter测试Java(二)