【题解】洛谷P3205【HNOI2010】合唱队
2024-10-08 10:09:30
洛谷 P3205:https://www.luogu.org/problemnew/show/P3205
复习区间DPing
思路
把理想队列拆分成
- 第一个和后面几个 划分成求后面几个的理想队列
- 最后一个和前面几个 划分成求前面几个的理想队列
样例:1701 1702 1703 1704
- 把1701拿出来 求1702 1703 1704的理想队列
- 把1704拿出来 求1701 1702 1703的理想队列
因此需要两个数组来划分阶段
f[i][j]为可以排成理想队列中[i,j]区间 且以最后一个排进去是第i人的初始队列种数。
g[i][j]为可以排成理想队列中[i,j]区间 且以最后一个排进去是第j人的初始队列种数。
就可以得出数组f的两种情况:
前一个排进去的人是i+1 当前人插到最左边
if(q[i]<q[i+1])
f[i][j]=(f[i][j]+f[i+1][j])%MOD;
前一个排进去的人是j 当前人插到最左边
if(q[i]<q[j])
f[i][j]=(f[i][j]+g[i+1][j])%MOD;
同理可得数组g的两种情况:
前一个排进去的人是i 当前人插到最右边
if(q[i]<q[j])
g[i][j]=(g[i][j]+f[i][j-1])%MOD;
前一个排进去的人是j-1 当前人插到最右边
if(q[j-1]<q[j])
g[i][j]=(g[i][j]+g[i][j-1])%MOD;
答案存在f[1][n]+g[1][n]中
代码
#include<iostream>
#include<cstdio>
using namespace std;
#define maxn 1010
#define MOD 19650827
int n;
int q[maxn];
int f[maxn][maxn],g[maxn][maxn];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
cin>>q[i];
for(int i=;i<=n;i++)
f[i][i]=;//初始化本身为一种
for(int i=n-;i>=;i--)
for(int j=i+;j<=n;j++)
{
if(q[i]<q[i+])//i+1是从队首取的所以+f[i+1][j]
f[i][j]=(f[i][j]+f[i+][j])%MOD;
if(q[i]<q[j])//j是从队尾取的所以+g[i+1][j]
f[i][j]=(f[i][j]+g[i+][j])%MOD;
if(q[i]<q[j])//i是从队首取的所以+f[i][j-1]
g[i][j]=(g[i][j]+f[i][j-])%MOD;
if(q[j-]<q[j])//j-1是从队尾取的所以+g[i][j-1]
g[i][j]=(g[i][j]+g[i][j-])%MOD;
}
printf("%d",(f[][n]+g[][n])%MOD);
}
最新文章
- IIS请求筛选模块被配置为拒绝超过请求内容长度的请求
- PS 使用首记 修改png图片的颜色
- String中的Indexof,LastIndexOf, Indexofany,LastIndexOfAny 的区别
- java-web-j2e学习建议路线
- git config配置文件 (共有三个配置文件)
- Transition 1
- 开源mp3播放器--madplay 编译和移植 简记
- cmd输入svn提示svn不是内部或外部命令
- Java字符串格式化记录
- .NET Core/.NET之Stream简介
- spring-springmvc-jdbc小案例
- 2017-2018-2 20165316 实验三《敏捷开发与XP实践》实验报告
- vue 要点
- vue 引用公共方法(例子:截取字符串固定字数,其余显示...)
- 【网络知识】【1】http、tcp/udp、soap的区别
- hdu6121 Build a tree 模拟
- asp搭建网站
- Vue.js:组件
- 容器基础(八): 使用docker swarm部署程序
- mysql: 模糊查询 feild like keyword or feild like keyword , concat(feild1,feild2,feild3) like keyword
热门文章
- 案例43-crm练习获取客户列表使用struts2
- TOJ 2815 Connect them (kruskal+并查集)
- LeetCode 319 ——Bulb Switcher——————【数学技巧】
- springboot整合mongo多数据源
- C++程序设计基础(8)main函数
- bzoj 5217: [Lydsy2017省队十连测]航海舰队
- 读《Wireshark网络分析就这么简单》读书笔记
- 简单的Extjs中的Combox选择下拉框使用
- Base class for cloning an object in C#
- Use the list and while to Build Shop car