传送门


一个与相对大小关系相关的$DP$

设$f_{i,j,0/1}$表示放了$i$个,其中最后一个数字在$i$个中是第$j$大,且最后一个是极大值($1$)或极小值时($0$)的方案数。转移:

$$f_{i+1,j,1}=\sum\limits_{k=1}^{j-1} f_{i,k,0},f_{i+1,j,0} = \sum\limits_{k=j}^{i} f_{i,k,1}$$

发现转移可以前缀和优化,优化后复杂度为$O(n^2)$可以通过此题。

 1 #include<bits/stdc++.h>
 2 //This code is written by Itst
 3 using namespace std;
 4
 5 inline int read(){
 6     int a = 0;
 7     bool f = 0;
 8     char c = getchar();
 9     while(c != EOF && !isdigit(c)){
10         if(c == '-')
11             f = 1;
12         c = getchar();
13     }
14     while(c != EOF && isdigit(c)){
15         a = (a << 3) + (a << 1) + (c ^ '0');
16         c = getchar();
17     }
18     return f ? -a : a;
19 }
20
21 const int MAXN = 4210;
22 int MOD , N , dp[MAXN][MAXN][2];
23
24 int main(){
25 #ifndef ONLINE_JUDGE
26     freopen("2467.in" , "r" , stdin);
27     //freopen("2467.out" , "w" , stdout);
28 #endif
29     N = read();
30     MOD = read();
31     dp[1][1][0] = dp[1][1][1] = 1;
32     for(int i = 2 ; i <= N ; ++i){
33         for(int j = 1 ; j <= i ; ++j){
34             dp[i][j][0] = dp[i - 1][j][1];
35             dp[i][j][1] = dp[i - 1][j - 1][0];
36         }
37         for(int j = 1 ; j <= i ; ++j)
38             dp[i][j][0] = (dp[i][j][0] + dp[i][j - 1][0]) % MOD;
39         for(int j = i ; j ; --j)
40             dp[i][j][1] = (dp[i][j][1] + dp[i][j + 1][1]) % MOD;
41     }
42     cout << (dp[N][N][0] + dp[N][1][1]) % MOD;
43     return 0;
44 }

转载于:https://www.cnblogs.com/Itst/p/10052582.html

Luogu2467 SDOI2010 地精部落 DP相关推荐

  1. [luogu2467 SDOI2010] 地精部落

    [luogu2467 SDOI2010] 地精部落 题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有 ...

  2. bzoj1925: [Sdoi2010]地精部落 [dp]

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

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

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

  4. luogu2467/bzoj1925 地精部落 (dp)

    求1~n组成一个抖动序列的方案数 首先这种序列有一些非常妙妙但我发现不了的性质 1.对于一个抖动序列,如果i和i+1不相邻,则交换i和i+1,他还是个抖动序列 2.对于一个抖动序列,我把每个数拿n+1 ...

  5. DP [Sdoi2010]地精部落

    问题 H: [Sdoi2010]地精部落 时间限制: 1 Sec 内存限制: 64 MB 题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 ...

  6. P2467 [SDOI2010]地精部落

    P2467 [SDOI2010]地精部落 题意: 有n个山脉高度分别是1到n,现在让你按照山峰山谷的顺序依次摆放(第一个可以是山峰也可以是山谷),问有多少方案(答案mod p) 题解: dp,但是自己 ...

  7. BZOJ1925: [Sdoi2010]地精部落

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

  8. 1925: [Sdoi2010]地精部落

    1925: [Sdoi2010]地精部落 Time Limit: 10 Sec   Memory Limit: 64 MB Submit: 1196   Solved: 730 [ Submit][ ...

  9. [Sdoi2010] 地精部落

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

最新文章

  1. 戴尔服务器重装系统优盘启动不了怎么办,U盘重装系统,开机按F12选择USB启动项无法进入PE系统怎么办?...
  2. 欧洲两个研究团队开发出了让截肢者能感觉到并准确抓住物体的仿生手
  3. java设计模式---状态模式
  4. 农信计算机资料录入试题,农村信用社考试计算机测试题(一)
  5. Selenium 中文API
  6. 【HDU - 5672】String(尺取法)
  7. 纪念币预约服务器无响应,为啥纪念币从0点开约?
  8. 斗鱼第三方开放平台2.2版使用记录
  9. springmvc中Date类型转换
  10. 转载explicit关键字
  11. 祝微软北京.net俱乐部徐磊生日快乐
  12. arm gdb 编译与安装
  13. CDH6.3.2安装文档
  14. 手机与电脑视频呼java_Android手机播放电脑视频文件-屌丝必备
  15. 明源售楼系统技术解析(五)开发商销控、客户自助查询
  16. 电脑技术员联盟 GhostXp Sp3 装机版V5.1
  17. uint64_t {aka long unsigned int}
  18. selenium 浏览器复用(java)
  19. docker 网络配置
  20. 商务呈现之客户满意度

热门文章

  1. linux命令grep如何使用,Linux命令之grep命令简单使用
  2. android+wear独立应用,谷歌更新Android Wear政策:鼓励开发可独立运行的手表应用
  3. HDU 1698 Just a Hook (线段树区间修改+区间查询)
  4. HDU1754 I Hate It (线段树单点修改+区间查询)
  5. vue对象深拷贝_JS 对象的深拷贝和浅拷贝
  6. 服务器本地打开asp文件路径,服务器本地打开asp文件
  7. 区块链java语言,基于Java语言构建区块链(一)—— 基本原型
  8. [HNOI2011]数学作业 题解
  9. 信号(signal)
  10. IP地址与数字地址相互转换