传送门

dp好题。


设f[i][j]f[i][j]f[i][j]表示iii个数结尾是jjj且结尾两个数递增的方案数。

那么显然可以对称的定义出g[i][j]g[i][j]g[i][j]表示iii个数结尾是jjj且结尾两个数递减的方案数。

那么显然有f[i][j]=g[i][i−j+1]f[i][j]=g[i][i-j+1]f[i][j]=g[i][i−j+1](考虑把第一个序列中每个数k都变成i-k+1)

且Ans=∑i=1n(f[n][i]+g[n][i])=2∗∑i=1nf[n][i]Ans=\sum _{i=1} ^n(f[n][i]+g[n][i])=2*\sum _{i=1} ^nf[n][i]Ans=∑i=1n​(f[n][i]+g[n][i])=2∗∑i=1n​f[n][i]

由于f[i][j]=∑k=1j−1g[i−1][k]f[i][j]=\sum _{k=1} ^{j-1} g[i-1][k]f[i][j]=∑k=1j−1​g[i−1][k]

=>f[i][j]=∑k=1j−1f[i−1][i−1−k+1]f[i][j]=\sum _{k=1} ^{j-1} f[i-1][i-1-k+1]f[i][j]=∑k=1j−1​f[i−1][i−1−k+1]

=>f[i][j]=∑k=1j−1f[i−1][i−k]f[i][j]=\sum _{k=1} ^{j-1} f[i-1][i-k]f[i][j]=∑k=1j−1​f[i−1][i−k]

=>f[i][j]=∑k=i−j+1i−1f[i−1][k]f[i][j]=\sum _{k=i-j+1} ^{i-1} f[i-1][k]f[i][j]=∑k=i−j+1i−1​f[i−1][k]

=>f[i][j−1]=∑k=i−j+2i−1f[i−1][k]f[i][j-1]=\sum _{k=i-j+2} ^{i-1} f[i-1][k]f[i][j−1]=∑k=i−j+2i−1​f[i−1][k]

=>f[i][j]−f[i][j−1]=f[i−1][i−j+1]f[i][j]-f[i][j-1]=f[i-1][i-j+1]f[i][j]−f[i][j−1]=f[i−1][i−j+1]

=>f[i][j]=f[i][j−1]+f[i−1][]i−j+1f[i][j]=f[i][j-1]+f[i-1][]i-j+1f[i][j]=f[i][j−1]+f[i−1][]i−j+1

推导真妙啊。

注意要特判只有一个的情况。

以及要用滚动数组优化空间233

代码:

#include<bits/stdc++.h>
#define N 4205
using namespace std;
int f[2][N],p,n,ans=0,tmp=0;
int main(){
	scanf("%d%d",&n,&p);
	if(n==1)return cout<<1,0;
	f[tmp][1]=1;
	for(int i=2;i<=n;++i){
		tmp^=1;
		for(int j=1;j<=i;++j)f[tmp][j]=(f[tmp][j-1]+f[tmp^1][i-j+1])%p;
	}
	for(int i=1;i<=n;++i){
		ans+=f[tmp][i];
		if(ans>=p)ans-=p;
	}
	ans<<=1;
	if(ans>=p)ans-=p;
	cout<<ans;
	return 0;
}

2018.10.20 bzoj1925: [Sdoi2010]地精部落(dp)的更多相关文章

  1. [BZOJ1925][SDOI2010]地精部落(DP)

    题意 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N ...

  2. BZOJ 1925: [Sdoi2010]地精部落( dp )

    dp(i,j)表示1~i的排列中, 以1~j为开头且开头是下降的合法方案数 这种数列具有对称性, 即对于一个满足题意且开头是上升的n的排列{an}, 令bn = n-an+1, 那么{bn}就是一个满 ...

  3. bzoj1925 [Sdoi2010] 地精部落【DP】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1925 一个多月前“过”了这道题,还自欺欺人地认为懂了这道题,这直接导致了昨晚多校联测2的T3 ...

  4. [bzoj1925][Sdoi2010]地精部落_递推_动态规划

    地精部落 bzoj-1925 Sdoi-2010 题目大意:给你一个数n和模数p,求1~n的排列中满足每一个数的旁边两个数,要么一个是边界,要么都比它大,要么都比它小(波浪排列个数) 注释:$1\le ...

  5. BZOJ1925 [Sdoi2010]地精部落 【dp】

    题目 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N ...

  6. BZOJ1925[SDOI2010]地精部落

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  7. 【czy系列赛】czy的后宫4 && bzoj1925 [Sdoi2010]地精部落

    [问题描述] czy有很多妹子,妹子虽然数量很多,但是质量不容乐观,她们的美丽值全部为负数(喜闻乐见). czy每天都要带N个妹子到机房,她们都有一个独一无二的美丽值,美丽值为-1到-N之间的整数.他 ...

  8. [bzoj1925][Sdoi2010][地精部落] (序列动态规划)

    Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...

  9. BZOJ1925 [Sdoi2010]地精部落 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1925 题意概括 给出n,n<=4200,问1~n这些数的排列中,有多少满足一下性质: 性质: ...

随机推荐

  1. 巧用JLINK来实现nrf51822的蓝牙设备流水号

    项目需求:在蓝牙广播的时候名字为 SN_设备流水号(如SN_00000001). 我们可以在原来的代码中进行一下修改和增加 ; 备注这个地址0X0001B160根据自己具体情况来设定 /**@brie ...

  2. REST 服务器调试 RESTDebugger.exe 和浏览器测试

    开发一个简单的rest服务器, 增加了一些函数,比如返回系统当前时间 如何验证是否正确呢,不需要自己编写客户端调用程序了, 可以直接使用RESTDebugger.exe D:\Program File ...

  3. XE6 任务栏 控件

    WIN7/WIN8 ONLY,鼠标放在任务栏上,预览程序界面,用此控件可以预览安装进度条. Taskbar1->ProgressMaxValue = 100;  Taskbar1->Pro ...

  4. MySQL数据类型的长度

    MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length).VARCHAR(Length).TINYINT(Length). SMALLINT(Length).ME ...

  5. display_css

    display所有可选值: none block inline inline-block inherit initial unset compact & marker list-item ru ...

  6. 趣味编程:静夜思(JOOL版)

    JOOL <dependency> <groupId>org.jooq</groupId> <artifactId>jool</artifactI ...

  7. 写一个singleton

    第一种:饱汉模式 public class SingleTon { private SingleTon(){ } //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间 private f ...

  8. scala--函数式对象

    函数式对象 这次写点关于函数式对象的吧 class Rational(n:Int, d:Int) { // n,d 为类参数,scala会创造出同样带有这两个参数的主构造器.如果这个类没有主体,可以不 ...

  9. ArcGIS案例学习笔记1_1

    ArcGIS案例学习笔记1_1 联系方式:谢老师,135_4855_4328, xiexiaokui#qq.com 时间:第一天上午 准备 0.U盘复制ArcGIS培训*** 1.练习数据不要放到桌面 ...

  10. Mycat入门及简单规则

    以下都来自网络: 官网: http://www.mycat.io/ 官网配置文件解析: https://github.com/MyCATApache/Mycat-Server/wiki/9.0-%E6 ...