首页 > 其他分享 >地精部落

地精部落

时间:2024-04-14 12:01:15浏览次数:16  
标签:题意 部落 int ll 相邻 序列 dp

分析

本来以为是纯组合数的题,但我找不到规律,然后就发现全网都是dp的解法

我们可以设 dp[i][j] 表示 i 个数组成的 开头为 j 且 j 为波峰的排列种数

然后我们经过思考之后就不难发现组成的序列会有以下的几条性质

  • 一条序列具有对称性,将其前后调换位置后任满足题意

  • 如果序列中 x 与 x+1 不相邻,则将二者交换位置后任然满足题意

    为了便于理解,我们来简单的证明一下性质二

    如果 x 是波峰,那他相邻的两个一定小于 x+1;

    如果 x 是波谷,且 x+1 与 x 不相邻,那他相邻的两个最小是 x+2 和 x+3,一定大于 x+1

  • 一条序列的连续子序列任满足题意

根据这三条性质,我们就可以推出转移方程

dp[i][j] += dp[i-1][(i-1)-(j-1)+1] % p;

代码:
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int N = 4300;
ll dp[2][N], n, p;

int main(){
	ll x = 0;
	scanf("%lld%lld",&n, &p);
	dp[0][2] = 1;
	for(int i=3; i<=n; i++){
		x ^= 1;
		for(int j=2; j<=i; j++){
			dp[x][j] = (dp[x][j-1] + dp[x^1][i-j+1]) % p;
		}
	}
	ll res = 0;
	for(int i=2; i<=n; i++){
		res = (res + dp[x][i]) % p;
	}
	res = (res * 2 % p + p) % p;
	printf("%lld",res);
	return 0;
}

标签:题意,部落,int,ll,相邻,序列,dp
From: https://www.cnblogs.com/w1210323/p/18133948

相关文章

  • L2-024 部落
    注意merge的时候如果p1和p2相等及时返回否则死循环了,代码有问题而不是算法超时。#define_CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>usingnamespacestd;#definelllonglongintparent[10010],deep[10010];intgetf(intx){ inty=x; while(parent[y]!=-......
  • IT部落格网页设计图
    ......
  • 程序员部落酋长 Joel 之洞见
    软件开发随想集——“很久以前,在一个很遥远、很遥远的星系中,……”[3]好吧,实际上没有那么久啦,那是在2000年接近年底的时候,Apress出版公司正式运营刚满一年。当时,我们只是一家非常小的计算机书籍出版商,毫无名气。那一年,我们计划出版的书籍只有很少几本,大概只相当于Apress那......
  • 量产部落厉害了,这就是为什么都去量产部落下载SSD固件?
    众所周知,量产部落网是一个专业的开卡软件下载网站,提供了最新的软件版本和安全的下载渠道,而且开卡软件都是原厂发布,可以保证兼容性和稳定性。大家可以在这个网站上获取到大量专业的U盘、固态硬盘开卡软件(也叫量产工具)。有需要的话还是推荐去注册一下,的确很方便快捷,毕竟目前国内国......
  • 【PHP兴趣部落-05】html table(表格)
    一、简介:表格由<table>标签来定义。每个表格均有若干行(由<tr>标签定义),每行被分割为若干单元格(由<td>标签定义)。字母td指表格数据(tabledata),即数据单元格的内容。数据单元格可以包含文本、图片、列表、段落、表单、水平线、表格等等。二、代码<!DOCTYPEhtml><html......
  • 【PHP兴趣部落-09】递归转义
    一、定义addslashes()函数返回在预定义字符之前添加反斜杠的字符串。预定义字符是:单引号(’)双引号(”)反斜杠(\)NULL注释:默认地,PHP对所有的GET、POST和COOKIE数据自动运行addslashes()。所以您不应对已转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可......
  • 【PHP兴趣部落-08】PHP中时区设置的三种方法(timezone)
    一、三种方法php中时区默认是格林尼治时间,和中国时差八个小时。现在根据需要将时间设置为中国时间,下面整理了三种方法。方法1:最好的方法在php.ini里加上找到date.timezone项,设置date.timezone=“Asia/Shanghai”,重启环境就ok了。方法2:在需要用到这些时间函数的时候,在页面添......
  • 【PHP兴趣部落-04】html 表单中常用元素
    一、简介html表单中常用的一些元素:比如按钮,输入框、单选框、复选框等控件元素。表单标签:<form>元素标签:<inputtype=”类型”name=”控件名”value=”值”>三、代码<html><head><title>html基本元素学习</title></head><!--表单--><formaction="ok.html"met......
  • 团体天梯练习 L2-024 部落
    L2-024部落在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数\(N\)(\(≤1......
  • 23-4-15--并查集--部落
    在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数......