Luogu 3205 [HNOI2010]合唱队
初赛滚粗的我含着眼泪写代码……
设$f_{l, r, 0/1}$表示$[l, r]$的区间的队伍排列好,且最后一个插进去的在左边$(0)$/右边$(1)$的方案数,那么有初态$f_{i, i, 0} = 1$。
转移的时候只要对比一下左边的数和右边的数和最后一个插入的数的大小关系就可以确定转移到$0/1$了。
时间复杂度$O(n^2)$。
Code:
![](/assets/blank.gif)
![](/assets/blank.gif)
#include <cstdio> #include <cstring> using namespace std;const int N = 1005; const int P = 19650827;int n, a[N], f[N][N][2];inline void read(int &X) {X = 0; char ch = 0; int op = 1;for(; ch > '9' || ch < '0'; ch = getchar())if(ch == '-') op = -1;for(; ch >= '0' && ch <= '9'; ch = getchar())X = (X << 3) + (X << 1) + ch - 48;X *= op; } inline void inc(int &x, int y) {x += y;if(x >= P) x -= P; }int main() {read(n);for(int i = 1; i <= n; ++i) {read(a[i]);f[i][i][0] = 1;//f[i][i][1] = 1; }for(int len = 1; len < n; ++len) {for(int l = 1; l + len - 1 <= n; ++l) {int r = l + len - 1;if(r + 1 <= n) {if(a[r + 1] > a[l]) inc(f[l][r + 1][1], f[l][r][0]);if(a[r + 1] > a[r]) inc(f[l][r + 1][1], f[l][r][1]);}if(l - 1 >= 1) {if(a[l - 1] < a[l]) inc(f[l - 1][r][0], f[l][r][0]);if(a[l - 1] < a[r]) inc(f[l - 1][r][0], f[l][r][1]);}}}int ans = f[1][n][0] + f[1][n][1];if(ans >= P) ans -= P;printf("%d\n", ans);return 0; }
View Code
转载于:https://www.cnblogs.com/CzxingcHen/p/9785113.html
Luogu 3205 [HNOI2010]合唱队相关推荐
- 【区间dp】洛谷 P3205 [HNOI2010]合唱队
P3205 [HNOI2010]合唱队 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意:有一个初始队形,这个初始队形可以是任意队形 给定一个理想队形,问你通过以下的排列方式有几 ...
- 洛谷 P3205 [HNOI2010]合唱队(区间dp)
题目链接: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205 思路: 这题我是看了题解才做出来的,贴一下这位大佬的博客题解 P320 ...
- 洛谷——P3205 [HNOI2010]合唱队
P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...
- P3205 [HNOI2010]合唱队
P3205 [HNOI2010]合唱队 题意: 有n个数,然后插入队伍中,如果队列当前为空,则直接插入,然后每次插入和上一次插入的比较,如果大于,插入当前队列的最右侧,如果小于,插入当前队列的最左侧 ...
- 洛谷P3205 [HNOI2010]合唱队 题解
洛谷P3205 [HNOI2010]合唱队 题解 题目链接:P3205 [HNOI2010]合唱队 题意: 为了在即将到来的晚会上有更好的演出效果,作为 AAA 合唱队负责人的小 A 需要将合唱队的人 ...
- P3205 [HNOI2010]合唱队(区间)
题目链接:[HNOI2010]合唱队 - 洛谷 这道题也是一道区间DP题,因为他满足大区间包含小区间,换句话说就是大区间的答案可以由小区间得到,就比如i~j的方案可以由i+1~j和i~j-1得到,所以 ...
- P3205 [HNOI2010]合唱队 (区间dp)
[HNOI2010]合唱队 - 洛谷 分析: 根据题意我们发现,小a每次排队的时候,会出现两种情况 当前排入的人比初始队列中前一个人矮,排到最左边 当前排入的人比初始队列中前一个人高,排到最右边 现在 ...
- 洛谷 P3205 [HNOI2010]合唱队 解题报告
P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...
- 【动态规划dp】区间DP模板 Acwing 282. 石子合并 | P3205 [HNOI2010]合唱队
区间DP 模板 282. 石子合并 #include<iostream> #include<cmath> #include<algorithm> #include& ...
最新文章
- 微信公众平台向特定用户推送消息
- html css js实现快递单打印_JS与HTML、CSS实现2048小游戏(六)
- scala中_*的作用
- aliyun maven 添加jar_Maven介绍及安装
- 解读系统资质审批的相关政策
- ubuntu简易部署Python3编写的djangoWeb应用
- UltraEdit(UE编辑器)常用快捷键一览
- 使用sp_cycle_errorlog 命令清除sqlserver数据库错误日志
- 总结必须学习的10项.NET技术
- win7怎么看计算机信息,如何查看Win7版本信息
- 在Windows 10下配置 DirectX11 + Visual Studio 2017开发环境
- python关于二手房的课程论文_python爬取链家二手房信息
- 编码,隐匿在计算机软硬件背后的语言读书笔记(1)
- android4.4中添加方案,Android4.0-4.4 添加实体按键振动支持的方法(java + smali版本)
- 数据库原理与应用(Oracle) 笔记1 —— SQL语句和SQL函数
- 【中亦安图】Systemstate Dump分析经典案例(7)
- 计算捐款总量 (10 分)
- 在职研究生计算机专业好考么,湖南在职研究生计算机专业好考不
- 如何下载linux内核头文件,在Linux系统上安装Linux内核头文件的教程
- Google 推出浏览器版Google Voice
热门文章
- 大型三甲医院医疗体检信息管理系统源码 PEIS 体检科软件 CS
- 发起“元点计划”,非繁城品“环保+助学”彰显企业社会责任感
- 看到一个有关逻辑思维的视频,挺好的,分享一下
- 玩游戏也能学编程!少儿编程教育如何为中国AI时代“播种”?
- Ansible———创建用户、设置更改密码
- pythonwin10
- Rod cutting problem DP
- FPGA(Verilog)除法器设计实现(简易版验证代码)
- 使用fabricjs制作一个diy明信片功能
- GenVisR绘制瀑布图/突变图谱