题目链接:https://cn.vjudge.net/contest/273377#problem/C

给你 n,m,k.

这个题的意思是给你n个数,在对前m项的基础上排序的情况下,问你满足递增子序列的长度至少为n-1的排列组合的个数。

具体方法:打表找规律。

打表代码:

#include<bits/stdc++.h>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn =1000;
int a[maxn];
int vis[maxn];
int ww[maxn][maxn];
int b[maxn];
bool judge(int t,int w)
{
for(int i=1; i<=t; i++)
{
b[i]=a[i];
}
sort(b+1,b+w+1);
memset(vis,0,sizeof(vis));
int ans=0;
int temp;
for(int i=t; i>=1; i--)
{
temp=1;
int maxx=0;
for(int j=i; j<=t; j++)
{
if(b[j]>b[i])
{
maxx=max(maxx,vis[j]);
}
}
vis[i]=maxx+1;
}
for(int i=1; i<=t; i++)
{
if(vis[i]>=t-1)return true;
}
return false;
}
int main()
{
int t=10;
while(1)
{
if(t==0)break;
for(int i=1; i<=t; i++)
{
a[i]=i;
}
do
{
// cout<<t<<endl;
for(int i=1; i<=t; i++)
{
if(judge(t,i))
{
ww[t][i]++;
}
}
// for(int i=0;i<t;i++)
// cout<<a[i]<<" ";
// cout<<endl;
} while(next_permutation(a+1,a+t+1));
t--;
}
for(int i=1; i<=10; i++)
{ for(int j=1; j<=i; j++)
{
cout<<ww[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
/* 1
2 2
5 6 6
10 14 24 24
17 26 54 120 120
26 42 96 264 720 720
37 62 150 456 1560 5040 5040
50 86 216 696 2640 10800 40320 40320
65 114 294 984 3960 18000 85680 362880 362880
82 146 384 1320 5520 26640 141120 766080 3628800 3628800
*/

AC代码:

#include<bits/stdc++.h>
#include<string>
#include<cstring>
#include<stdio.h>
using namespace std;
# define ll long long
# define inf 0x3f3f3f3f
const int maxn =60;
ll dp[maxn][maxn];
ll a[maxn];
ll n,m,k;
void init()
{
a[1]=2;
for(int i=2; i<=50; i++)
{
a[i]=(a[i-1]*i)%k;
}
dp[1][1]=1;
if(m>n)m=n;
for(int i=2; i<=50; i++)
{
dp[i][i]=dp[i][i-1]=(dp[i-1][i-1]*i)%k;
}
for(int i=m+2; i<=50; i++)
{
dp[i][m]=(dp[i-1][m]*2-dp[i-2][m]+a[m]+k)%k;//这里需要加k,因为有可能出现负值
}
}
int main()
{
int T;
scanf("%d",&T);
int Case=0;
while(T--)
{
scanf("%lld%lld%lld",&n,&m,&k);
init();
printf("Case #%d: ",++Case);
printf("%lld\n",dp[n][m]);
}
return 0;
}

打表找规律C - Insertion Sort Gym - 101955C的更多相关文章

  1. Insertion Sort Gym - 101955C 思路+推公式

    题目:题目链接 题意:对长为n的1到n的数列的前k个数排序后数列的最长上升子序列长度不小于n-1的数列的种数,训练赛时怎么都读不明白这个题意,最后还是赛后问了旁队才算看懂,英语水平急需拯救55555 ...

  2. hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)

    Nim or not Nim? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

  3. HDU 5753 Permutation Bo (推导 or 打表找规律)

    Permutation Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5753 Description There are two sequen ...

  4. HDU 4861 Couple doubi (数论 or 打表找规律)

    Couple doubi 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/D Description DouBiXp has a ...

  5. HDU2149-Good Luck in CET-4 Everybody!(博弈,打表找规律)

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  6. 【ZOJ】3785 What day is that day? ——浅谈KMP在ACM竞赛中的暴力打表找规律中的应用

    转载请声明出处:http://www.cnblogs.com/kevince/p/3887827.html    ——By Kevince 首先声明一下,这里的规律指的是循环,即找到最小循环周期. 这 ...

  7. HDU 5795 A Simple Nim(SG打表找规律)

    SG打表找规律 HDU 5795 题目连接 #include<iostream> #include<cstdio> #include<cmath> #include ...

  8. hdu_5894_hannnnah_j’s Biological Test(打表找规律)

    题目链接:hdu_5894_hannnnah_j’s Biological Test 题意: 有n个不同的位置围成一个圈,现在要安排m个人坐,每个人至少的间隔为k,问有多少种安排 题解: 先打表找规律 ...

  9. hdu_5795_A Simple Nim(打表找规律的博弈)

    题目链接:hdu_5795_A Simple Nim 题意: 有N堆石子,你可以取每堆的1-m个,也可以将这堆石子分成3堆,问你先手输还是赢 题解: 打表找规律可得: sg[0]=0 当x=8k+7时 ...

随机推荐

  1. IPv4编址及子网划分

    在讨论IP编址之前,我们需要讨论一下主机与路由器连入网络的方法.一台主机通常只有一条链路链接到网络:当主机中的IP想发送一个数据报时,它就在链路上发送,主机与物理链路之间的边界叫做接口(interfa ...

  2. jquery截取手机号中间4位数,然后变为*

    $(function() { var phone = $('#phone').text(); var mphone = phone.substr(0, 3) + '****' + phone.subs ...

  3. FZU2122_又见LKity

    题目是说给你一个替换串和目标串.把一个长串中的所有的替换串替换为目标串而且不递归地替换. 很简单,直接做一次KMP然后直接替换. 注意替换后跳到替换串的尾部. 注意大小写的问题. #include & ...

  4. 【bzoj5157】[Tjoi2014]上升子序列 树状数组

    题目描述 求一个数列本质不同的至少含有两个元素的上升子序列数目模10^9+7的结果. 题解 树状数组 傻逼题,离散化后直接使用树状数组统计即可.由于要求本质不同,因此一个数要减去它前一次出现时的贡献( ...

  5. 【JavaScript&jQuery】$.ajax()

    $(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json" ...

  6. 【CodeChef-SPCLN】Cleaning the Space

    https://odzkskevi.qnssl.com/7dfb262544887eff6fb35bfb444759d6?v=1502084197 做法是类似于最大割之类的东西,把每个碎片按照按钮拆点 ...

  7. 【JavaScript】面向对象的程序设计

    一.前言        接着上一篇的内容,继续JavaScript的学习. 二.内容 属性类型 //数据属性[Configurable] —— 能否通过delete删除属性从而重新定义属性,能否修改属 ...

  8. CF Playrix Codescapes Cup Problems Analysis

    A 理清思路模拟 B 先对3个array排序,然后每次从某个array的头删数,可保证每个数必被处理1次,O(n log n) (set维护也行) C 分3类情况讨论,一种为: p1≤p2 & ...

  9. BIOS和CMOS的区别

    原文链接:https://www.cnblogs.com/boltkiller/articles/5732424.html 在日常操作和维护计算机的过程中,常常可以听到有关BIOS设置和CMOS设置的 ...

  10. linux内核分析 第二周 操作系统是如何工作的

    银雪纯 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 ...