Permutations 好题
Permutations
Problem Description
给出两个正整数N、K,问存在多少个长度为N的排列,满足其峰顶数目为K。所谓排列就是有一个序列a[1] ...a[N],每个数均不相同,且都是1
<= a[i] <= N,a[i]是峰顶的意思是 a[i] > a[i - 1] && a[i] > a[i + 1],对于边界,我们假设a[0] = -1000000000 和 a[N +
1] = -1000000000
Input
Output
Sample Input
5 1
5 2
3 1
10 3
Sample Output
16
88
4
131
Hint
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
using namespace std;
#define ll long long
#define MAX 32
#define mod 239
struct matrix
{
int a[MAX][MAX];
} origin,res,anss,ansa;
matrix multiply(matrix x,matrix y)
{
matrix temp;
memset(temp.a,,sizeof(temp.a));
int i,j,k;
for(k=; k<MAX; k++)
for(i=; i<MAX; i++)
if(x.a[i][k])
for(j=; j<MAX; j++)
temp.a[i][j]+=x.a[i][k]*y.a[k][j]%mod,temp.a[i][j]%mod;
return temp;
}
void calc(ll x)
{
memset(res.a,,sizeof(res.a));
int i;
for(i=; i<MAX; i++)
res.a[i][i]=;
while(x)
{
if(x&)
res=multiply(res,origin);
origin=multiply(origin,origin);
x>>=;
}
}
void init(int x)
{
memset(origin.a,,sizeof(origin.a));
int i,j;
for(i=; i<MAX; i++)
{
j=i-;
origin.a[i][i]=*i;
origin.a[i][j]=(x-*j)%mod;
}
}
int dp[][]= {},ans;
void init1()
{
int i,j;
dp[][]=;
for(i=; i<; i++)
for(j=; j<i; j++)
dp[i][j]=((dp[i-][j]**j)%mod+(dp[i-][j-]*max(,i-*j+))%mod)%mod;
}
int main()
{
init1();
ll n,k,i,m,j,kk;
while(~scanf("%lld%lld",&n,&k))
{
if(n<)
{
printf("%d\n",dp[n][k]);
continue;
}
n-=;
ans=;
memset(anss.a,,sizeof(anss.a));
for(i=; i<MAX; i++)anss.a[i][i]=;
for(kk=; kk<; kk++)
{
init(kk);
anss=multiply(origin,anss);
if((n%)==(kk%))
{
for(i=; i<MAX; i++)
for(j=; j<MAX; j++)
ansa.a[i][j]=anss.a[i][j];
}
}
n/=;
if(n)
{
for(i=; i<MAX; i++)
for(j=; j<MAX; j++)
origin.a[i][j]=anss.a[i][j];
calc(n);
ansa=multiply(ansa,res);
}
for(j=; j<MAX; j++)
{
ans+=(dp[][j]*ansa.a[k][j])%mod;
ans%=mod;
}
printf("%d\n",ans);
}
}
Permutations 好题的更多相关文章
- LightOJ 1023 Discovering Permutations 水题
http://www.lightoj.com/volume_showproblem.php?problem=1023 题意:26字母全排列 思路:用next_permutation或者思维想一下都可以 ...
- POJ 2470 Ambiguous permutations(简单题 理解题意)
[题目简述]:事实上就是依据题目描写叙述:A permutation of the integers 1 to n is an ordering of these integers. So the n ...
- leetcode -- Permutations II TODO
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- [Codeforces Educational Round 71]Div. 2
总结 手速场...像我这种没手速的就直接炸了... 辣鸡 E 题交互,少打了个 ? 调了半个小时... 到最后没时间 G 题题都没看就结束了...结果早上起来被告知是阿狸的打字机...看了看题一毛一样 ...
- lintcode 中等题:permutations II 重复数据的全排列
题目 带重复元素的排列 给出一个具有重复数字的列表,找出列表所有不同的排列. 样例 给出列表 [1,2,2],不同的排列有: [ [1,2,2], [2,1,2], [2,2,1] ] 挑战 使用递归 ...
- lintcode 中等题:permutations 全排列
题目 全排列 给定一个数字列表,返回其所有可能的排列. 您在真实的面试中是否遇到过这个题? Yes 样例 给出一个列表[1,2,3],其全排列为: [ [1,2,3], [1,3,2], [2,1,3 ...
- LeetCode第[46]题(Java):Permutations(求所有全排列) 含扩展——第[47]题Permutations 2
题目:求所有全排列 难度:Medium 题目内容: Given a collection of distinct integers, return all possible permutations. ...
随机推荐
- 如何快速的理解JavaScript闭包?
先看问题 1. 在js中的作用域是什么? 作用域就是作用范围,作用空间.作用域分为全局作用域和局部作用域.(这个东西大家都明白) 如果把局部作用域比作一个国家,那么全局作用域就是地球,地球上除了那个国 ...
- Jmeter+Jenkins的聚合报告中添加QPS栏目显示
1.进入jmeter/extras目录,修改 jmeter-results-detail-report_21.xsl 2.打开文件修改 如上所示,在文件中添加6个地方关于QPS的显示即可, 然后替 ...
- 再起航,我的学习笔记之JavaScript设计模式18(观察者模式)
观察者模式 观察者模式(Observer): 又被称为发布-订阅者模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合. 创建一个观察者对象 首先我们创建一个闭包对象,让其在页面加 ...
- 安装mariadb二进制程序
author:JevonWei 版权声明:原创作品 下载mariadb软件包 https://downloads.mariadb.org/mariadb/5.5.57/ 一.创建用户和准备数据目录 1 ...
- JS源生代码“增删改查”之增
51呢最近在做一个管理数据的,第一次接触到用JS的源代码去实现一些功能,才知道网页里的许多功能都是依赖于“增删改查”完成的,下面的几张图片就是对于增的演示: 下面是有关HTML的代码:这个主要是弹窗部 ...
- 实现Spring RESTful服务的SSL
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt386 本文介绍如何让基于Spring的REST服务变得SSL/TSL化. 首 ...
- javascript中=,==,与===的区别;以及特殊值NaN的讲解
1.在js中"="是作为赋值.var a; a=3:给a赋值为3. 2."=="称作相等,"==="被称作严格相等.当使用"== ...
- 自制STP配置实验
本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...
- java四则运算
题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除 ...
- 2nd_SE-结对编程1-基于flask框架的四则运算生成器
0x00 Coding https://coding.net/u/nikochan/p/2nd_SE/git 0x01 写在前面 因为在上一个作业中,是基于python完成的Command程序.那么再 ...