题目链接

一道神仙题,有很多思考的方式,这里选择最好理解的一种来讲

我们将序列分为两种,一种开头递增,一种开头递减,显然这两种序列的数目是一样的

现在我们只用考虑开头递增的情况

f[i][j]表示前i个数,最后一个数字在前i个数的排名在1~j之间的方案数

显然有f[i][j]=f[i][j-1],如果最后一个数下降f[i][j]可以由f[i-1][i-j]转移过来,

如果最后一个数上升,则可以由f[i-1][j-1]转移过来,考虑到每一次转移时没有考虑之前一次的状态最后是上升还是下降的

我们都转移过来会错,由于波动序列具有对称性且我们只考虑了开头递增的序列,所以我们只用从f[i-1][i-j]来转移就ok了

还有,记得加上滚动数组进行优化

# include<iostream>
# include<cstring>
# include<algorithm>
# include<cmath>
# include<cstdio>
using namespace std;
const int mn = ;
long long f[][mn];
int n,p;
int main()
{
scanf("%d%d",&n,&p);
f[][]=;
if(n==)
{
printf("");
return ;
}
int cnt=;
for(int i=;i<=n;i++)
{
cnt=-cnt;
for(int j=;j<=i;j++)
f[cnt][j]=(f[cnt][j-]+f[-cnt][i-j])%p;
}
printf("%lld",(f[cnt][n]*)%p);
return ;
}

BZOJ 1925地精部落题解的更多相关文章

  1. [sdoi 2010][bzoj 1925]地精部落(神仙dp)

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

  2. [SDOI2010][BZOJ 1925]地精部落

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

  3. bzoj 1925 地精部落

    Written with StackEdit. Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 \(N\) 的山脉 \(H ...

  4. BZOJ 1925 地精部落(DP)

    一道很经典的DP题. 题意:求n排列中波动排列的种数. 不妨考虑DP,令dp1[i][j],表示1-j的排列中,第一项为i之后递增的波动排列种数.dp2[i][j]表示1-j的排列中,第一项为i之后递 ...

  5. BZOJ 1925[Sdoi2010]地精部落 题解

    题目大意: 1~n的排列中,要任意一个数要么比它左右的数都大或小,求所有的方案数. 思路: 主要思路:离散. 三个引理: ①在n->n-1的转化过程中,我们删除了一个点后,我们可以将n-1个点视 ...

  6. [SDOI2010]地精部落 题解

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

  7. 洛谷 P2467 地精部落 题解

    题面 好难啊好难啊好难啊~(以后再玩魔兽的时候绝对绝对虐死他) 做完后总结了一下思路; 首先推一下以下三条性质: 1.若两个 i 与 i+1 不相邻,那么我们直接交换这两个数字就可以组成一个新的数列 ...

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

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

  9. 1925: [Sdoi2010]地精部落

    1925: [Sdoi2010]地精部落 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1929 Solved: 1227 [Submit][Statu ...

随机推荐

  1. windows server 文件夹和搜索选项被禁用了

    当我们需要调整 windows 文件夹相关的配置时,却发现“文件夹和搜索选项”被禁用了,下图是恢复正常的情况.被禁用时显示灰色,不能点击. 下面给出解决步骤: 打开“组策略”. 然后依次展开“用户配置 ...

  2. Selenium浏览器自动化测试使用(1)

    Selenium - 介绍 Selenium是一个开源的和便携式的自动化软件测试工具,用于测试Web应用程序有能力在不同的浏览器和操作系统运行.Selenium真的不是一个单一的工具,而是一套工具,帮 ...

  3. python 解决抓取网页中的中文显示乱码问题

    关于爬虫乱码有很多各式各样的问题,这里不仅是中文乱码,编码转换.还包括一些如日文.韩文 .俄文.藏文之类的乱码处理,因为解决方式是一致的,故在此统一说明. 网络爬虫出现乱码的原因 源网页编码和爬取下来 ...

  4. Twisted的WEB开发

    1   简介 在WEB开发中,偶尔需要对HTTP协议更多底层细节进行控制,这时的django/web.py等等显然无法满足要求,所以只好求助于Twisted了.使用Twisted进行WEB开发,其实更 ...

  5. Spring框架中的核心思想包括什么

    (1)依赖注入 (2)控制反转 (3)面向切面

  6. vue.js_08_vue-组件的定义

    1.vue组件常用定义方式 <body> <div id="app"> <!--1.3使用组件--> <mycom1></my ...

  7. 微信小程序多商品评价评星提交

    <form bindsubmit="submitComment"> <block wx:for="{{commentList}}" wx:ke ...

  8. extern “C”的用法

    引言 由于不同的代码互相调用起来很容易出错,甚至同一种代码但由不同的编译器编译,为实现C++代码调用其他C语言代码,会在C语言代码的部分加上extern "C",表明这段代码需要按 ...

  9. python-基础-面象对象

    1 类和对象 定义类 定义一个类,格式如下: class 类名: 方法列表 demo:定义一个Car类 # 定义类 class Car: # 方法 def getCarInfo(self): prin ...

  10. 2018-2-13-win10-uwp-设置启动窗口大小--获取窗口大小

    title author date CreateTime categories win10 uwp 设置启动窗口大小 获取窗口大小 lindexi 2018-2-13 17:23:3 +0800 20 ...