洛谷 P2401 不等数列
其实有两种方法来解这道题
# 第一种:找规律(非正经)

一看,这玩意像是个杨辉三角,还左右对称呢
因为新插入一个数$n$,有$n+1$个位置可以选,所以总数就乘$n+1$,对应的$f[n+1][i]$也就等于$f[n][i]$了大概。可是一看,不大对,好像不是这样。那么就像,反正加一个数要么没变,要么加一个小于号,那么不在$f[n+1][i]$的一定是分到了$f[n+1][i+1]$里去了。那么以$n=3$时为例,$f[3][1]*4=4,f[4][1]=1$也就是接收了$1$倍的$f[3][1]$。那么就有$3$个分到$f[4][2]$里去了。$f[3][2]*4=16,f[4][2]=11$,而$f[4][2]$已经有$3$个,那么就接收了来自$f[4][2]$的$8$个,也就是$2$倍的$f[3][2]$。······以此类推,大概就得出了$f[n+1][i]+=f[n][i]*(i+1),f[n+1][i+1]+=f[n][i]*(n-i)$的规律
-----------------------------------------------手动分割线------------------------------------------------
# 第二种:数学方法推
**这是正经方法**
前面说过,加入一个数$n$,有$n$+$1$个位置可以选,可以插在两旁或者不等号的位置,因为新插入的数一定是最大的,所以插在最左边多一个大于号,而插在最右边多一个小于号。
那么问题来了,如果插在不等号的位置呢?
首先,明确一下,插入在不等号位置后,一个不等号会变为两个不等号,由于新插入的数一定是最大的,所以这两个不等号中前面的一定是小于号,后面的一定是大于号。那么就很明显了,如果这个位置原来是小于号,那么插入$n$之后,小于号数不变;如果原来是大于号,那么插入$n$之后,小于号数+$1$。那么原本有$i$个数$j$个小于号,加上一个数后便会有$j+1$种小于号不变$i-j$种小于号$+1$的情况。
上代码
先是**暴力版**(通不过的,这是帮助我打出那张图的版本)
```cpp
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1005;
int f[maxn],n,ans[maxn];
bool s[maxn];
void dfs(int step){
if(step>n){
int sum=0;
for(int i=1;i<n;i++)sum+=f[i]<f[i+1]?1:0;
ans[sum]++;
return;
}
for(int i=1;i<=n;i++)
if(!s[i]){
s[i]=1;
f[step]=i;
dfs(step+1);
s[i]=0;
}
}
int main(){
scanf("%d",&n);
dfs(1);
for(int i=0;i<n;i++)printf("%d ",ans[i]);
}
```
然后上
## 正常版本
```cpp
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int maxn=1005;
int n,k,f[maxn][maxn];
int main(){
//freopen("num.in","r",stdin);
//freopen("num.out","w",stdout);
scanf("%d%d",&n,&k);
if(k>(n-1)/2)k=n-k-1;
f[1][0]=1;
for(int i=1;i<n;i++){
for(int j=0;j<=(i-1)/2;j++){//由于它类似于杨辉三角,左右对称,所以只求左侧就好
f[i+1][j]=(f[i+1][j]+f[i][j]*(j+1))%2015;
f[i+1][j+1]=(f[i+1][j+1]+f[i][j]*(i-j))%2015;
}
if(i%2==0)f[i+1][i/2]=(f[i+1][i/2]*2)%2015;
}
printf("%d",f[n][k]);
return 0;
}
```
**不喜勿喷**
### 请勿抄袭
洛谷 P2401 不等数列的更多相关文章
- 洛谷 P2401 不等数列 题解
每日一题 day25 打卡 Analysis dp[i][j]=dp[i-1][j-1]*(i-j)+dp[i-1][j]*(j+1); 其中i和j是表示前i个数中有j个小于号,j<=i-1 要 ...
- 洛谷P2401 不等数列 题解
可食用的题目链接 题解: 有题目得:这个题有巧做法而不是暴力模拟.废话 这个题看着像一道dp,因为可以由前一种(数据更小的推出数据更大的)推出后一种. 我们设已经得到了n-1个数的总方法(1~n-1) ...
- 落谷 P2401 不等数列
题目链接. Solution 状态设计 设 \(f_{i, j}\) 为 \(1\) 到 \(i\) 的排列,其中有 \(j\) 个 \(\text{'<'}\) 的方案数. 状态转移 尝试从 ...
- [洛谷P3228] [HNOI2013]数列
洛谷题目链接:[HNOI2013]数列 题目描述 小T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察到: ...
- 【洛谷 P1667】 数列 (贪心)
题目链接 对于一个区间\([x,y]\),设这个区间的总和为\(S\) 那么我们在前缀和(设为\(sum[i]\))的意义上考虑到原操作其实就是\(sum[x−1]+=S\) , \(sum[x]+S ...
- 洛谷P1415 拆分数列[序列DP 状态 打印]
题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输出使得最后一个数最小的同时 ...
- 洛谷P1415 拆分数列(dp)
题目链接:传送门 题目: 题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输 ...
- 洛谷P1415 拆分数列
题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数.如果有多组解,则输出使得最后一个数最小的同时 ...
- 洛谷 P1415 拆分数列 解题报告
拆分数列 题目背景 [为了响应党中央勤节俭.反铺张的精神,题目背景描述故事部分略去^-^] 题目描述 给出一列数字,需要你添加任意多个逗号将其拆成若干个严格递增的数. 如果有多组解,则输出使得最后一个 ...
随机推荐
- POJ - 2912 Rochambeau 种类并查集
题意:有三组小朋友在玩石头剪刀布,同一组的小朋友出的手势是一样的.这些小朋友中有一个是裁判,他可以随便出手势.现在给定一些小朋友的关系,问能否判断出裁判,如果能最早什么时候能够找到裁判. 思路:枚举每 ...
- Raft论文学习笔记
先附上论文链接 https://pdos.csail.mit.edu/6.824/papers/raft-extended.pdf 最近在自学MIT的6.824分布式课程,找到两个比较好的githu ...
- 用Python实现《芳华》小说中的汉字频率统计
环境: Python 3的代码,亲测可用. 思路: 是先把每个字符提出来放在列表里:再过滤掉其中的标点符号:最后用字典对某个字出现的频率进行累加. 扩展: 用处很多,稍微改改,既可以用来统计小说或文 ...
- nginx笔记4-负载均衡带来的问题以及解决办法
接着笔记3,将笔记三的改造一下,现在分别启动两个Tomcat,在页面获取session.如图所示: tomcat2的session: tomcat1的session: 根据上图发现,每个tomcat取 ...
- yum仓库详细解读
Yum:Yellowdog Updater,Modified的简称,起初由yellow dog发行版的开发者Terra Soft研发,用Python编写,后经杜克大学的Linux@Duke开发团队进行 ...
- JavaScript中基本数据类型和引用数据类型的区别
1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变 ...
- 关于HC04超声波模块测距的思考(51版)
之前写过一篇HC04的使用文章,当时是使用stm32来实现的,原文链接. 后来又多次使用51来驱动这个模块,有时候有测距需要,使用了几次,总是感觉我上次那个程序不是很好, 所以这次对它进行了改进.虽然 ...
- 常用u-boot命令详解(全) 2
(8) USB 操作指令 指令 功能 usb reset 初始化USB控制器 usb stop [f] 关闭USB控制器 usb tree 已连接的USB设备树 usb info [dev] 显示US ...
- HI3531例子程序说明
Hisilicon Hi35xx 样例程序使用说明 1. 样例程序文件结构说明 sample # MPP 样例程序 |-- common # hi35x ...
- dojo CsvStore简介
dojox.data.CsvStore 作者:Jared Jurkiewicz 版本:V1.0 CsvStore是由dojo提供的简单的只读存储,并且是包含在dojox项目中的.CsvStore是读取 ...