P3205 [HNOI2010]合唱队

news2024/9/22 8:25:27

[HNOI2010]合唱队

题目描述

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

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

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

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

例如,有 6 6 6 个人站成一个初始队形,身高依次为 1850 , 1900 , 1700 , 1650 , 1800 , 1750 1850, 1900, 1700, 1650, 1800, 1750 1850,1900,1700,1650,1800,1750
那么小 A 会按以下步骤获得最终排出的队形:

  • 1850 1850 1850

  • 1850 , 1900 1850, 1900 1850,1900,因为 1900 > 1850 1900 > 1850 1900>1850

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

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

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

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

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

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

请求出答案对 19650827 19650827 19650827 取模的值。

输入格式

第一行一个整数 n n n
第二行 n n n 个整数,表示小 A 心中的理想队形。

输出格式

输出一行一个整数,表示答案   m o d   19650827 \bmod 19650827 mod19650827 的值。

样例 #1

样例输入 #1

4
1701 1702 1703 1704

样例输出 #1

8

提示

对于 30 % 30\% 30% 的数据, n ≤ 100 n \le 100 n100
对于 100 % 100\% 100% 的数据, n ≤ 1000 n \le 1000 n1000 1000 ≤ h i ≤ 2000 1000 \le h_i \le 2000 1000hi2000

  • 这是一道比较入门的区间dp非常适合新手学习使用,首先看每一个人加入之和上一个人从哪加入的有关,当前人物放在哪和上一人的位置有关上一个人只有两种选择在左边或者在右边,这就需要我们做个比较。设置状态dp[i][j][0]表示在i,这个区间中最后一个人从左边加入dp[i][j][1]最后一个元素从右边加入的
    这样我们就很容易看出来状态转移方程
    在这里插入图片描述
