【czy系列赛】czy的后宫4 && bzoj1925 [Sdoi2010]地精部落
【问题描述】
czy有很多妹子,妹子虽然数量很多,但是质量不容乐观,她们的美丽值全部为负数(喜闻乐见)。
czy每天都要带N个妹子到机房,她们都有一个独一无二的美丽值,美丽值为-1到-N之间的整数。他想要把这些妹子排成一个波动序列,这样相对“漂亮”(美丽值的绝对值较小)的妹子可以与她旁边的两个美丽值的绝对值较大的妹子形成鲜明的对比,整个序列相对将更加“美观”(不再那么无法直视)。
一个序列是波动序列仅当序列中的每个数比周围的两个数都大或都小(如果有的话)。
现在czy希望知道,长度为N的波动序列有多少种。两种序列A和B不同当且仅当存在一个i,使得Ai≠Bi。由于这个数目可能很大,你只对它除以P的余数感兴趣。
【输入格式】
输入文件czy.in仅含一行,两个正整数N, P。
【输出格式】
输出文件czy.out仅含一行,一个非负整数,表示你所求的答案对P取余之后的结果。
【样例输入输出】
czy.in
4 7
czy.out
3
说明:共有10种可能的序列,它们是: 1324 1423 2143 2314 2413 3142 3241 3412 4132 4231
(忽略负号)
【数据规模和约定】
对于20%的数据,满足N≤10;
对于40%的数据,满足N≤18;
对于70%的数据,满足N≤550;
对于100%的数据,满足3≤N≤4200,P≤10^9。
AHSOFNU高一互测题【czy系列赛】第二题:dp……顺手写了个
要了解更多关于czy系列赛的东西,快戳这里
(我会说其实第四题是我出的吗)
现场没有想出来怎么做,在orz了黄巨大之后才知道
有些猥琐的dp。f[i][j]表示前i个数、第一个数在[1,j]范围内且第一段是下降的方案数(够坑吧)
那么f[i][j] = f[i][j - 1] + f[i - 1][i - j]
什么意思呢?首先开头是[1,j-1]的方案数是已经算过的,可以直接取出来,就是f[i][j - 1]
那么我们考虑开头是j、第一段是下降的方案怎么转移:
黄巨大是这样说的:这个就是求以[1,j]开头的1到 i-1的第一位上升合法排列数
就是说我们把j加到第一个并要使得第一段是下降的,那么j要比原来的第一个要大,并且原来的方案必须是上升(这样才能保证整个序列是波动序列)
根据上升与下降的对称性,我们可以得出f[i-1][i-j]即是所求
那么前面的方程就解释完了
最后答案是2*f[n][n],因为上升下降都得算
顺便说一句,bzoj上会卡f[4201][4201]的内存,所以要用滚动数组,否则MLE别怪我没提醒你
#include<cstdio>
int n,k,pre,cur;
int f[2][5000];
int main()
{
scanf("%d%d",&n,&k);
if (n==1)
{
printf("%d\n",1);
return 0;
}
pre=1;cur=0;
f[pre][1]=1;
for (int i=2;i<=n;i++)
{
pre^=1;cur^=1;
for (int j=1;j<=n;j++)
{
f[pre][j]=f[pre][j-1];
if (i>=j)f[pre][j]+=f[cur][i-j];
if (f[pre][j]>k) f[pre][j]-=k;
}
}
printf("%d",(f[pre][n]*2)%k);
}
【czy系列赛】czy的后宫4 && bzoj1925 [Sdoi2010]地精部落的更多相关文章
- [bzoj1925][Sdoi2010]地精部落_递推_动态规划
地精部落 bzoj-1925 Sdoi-2010 题目大意:给你一个数n和模数p,求1~n的排列中满足每一个数的旁边两个数,要么一个是边界,要么都比它大,要么都比它小(波浪排列个数) 注释:$1\le ...
- bzoj1925 [Sdoi2010] 地精部落【DP】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1925 一个多月前“过”了这道题,还自欺欺人地认为懂了这道题,这直接导致了昨晚多校联测2的T3 ...
- BZOJ1925[SDOI2010]地精部落
Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...
- BZOJ1925 [Sdoi2010]地精部落 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1925 题意概括 给出n,n<=4200,问1~n这些数的排列中,有多少满足一下性质: 性质: ...
- [BZOJ1925][SDOI2010]地精部落(DP)
题意 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N ...
- 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个数结 ...
- BZOJ1925 [Sdoi2010]地精部落 【dp】
题目 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N ...
- [bzoj1925][Sdoi2010][地精部落] (序列动态规划)
Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...
- 题解 [BZOJ1925][SDOI2010] 地精部落
题面 解析 这个似乎并不好讲啊 设\(f[i][j]\)表示有\(i\)座山, 最后一座山到达高度是\(i\)座中第\(j\)大的, 且最后一座山是山谷. 注意,\(i\)是代表有\(i\)座山,并不 ...
随机推荐
- Html.DropDownList的用法
直接上代码 页面代码 <td> <%= Html.DropDownList("selCity") %> </td> controller里面的代 ...
- membership source code
You can find their source code in codeplex at the ASP.NET source code. ExtendedMembershipProvider: h ...
- JAVA并发实现五(生产者和消费者模式Condition方式实现)
package com.subject01; import java.util.PriorityQueue; import java.util.concurrent.locks.Condition; ...
- JAVA单线程以及java多线程的实现方式
1.java单线程的实现 public class SingletonThread { @SuppressWarnings("static-access") public stat ...
- [RxJS] Handling a Complete Stream with Reduce
When a stream has completed, you often need to evaluate everything that has happened while the strea ...
- 什么是 gnuplot
Gnuplot是一个命令行的交互式绘图工具(command-driven interactive function plotting program).用户通过输入命令,可以逐步设置或修改绘图环境,并 ...
- C# winform带进度条的图片下载
代码如下: public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void ...
- android-用xml自定义背景(可自定义显示具体那一边)
常见的描边都是闭合的.四个边都有.如下: <?xml version="1.0" encoding="UTF-8"?> <layer-list ...
- css实现两端对齐~
今天做表单时遇到让上下两个字段对齐的情况,手机号码.用户名. 然后今天在网上找了找相关方法,发现确实是没有什么好的方法解决,特别是当需要兼容的时候.找到了两个我觉得相对还不错的方法: 方法一.是在司徒 ...
- JavaScript 函数方法 - bind()
Function.prototype.bind() ECMAScript5中新增的方法,但是在ECMAScript3可以通过模仿实现其方法作用 作用: bind() 方法会创建一个新函数,当这个新函数 ...