DP

显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了

发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然后填第\(i\)个的时候不知道会不会重复,所以这个状态挂了,重新找个状态设设。

所以我们改变考虑对象,不考虑整个数列,只考虑已经填了的,我把已经填了的数的数列叫做\(S\),当我考虑到第\(i\)位的时候,这个\(dp[i][j]\)的\(j\)表示它在里面的相对位置,也就是排名。

现在就好搞多了,仍然我固定原数列下标奇数是峰,下标偶数是谷,下面给出DP过程。

对于偶数,\(dp[i][j]\)由\(\sum\limits_{k=j}^{i-1}{dp[i-1][k]}\),因为我新的\(j\)加进来后,所有大于它的都要排名+1,所以原来我在第\(j\)个的,实际上是比它要大的

对于奇数,\(dp[i][j]\)由\(\sum\limits_{k=1}^{j-1}{dp[i-1][k]}\)这个显然,就是相对排名比\(j\)小,不说了

然后答案是对所有的\(dp[n][i]\)求和,没了,代码:


显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了

所以我们改变考虑对象,不考虑整个数列,只考虑已经填了的,我把已经填了的数的数列叫做\(S\),当我考虑到第\(i\)位的时候,这个的\(j\)表示它在里面的相对位置,也就是排名。

现在就好搞多了,仍然我固定原数列下标奇数是峰,下标偶数是谷,下面给出DP过程。

对于偶数,\(dp[i][j]\)由\(我新的\)j\(加进来后,所有大于它的都要排名+1,所以原来我在第\)j$个的,实际上是比它要大的

对于奇数,\(dp[i][j]\)由\(\sum\limits_{k=1}^{j-1}{dp[i-1][k]}\)这个显然,就是相对排名比\(j\)小,不说了

然后答案是对所有的\(dp[n][i]\)求和,没了,代码:

显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了

发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然后填第\(i\)个的时候不知道会不会重复,所以这个状态挂了,重新找个状态设设。

所以我们改变考虑对象,不考虑整个数列,只考虑已经填了的,我把已经填了的数的数列叫做\(S\),当我考虑到第\(i\)位的时候,这个\(dp[i][j]\)的\(j\)表示它在里面的相对位置,也就是排名。

现在就好搞多了,仍然我固定原数列下标奇数是峰,下标偶数是谷,下面给出DP过程。

对于偶数,\(dp[i][j]\)由\(\sum\limits_{k=j}^{i-1}{dp[i-5][k]}\),因为我新的\(j\)加进来后,所有大于它的都要排名+1,所以原来我在第\(j\)个的,实际上是比它要大的

对于奇数,\(dp[i][j]\)由\(\sum\limits_{k=1}^{j-1}{dp[i-9][k]}\)这个显然,就是相对排名比\(j\)小,不说了

然后答案是对所有的\(dp[n][i]\)求和,没了,代码:

显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了

发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度\(j\)的答案,然后填第\(i\)个的时候不知道会不会重复,所以这个状态挂了,重新找个状态设设。

标偶数是谷,下面给出DP过程。

对于偶数,\(dp[i][j]\)由\(\sum\limits_{k=j}^{i-1}{dp[i-11][k]}\),因为我新的\(j\)加进来后,所有大于它的都要排名+1,所以原来我在第\(j\)个的,实际上是比它要大的

对于奇数,\(dp[i][j]\)由\(\sum\limits_{k=1}^{j-1}{dp[i122][k]}\)这个显然,就是相对排名比\(j\)小,不说了

然后答案是对所有的\(dp[n][i]\)求和,没了,代码:

显然我固定第一个是峰,然后再乘以2就是答案,因为一个合法的反转之后也是合法的而且谷峰颠倒了

发现如果设\(dp[i][j]\)表示前\(i\)个山脉,第\(i\)个山脉是高度是谷,下面给出DP过程。

对于偶数,\(dp[i][j]\)由\(\sum\limits_{k=j}^{i-1}{dp[i-1][k]}\),因为我新的\(j\)加进来后,所有大于它的都要排名+1,所以原来我在第\(j\)个的,实际上是比它要大的

对于奇数,\(dp[i][j]\)由\(\sum\limits_{k=1}^{j-1}{dp[i-1][k]}\)这个显然,就是相对排名比\(j\)小,不说了

然后答案是对所有的\(dp[n][i]\)求和,没了,代码:

#include<bits/stdc++.h>
#define vd void
int gi(){
char c;int x=0,f=0;
while(!isdigit(c=getchar()))f|=(c=='-');
while(isdigit(c))x=(x*10)+(c^48),c=getchar();
return f?-x:x;
}
int n,mod;
template<class Ta,class Tb>vd inc(Ta&a,Tb b){a=a+b>=mod?a+b-mod:a+b;}
template<class Ta,class Tb>int sub(Ta&a,Tb b){return a>=b?a-b:a+mod-b;}
int dp[4201][4201],s[4201];
int main(){
n=gi(),mod=gi();
for(int i=1;i<=n;i++)dp[1][i]=1,s[i]=s[i-1]+1;
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){
if(i&1)dp[i][j]=s[j-1]%mod;
else dp[i][j]=sub(s[i-1],s[j-1]);
}
for(int j=1;j<=i;j++)s[j]=(s[j-1]+dp[i][j])%mod;
}
printf("%lld\n",s[n]*2%mod);
return 0;
}

还有一份

