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

题面

BZOJ

洛谷

题解

一道性质\(dp\)题。(所以当然是照搬学长PPT了啊

先来罗列性质,我们称题目所求的序列为抖动序列:

  • 一个抖动序列的连续子序列还是一个抖动序列。
  • 如果在一个抖动序列中\(x\)与\(x+1\)不相邻,那么交换两者的位置这个序列仍是抖动序列。
  • 如果将一个抖动序列中所有大于\(x\)的元素全部\(+1\),那么这个序列仍然是抖动序列。
  • 一个\([1,x]\)的抖动序列可以映射到一个\([y-x+1,y]\)的抖动序列。

上面的性质都比较显然。证明什么的感性理解一下就好了。

现在来写\(dp\)。

设\(f[i][j]\)表示\([1,i]\)构成的排列中,第一个数为\(j\)的抖动序列的个数,并且强制第一个数大于第二个数,即第一个位置上是一个峰。

第一个数这已经确定,现在考虑第二个位置上的数。

如果这个数不是\(j-1\),那么我们必定可以交换\(j\)以及\(j-1\),不难发现这样子是一一对应的,也就是\(f[i][j]\leftarrow f[i][j-1]\)

否则这个数是\(j-1\)。那么我们先把第一个\(j\)个忽视掉,剩下的部分的值是\([1,j-1]\cup[j+1,i]\),那么我们这样子想,我们只需要剩下的这些值离散,变成了\([1,i-1]\),然后构成了一个以\(j-1\)开头的抖动序列,再把\([j+1,i-1]\)这一段全部加一,最后再把\(j\)放回到开头,这样子就可以得到一个抖动序列了。但是我们似乎没法直接从\(f[i-1][j-1]\)转移过来,因为在上述状态中\(j-1\)是一个峰,但是在\(f[i][j]\)的状态中,\(j-1\)是一个谷。然而并没有什么关系,我们用上面的最后一个结论,把所有的数全部映射一下,即\(j-1\)映射到\(i-j+1\)。那么就可以得到\(f[i][j]\leftarrow f[i-1][i-j+1]\)

那么这样子就可以\(dp\)了,转移方程是\(f[i][j]=f[i][j-1]+f[i-1][i-j+1]\)

那么答案就是\(\sum f[n][i]\)啦,但是别忘了这样子强制了第一个位置是峰,再映射一下,发现还要乘个二就可以把谷的贡献给算进来啦。

#include<iostream>
#include<cstdio>
using namespace std;
int n,MOD,f[2][4250],ans;
int main()
{
scanf("%d%d",&n,&MOD);f[0][1]=1;
for(int i=1,nw=1,pw=0;i<=n;++i,nw^=1,pw^=1)
for(int j=1;j<=i;++j)
f[nw][j]=(f[nw][j-1]+f[pw][i-j+1])%MOD;
for(int i=1;i<=n;++i)ans=(ans+f[n&1][i])%MOD;
ans=(ans+ans)%MOD;printf("%d\n",ans);
return 0;
}

【BZOJ1925】[SDOI2010]地精部落(动态规划)的更多相关文章

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

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

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

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

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

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

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

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

  5. BZOJ1925[SDOI2010]地精部落

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

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

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

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

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

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

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

  9. 2018.10.20 bzoj1925: [Sdoi2010]地精部落(dp)

    传送门 dp好题. 设f[i][j]f[i][j]f[i][j]表示iii个数结尾是jjj且结尾两个数递增的方案数. 那么显然可以对称的定义出g[i][j]g[i][j]g[i][j]表示iii个数结 ...

  10. 题解 [BZOJ1925][SDOI2010] 地精部落

    题面 解析 这个似乎并不好讲啊 设\(f[i][j]\)表示有\(i\)座山, 最后一座山到达高度是\(i\)座中第\(j\)大的, 且最后一座山是山谷. 注意,\(i\)是代表有\(i\)座山,并不 ...

随机推荐

  1. 学习angularjs的ng-hide和ng-disabled

    一,页面上有一个checkbox和一个文本框.切换checkbox能对文本框输入文本与否: <input type="checkbox" ng-model="ckS ...

  2. Intellij IDEA的下载和使用(针对学生的免费使用计划)

    一.下载和使用授权(针对学生) 1.下载 可以在Intellij IDEA官网上下载需要的版本.下载地址:https://www.jetbrains.com/idea/ 2.学生免费试用 首先,你得现 ...

  3. 【nodejs】让nodejs像后端mvc框架(asp.net mvc )一样处理请求--自动路由篇(1/8)【route】

    文章目录 前情概要 在使用express框架开发的时候,每加一个请求,都在增加一条route请求规则,类似于下面的代码,很烦有木有! app.use('/myroute path', (req, re ...

  4. 微信小程序开发工具 ubuntu linux版本

    安装 http://blog.csdn.net/zhangyingguangails/article/details/72517182 sudo apt install wine sudo git c ...

  5. Linux系统本地yum源环境配置记录

    由于IDC的一些服务器没有外网,不能对外访问.所以打算部署一套内网的yum源环境,以供内网服务器使用.以下简单记录下操作过程: 1)下载centos6.9和centos7.3的镜像,并挂载 [root ...

  6. Python运算符-4

    #and or not #优先级,()> not > and > or print(2 > 1 and 1 < 4) print(2 > 1 and 1 < ...

  7. hdu 1263 水果 结构的排序+sort自定义排序

    水果 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  8. C. Make It Equal

    链接 [http://codeforces.com/contest/1065/problem/C] 题意 给你n个高度hi的塔,让你把高的部分切掉,使得最后所有塔一样高,而且每次切的高度之和不大于k ...

  9. 第八次Scrum meeting

    第八次Scrum  meeting 任务及完成度: 成员 12.29 12.30 陈谋 任务1040:完成stackoverflow的数据处理后的json处理(99%) 任务1114-1:完成对网页数 ...

  10. VIM编辑器常用命令(转)

    转自:https://www.cnblogs.com/Nice-Boy/p/6124177.html