permu(变态考试题)
题目描述
给定一个严格递增的序列T,求有多少个T的排列S满足:∑min(T[i],S[i])=k
输入输出格式
输入格式:
第一行两个数n,k
第二行n个数,表示T
输出格式:
一个正整数表示答案,答案对10^9+9取模
输入输出样例
5 10
1 2 3 4 5
24
说明
30%的数据n<=10
100%的数据 输入中所有数字为不超过50的正整数,k<=2500
题解:动态规划
正常的思路会想到状态压缩或暴力搜索,可以利用那个min变成普通的动归
f[i][j][k]表示前i位,还有j个数未匹配,和为k的方案数
情况1:与自己匹配,f[i+1][j][k+t[i+1]]+=f[i][j][k]
情况2:与后面的数匹配,因为严格递增,所以f[i+1][j+1][k+2*t[i+1]]+=f[i][j][k]
情况3:与前面的数匹配,再用前面的数匹配自己,f[i+1][j-1][k]+=f[i][j][k]*j*j
解释:把当前数往前匹配有j种方案,把前面的数往当前匹配有j种,根据乘法原理可知
情况4:与前面的数匹配,自己不匹配,f[i+1][j][k+t[i+1]]+=f[i][j][k]*j
解释:与前面的数匹配有j种,为什么不算后面的数,假设所有l>i且匹配了i
因为对于l,3,4情况已经算了i,所以f[l][j][k]包含了l匹配i的方案,无需重复计算
为方便定义,规定只考虑往前的匹配种数
本蒟蒻考试时完全不会,不像yzh大佬
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long f[][][];
int Mod=;
int n,k,t[];
int main()
{int i,j,l;
cin>>n>>k;
for (i=;i<=n;i++)
{
scanf("%d",&t[i]);
}
f[][][]=;
for (i=;i<n;i++)
{
for (j=;j<=i;j++)
{
for (l=;l<=k;l++)
if (f[i][j][l])
{
f[i+][j][l+t[i+]]=(f[i+][j][l+t[i+]]+f[i][j][l])%Mod;
f[i+][j+][l+*t[i+]]=(f[i+][j+][l+*t[i+]]+f[i][j][l])%Mod;
if (j) f[i+][j-][l]=(f[i+][j-][l]+f[i][j][l]*j*j)%Mod;
f[i+][j][l+t[i+]]=(f[i+][j][l+t[i+]]+f[i][j][l]*j*)%Mod;
}
}
}
cout<<f[n][][k];
}
permu(变态考试题)的更多相关文章
- 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)
技能 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#skill 以前的水印,只是简单走起,用的是原生态的方法.现在各种变态水印,于是就不再用原生态 ...
- 6个变态的C语言Hello World程序
6个变态的C语言Hello World程序 下面的六个程序片段主要完成这些事情: 输出Hello, World 混乱C语言的源代码 下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C+ ...
- GGXX的卡通渲染实现 真的好变态......
最近在youtube上看了GDC,学了很多东西,最让我震撼的就是ggxx的卡通渲染了.感慨一下,想要用3D做出二次元的效果,真的不容易.现记录一些要点: 1)不要使用normal map来做cel-s ...
- ACM 变态最大值
变态最大值 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解 ...
- 44个 Javascript 变态题解析 (上\下)
第1题 ["1", "2", "3"].map(parseInt) 知识点: Array/map Number/parseInt JavaS ...
- 【BZOJ】1067: [SCOI2007]降雨量(rmq+变态题)
http://www.lydsy.com/JudgeOnline/problem.php?id=1067 好不爽,弄了一个晚上. 好不爽. 还是照着别人程序拍着看的!!! 噗 这题很变态. 首先,我没 ...
- linux之mysqlimport的哪些变态事儿
mysqlimport是MySQL导入数据的工具,高效易用. 但掌握不透彻就会有一些变态事情.mysqlimport --host='laswebapp.mdb.game.yy.com' --port ...
- Java之HttpURLConnection的变态事: Keep-Alive
HttpURLConnection的变态事: Keep-Alive JDK自带的HttpURLConnection默认启动Keep-Alive, 使用后的HttpURLConnection会放入池里重 ...
- 【DP】permu
permu [Description] 给定两个1~N的全排列A,B.有两个指针q和p,一开始q.p都为0,可执行以下三种操作: 1.q+1:2.p+1:3.q+1且p+1(Aq+1≠Bp+1时才可以 ...
随机推荐
- 总结随笔(Beta)
听说 -- beta冲刺总结 beta冲刺成员名单 姓名 学号 负责方向 个人主页 周龙荣 031402543 前端页面.跳转 http://www.cnblogs.com/ZHOULR/ 李家鹏 0 ...
- Java Client/Server 基础知识
Java的网络类库支持多种Internet协议,包括Telnet, FTP 和HTTP (WWW),与此相对应的Java网络类库的子类库为: Java.net Java.net.ftp Java. ...
- 200行Python代码实现2048
200行Python代码实现2048 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面 ...
- [Android]上传到多个Maven仓库的Gradle插件RapidMavenPushPlugin
博客搬迁至https://blog.wangjiegulu.com RSS订阅:https://blog.wangjiegulu.com/feed.xml RapidMavenPushPlugin 用 ...
- 完美解决某法院HP EVA8400删除VDISK问题
[故障描述] 某地法院一台HP EVA8400存储,2组扩展柜,物理磁盘由12个1T FATA磁盘(AG691A 454414-001)和10个300G 15K FC磁盘(AG690A 454411- ...
- JAVA_SE基础——19.数组的定义
数组是一组相关数据的集合,数组按照使用可以分为一维数组.二维数组.多维数组 本章先讲一维数组 不同点: 不使用数组定义100个整形变量:int1,int2,int3;;;;;; 使用数组定义 int ...
- kubernetes 手绘画,先收藏一下
- javascript学习(4)异常处理 try-catch 和 onerror
一.try-catch 1.样例1 1.1.源代码 1.2.执行后 2.样例2 2.1.源代码 2.2.执行后 二.onerror 1.源代码 2.执行后
- ssh整合之二hibernate单独搭建
1.首先我们需要去拷贝我们的hibernate所需的jar包 这里还需要加入我们C3P0的jar包,因为我们hibernate中使用的C3P0连接池 2. 编写我们的关系映射文件Customer.c ...
- 使用java 打印日历
package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...