#include<bits/stdc++.h>
#define vd void
int gi(){
char c;int x=0,f=0;
while(!isdigit(c=getchar()))f|=(c=='-');
while(isdigit(c))x=(x*10)+(c^48),c=getchar();
return f?-x:x;
}
int n,mod;
template<class Ta,class Tb>vd inc(Ta&a,Tb b){a=a+b>=mod?a+b-mod:a+b;}
template<class Ta,class Tb>int sub(Ta&a,Tb b){return a>=b?a-b:a+mod-b;}
int dp[4201][4201],s[4201];
int main(){
n=gi(),mod=gi();
for(int i=1;i<=n;i++)dp[1][i]=1,s[i]=s[i-1]+1;
for(int i=2;i<=n;i++){
for(int j=1;j<=i;j++){
if(i&1)dp[i][j]=s[j-1]%mod;
else dp[i][j]=sub(s[i-1],s[j-1]);
}
for(int j=1;j<=i;j++)s[j]=(s[j-1]+dp[i][j])%mod;
}
printf("%lld\n",s[n]*2%mod);
return 0;
}

P2467 [SDOI2010] 地精部落 学习笔记的更多相关文章

  1. P2467 [SDOI2010]地精部落 DP

    传送门:https://www.luogu.org/problemnew/show/P2467 参考与学习:https://www.luogu.org/blog/user55639/solution- ...

  2. P2467 [SDOI2010]地精部落 (dp+组合数)【扩展Lucas好难不会】

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

  3. P2467 [SDOI2010]地精部落

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

  4. 洛咕 P2467 [SDOI2010]地精部落

    同波浪,简单dp. 高度从1到n插入山脉,设f[i][j][k]表示插入了i个山脉,组成了j段,边界上有k个山脉的方案数. 那么新插入的山脉只会:插入在边界上且自己是一段.插入在边界上且与最左边的段相 ...

  5. 洛谷 P2467 [SDOI2010]地精部落

    洛谷 我讲的应该没有这个[https://www.luogu.org/blog/user55639/solution-p2467]清楚. 贴个代码算了: #include <bits/stdc+ ...

  6. luogu P2467 [SDOI2010]地精部落

    很有意思的dp计数题目. 思考一下发现开始时山峰和开始是山谷的方案数是相同的 所以我们只需要统计一个即可. 证明的话可以考虑对于任意一种开始时山峰的方案 每个数字变成n-a[i]+1 那么可以此方案还 ...

  7. Luogu P2467 [SDOI2010]地精部落 | 神奇的dp

    题目链接 DP 题目大意:给定一个数n,求1~n这n个整数的所有排列中有多少个波动数列,将这个数量%p后输出. 什么是波动数列呢?顾名思义,就是一个大.一个小.一个大.一个小--或者是一个小.一个大. ...

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

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

  9. BZOJ_1925_[Sdoi2010]地精部落_递推

    BZOJ_1925_[Sdoi2010]地精部落_递推 Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 ...

  10. 【BZOJ1925】[SDOI2010]地精部落(动态规划)

    [BZOJ1925][SDOI2010]地精部落(动态规划) 题面 BZOJ 洛谷 题解 一道性质\(dp\)题.(所以当然是照搬学长PPT了啊 先来罗列性质,我们称题目所求的序列为抖动序列: 一个抖 ...

随机推荐

  1. 2021年5.21NCU第四届校赛

    比赛地址:http://222.204.50.106/contest/39 A 树上祖先 链接:http://222.204.50.106/contest/39/problem/A B 莎士比亚 链接 ...

  2. C++ lambda的重载

    先说结论,lambda是不能重载的(至少到c++23依旧如此,以后会怎么样没人知道).而且即使代码完全一样的两个lambda也会有完全不同的类型. 但虽然不能直接实现lambda重载,我们有办法去模拟 ...

  3. redis-desktop-manager-0.8.0.3844

    redis-desktop-manager-0.8.0.3844 下载地址: https://www.aliyundrive.com/s/Y2fobkVjAdF 链接:https://pan.baid ...

  4. SpringBoot-RSA加密

    前言 最近由于工作业务的需要,需要对指定的字段信息进行非对称加解密:由于需要加密的内容过于庞大:自己执行程序会出现:Data must not be longer than 117 bytes 的异常 ...

  5. Docker打包程序镜像

    简介 做了一个视频检测程序,它是由golang和c++编写的.因为公司要做私有化部署,因此需要打包成镜像然后放到公司的registry镜像仓库里.之前一直没有去熟悉docker,现在刚好机会来了,咱就 ...

  6. 7月 Splashtop上线了这些新功能 快来看鸭

    经过我们的攻城狮天天努力,我们的软件又得到了升级和完善,上线了一些有用的新功能和增强功能,快来看看吧. Splashtop已为Splashtop Business Access,Splashtop远程 ...

  7. 移动端termux安装kali

    1.相关准备一部安卓手机,termux,NVAC,浏览器2.安装kali首先进入kali的官网选择文档找到Android手机上的kali找到NetHunter-Rootless找到kali安装命令:t ...

  8. WPF使用Shape实现复杂线条动画

    看到巧用 CSS/SVG 实现复杂线条光效动画的文章,便也想尝试用WPF的Shape配合动画实现同样的效果.ChokCoco大佬的文章中介绍了基于SVG的线条动画效果和通过角向渐变配合 MASK 实现 ...

  9. RocketMQ阅读源码前的准备

    本文将讲解如何在IDEA中导入 RocketMQ 源码,并运行 Broker 和 NameServer,编写一个消息发送与消息消费的示例. 一. 源码导入及调试 1.1 导入源码 RocketMQ 原 ...

  10. css 跑马灯

    html: <view class="in_scro"> <view class="in_scrview">恭喜139******1用户 ...