#include <bits/stdc++.h>
using namespace std;
const int N = 2100;
typedef long long ll;
int n, m, k;
const int mod = 19650827;
int q[N];
int a[N];
int f[N][N][2];
int main() {

	cin >> n;
	for (int i = 1; i <= n; i++)cin >> a[i];

	for (int len = 1; len <= n; len++) {
		for (int i = 1; i + len - 1 <= n; i++) {
			int j = i + len - 1;
			if (len == 1)f[i][j][0]  = 1;//第一个人只能从左边或者右边进入
			else {
				if (a[i] < a[i + 1])
					f[i][j][0] += f[i + 1][j][0];
				if (a[i] < a[j])
					f[i][j][0] += f[i + 1][j][1];
				if (a[j] > a[j - 1])
					f[i][j][1] += f[i][j - 1][1];
				if (a[j] > a[i])
					f[i][j][1] += f[i][j - 1][0];
				f[i][j][1] %= mod;
                f[i][j][0] %= mod;
			}
		}
	}
	cout <<(f[1][n][0] + f[1][n][1])%mod;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java网络编程套接字

文章目录1、网络编程基础2、Socket套接字2.1 Java数据报套接字通信模型2.2 Java流式套接字通信模型2.3 Socket编程注意事项3、UDP数据报套接字编程4、TCP流式套接字编程1、网络编程基础 在没有网路之前&#xff0c;两个进程只能在同一主机上进行通信&#xff0c;但是无法跨距离…

【kubernetes篇】使用Nfs实现kubernetes持久化存储

引言 在kubernetes使用的过程中&#xff0c;有很多数据需要持久化保存。而kubernetes本身不能实现这样的功能&#xff0c;所以需要提供外部存储来实现。nfs网络文件系统&#xff0c;能良好支持pv动态创建等功能&#xff0c;是一个不错的持久化保存方式。今天将这一部分内容作以…

jsx代码如何变成dom

jsx代码如何变成dom一、三个问题考察对jsx的理解二、jsx的本质以及它和js之间是什么关系&#xff1f;2.1 jsx是什么2.2 和js的关系2.3 jsx的本质三、为什么要用jsx&#xff1f;不用会有什么后果四、jsx背后的功能模块是什么&#xff1f;这个功能模块都做了哪些事情&#xff1f;…

DVWA 之 SQL注入(非盲注)

文章目录SQL注入1.判断是否存在注入&#xff0c;注入是字符型还是数字型2.猜解SQL查询语句中的字段数3.确定显示的字段顺序4.获取当前数据库5.获取数据库中的表6.获取表中的字段名7.下载数据SQL注入 步骤&#xff1a; 1.判断是否存在注入&#xff0c;注入是字符型还是数字型 2…

数据库平滑扩容方案剖析

1. 扩容方案剖析 1.1 扩容问题 在项目初期&#xff0c;我们部署了三个数据库A、B、C&#xff0c;此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配&#xff0c;我们在Service服务层使用uid%3进行取模分片&#xff0c;从而将数据平均分配到三个数据库中。 如…

4-6 最小生成树Prim,Kruskal(贪心)

4.6最小生成树 Prim,Kruskal(贪心) 一、问题描述 设G (V,E)是无向连通带权图&#xff0c;即一个网络。E中每条边(u,v)的权为 c[u][v]。 如果G的子图G’是一棵包含G的所有顶点的树&#xff0c;则称G’为G的生成树。生成树上各边权的总和称为该生成树的耗费。 在G的所有生成树中…

java计算机毕业设计基于安卓Android的校园快药APP-药店管理app

项目介绍 本文介绍了校园快药APP软件开发建设的意义和国内外发展现状,然后详细描述了所开发手机APP的可行性分析,并分析了手机APP所要实现的功能。因为校园快药设施较多,而且人口密集,不能更好的管理校园快药,造成需要时患者不必要的伤亡,所以采用比较方便的、容易便携的手机AP…

[附源码]Python计算机毕业设计Excel操作题自动评分系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

基于PHP+MySQL的企业宣传展示网

随着互联网的发展,企业越来越重视网上宣传渠道了。谢现在各大企业都有了自己的官网,以达到宣传企业或方便客户了解企业的目的。PHP企业宣传展示网分为前台和后台两部分。前台不部分主要是让用户了解和查看及动态等信息,使用的后台部分主要是企业的管理人员对网站的信息进行管理…

股票系统接口是如何进行数据共享的?

股票系统接口系统在量化交易中常见的一种数据挖掘系统&#xff0c;就比如说&#xff0c;如果你想要从别的网站或服务器上获取资源或信息&#xff0c;别人是不会把数据库共享过来的&#xff0c;他只能给你提供一个他们写好的编程方法来获取数据。也就是说通过股票系统接口输入你…

springboot15:junit5的使用

1.测试平台Junit springboot新版使用junit 只需要标注一个注解SpringBootTest然后方法中标注Test即可 以前springboot的使用 比较困难 现在整合使用后 只需要编写测试方法Test写测试的逻辑&#xff0c;整个类具有spring的功能&#xff0c;比如事务&#xff08;测试完成后会自动…

补盲激光雷达「PK」4D成像雷达,车企会作何选择?

关于4D成像雷达和激光雷达的争论&#xff0c;在此之前&#xff0c;两方势力之间还是有些克制。「谁也不是替代谁」&#xff0c;成了各方一致的看法。目标&#xff0c;也很一致&#xff0c;就是补齐摄像头的物理性能缺陷。 比如&#xff0c;与激光雷达相比&#xff0c;4D成像雷…

Python之第十一章 面向对象 --- 基础

目录 1.面向对象编程思想 1.编程思想 2.面向过程编程思想 3.面向对象编程思想 例 面向对象报名案例分析 面向过程与面向对象的区别 2.面向对象专业术语 1.组成 2.对象&#xff08;object&#xff09; 3.类&#xff1a; 1.引入类的原因 2.定义&#xff1a; 3.类的定…

2022HDC见闻与新技术学习体验分享

一、创新照见未来&#xff0c;共建鸿蒙世界&#xff0c;主题演讲笔记 以创新照见未来&#xff0c;共建鸿蒙世界为主题的第四界HDC大会于2022年11月4日在东莞松山湖线上与线下同时开启。本次大会展示了鸿蒙生态的最新成果与发展规划。第一天的主题演讲中&#xff0c;华为发布了解…

06-HTTPS单向认证及Java案例

一、单向认证流程 单向认证流程中&#xff0c;服务器端保存着公钥证书和私钥两个文件&#xff0c;整个握手过程如下&#xff1a; 客户端发起建立HTTPS连接请求&#xff0c;将SSL协议版本的信息发送给服务器端&#xff1b;服务器端将本机的公钥证书&#xff08;server.crt&am…

Windows - WINS Service

WINS SERVICE配置工作任务 安装及配置 WINS 服务; 配置为DCserver 为主WINS服务器。 WINS server - Windows server 更新 1-1 查看计算机名称 1-2 命令查看计算机名称: win+R---->>powerShell---->>命令nbtstat -n 1-3 查

《FFmpeg Basics》中文版-05-裁剪视频

正文 裁剪视频意味着从输入到输出中选择想要的矩形区域而没有余数。 裁剪通常用于调整大小&#xff0c;填充和其他编辑。 裁剪基础知识 较老的FFmpeg版本有cropbottom、cropleft、cropright和croptop选项&#xff0c;但现在已弃用&#xff0c;并使用下表中描述的裁剪操作。 …

微服务分布式开源架构是什么?

微服务分布式开源架构跟单体应用比起来有着较大的优势&#xff0c;可以解决单体系统的不足之处&#xff0c;满足日益增多的业务量需求。那么&#xff0c;微服务分布式开源架构是什么&#xff1f;什么软件服务商的微服务架构比较适合&#xff1f; 一、微服务分布式开源架构是什么…

nmap各种扫描的注意事项

1) nmap -sS 192.168.0.100 TCP的SYN扫描&#xff0c;也称为stealth扫描&#xff0c;扫描时&#xff0c;发送一个SYN包&#xff0c;等待SYN/ACK响应&#xff0c;当能够收到SYN/ACK响应时&#xff0c;就认为该端口是开放的。SYN扫描是一个速度极快而且结果又准的扫描&#xff0…

Linux 进程通信深剖

目录传统艺能&#x1f60e;进程间通信&#x1f914;通信方式&#x1f914;管道&#x1f914;匿名管道&#x1f914;pipe&#x1f914;匿名管道使用&#x1f914;读写规则&#x1f914;管道特点&#x1f914;同步与互斥&#x1f60b;管道生命周期&#x1f60b;流式服务&#x1f…