模拟赛 Problem 2 不等数列(num.cpp/c/pas)
Problem 2 不等数列(num.cpp/c/pas)
【题目描述】
将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。问在所有排列中,有多少个排列恰好有k个“<”。答案对2012取模。
【输入格式】
第一行2个整数n,k。
【输出格式】
一个整数表示答案。
【样例输入】
5 2
【样例输出】
66
【数据范围】
对于30%的数据:n <= 10
对于100%的数据:k < n <= 1000,
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 2012
#define MAXN 1010
using namespace std;
int n,k,ans;
int vis[MAXN],num[MAXN];
bool judge(){
int bns=;
for(int i=;i<=n;i++)
if(num[i]>num[i-]) bns++;
if(bns==k) return true;
else return false;
}
void dfs(int now){
if(now==n+){
if(judge())
ans=(ans+)%mod;
return ;
}
for(int i=;i<=n;i++)
if(!vis[i]){
vis[i]=;num[now]=i;
dfs(now+);
vis[i]=;
}
}
int main(){
freopen("num.in","r",stdin);
freopen("num.out","w",stdout);
scanf("%d%d",&n,&k);
dfs();
cout<<ans<<endl;
}
用来打表的暴力
打完表后会发现是一个这样的一个东西:

然后就可以找规律了。然后并不肿么样。
最后调转思路,转到了DP上。
f[i][j]表示在前i个里面加入j个‘<’的方案数,那么就有:
f[i][j]=(f[i-1][j]*(j+1)+f[i-1][j-1]*(i-j))%mod;
然后就完成了。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define mod 2012
using namespace std;
int n,k;
int f[][];
int main(){
freopen("num.in","r",stdin);
freopen("num.out","w",stdout);
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) f[i][]=;
for(int i=;i<=n;i++)
for(int j=;j<=min(i-,k);j++)
f[i][j]=(f[i-][j]*(j+)+f[i-][j-]*(i-j))%mod;
printf("%d",f[n][k]);
}
模拟赛 Problem 2 不等数列(num.cpp/c/pas)的更多相关文章
- 模拟赛 Problem 1 高级打字机(type.cpp/c/pas)
		
Problem 1 高级打字机(type.cpp/c/pas) [题目描述] 早苗入手了最新的高级打字机.最新款自然有着与以往不同的功能,那就是它具备撤销功能,厉害吧. 请为这种高级打字机设计一个程序 ...
 - 模拟赛 Problem 3 经营与开发(exploit.cpp/c/pas)
		
Problem 3 经营与开发(exploit.cpp/c/pas) [题目描述] 4X概念体系,是指在PC战略游戏中一种相当普及和成熟的系统概念,得名自4个同样以“EX”为开头的英语单词. eXpl ...
 - 【csp模拟赛4】 珠江夜游 (cruise.cpp)-二分,贪心
		
Problem 1 珠江夜游 (cruise.cpp) [题目描述] 小 Z 放假后难得来一趟广州游玩,当然要吃遍广州各路美食小吃然后再 到珠江新城看看远近闻名的小蛮腰啦!可当小 Z 一路吃吃吃以后, ...
 - NOIP第二次模拟赛 stage1【划分数列(seq.pas/c/cpp)
		
7划分数列(seq.pas/c/cpp) [题目描述] 给你一个有n个元素的数列,要求把它划分成k段,使每段元素和的最大值最小 [输入格式] 第一行两个正整数n,k 第二行为此数列ai [输出格式] ...
 - 广二模拟赛 Problem A: 青春野狼不做理性小魔女的梦 解题报告
		
Problem A: 青春野狼不做理性小魔女的梦 题意 给一个长为\(k\)的序列\(A\)和一个数\(n\),给出一部分\(A_i\)的值,另一部分为\(-1\),代表不知道这个\(A_i\)是多少 ...
 - 省选模拟赛 Problem 3. count (矩阵快速幂优化DP)
		
Discription DarrellDarrellDarrell 在思考一道计算题. 给你一个尺寸为 1×N1 × N1×N 的长条,你可以在上面切很多刀,要求竖直地切并且且完后每块的长度都是整数. ...
 - 【csp模拟赛4】基站建设 (station.cpp)
		
[题目描述] 小 Z 的爸爸是一位通信工程师,他所在的通信公司最近接到了一个新的通 信工程建设任务,他们需要在 C 城建设一批新的基站. C 城的城市规划做得非常好,整个城市被规整地划分为 8 行 8 ...
 - 【csp模拟赛5】限制 (restrict.cpp)--数学
		
自己看吧: 爆搜代码: //春水初涨-春林初盛-春风十里-不如你 //----hzwer // 这是啥子题,读不懂-- //题意有问题 -- #include<iostream> #inc ...
 - 【csp模拟赛5】购物(shopping.cpp)--常规
		
多项式,因为每次的x相同,所以把a和b相加就行了,然后找对称轴,找离对称轴最近的整数点,然而我却写了个暴力,没看x #include <iostream> #include <cst ...
 
随机推荐
- MyEclipse日志文件目录
			
MyEclipse存放日志的目录为: <Workspace_Root>/.metadata/.log 在该目录下存放了日志的存档和当前日志,通过该日志可以查看MyEclipse的错误信息.
 - ASP.NET MVC 生成验证码
			
using System.Web.Mvc; using System.Drawing; using System; using System.Drawing.Imaging; using Models ...
 - 365 Water and Jug Problem 水壶问题
			
有两个容量分别为 x升 和 y升 的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水.你允许: 装满任 ...
 - 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8、0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口)
			
不多说,直接上干货! 至于为什么,要写这篇博客以及安装Kafka-manager? 问题详情 无奈于,在kafka里没有一个较好自带的web ui.启动后无法观看,并且不友好.所以,需安装一个第三方的 ...
 - Hadoop Hive概念学习系列之hive的数据压缩(七)
			
Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直 ...
 - 关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案
			
当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...
 - 创建http对象
			
package test; import java.net.HttpURLConnection;import java.net.URL; import javax.servlet.http.HttpS ...
 - 仿ofo单车做一个轮播效果
			
github地址 首先我是利用swiper.js做的,因为这个很强大,哈哈~~,上代码 html很简单 <body> <div class="swiper-containe ...
 - 关于Python多线程condition变量的应用
			
''' 所谓条件变量,即这种机制是在满足了特定的条件后,线程才可以访问相关的数据. 它使用Condition类来完成,由于它也可以像锁机制那样用,所以它也有acquire方法和release方法,而且 ...
 - Angular——自定义服务
			
基本介绍 之前我们介绍了angular内置的几种服务,这里我们介绍如何自己定义自己的服务,主要是通过三个方法:factory.service.value 基本使用 factory:可以返回对象,也可以 ...