传送门

dp妙题啊。

我认为DZYODZYODZYO已经说的很好了。

强制规定球的排序方式。

然后就变成了一个求拓扑序数量的问题。

代码:

#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int ans=0,w=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();}
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans*w;
}
const int N=2005,Maxn=2000*2000+1e5+5,mod=1e9+7;
int n,k,f[N][N],fac[Maxn],ifac[Maxn];
inline int C(int n,int m){return 1ll*fac[n]*ifac[m]%mod*ifac[n-m]%mod;}
int main(){
	n=read(),k=read(),ifac[0]=fac[0]=fac[1]=ifac[1]=1;
	if(k==1)return puts("1"),0;
	for(int i=2;i<=Maxn-5;++i)fac[i]=1ll*fac[i-1]*i%mod,ifac[i]=1ll*(mod-mod/i)*ifac[mod%i]%mod;
	for(int i=2;i<=Maxn-5;++i)ifac[i]=1ll*ifac[i]*ifac[i-1]%mod;
	f[1][0]=1;
	for(int i=1;i<=n;++i)
		for(int j=0;j<=i;++j){
			if(i^j)(f[i][j+1]+=f[i][j]%=mod);
			if(i^n)(f[i+1][j]+=1ll*f[i][j]*C((k-2)+(i*(k-1)+j),k-2)%mod)%=mod;
		}
	cout<<1ll*f[n][n]*fac[n]%mod;
	return 0;
}

2018.10.25 atcoder Leftmost Ball(计数dp+组合数学)的更多相关文章

  1. 2018.10.25 bzoj4517: [Sdoi2016]排列计数(组合数学)

    传送门 组合数学简单题. Ans=(nm)∗1Ans=\binom {n} {m}*1Ans=(mn​)∗1~(n−m)(n-m)(n−m)的错排数. 前面的直接线性筛逆元求. 后面的错排数递推式本蒟 ...

  2. AT2000 Leftmost Ball(计数dp+组合数学)

    传送门 解题思路 设\(f[i][j]\)表示填了\(i\)个白色,\(j\)种彩色的方案数,那么显然\(j<=i\).考虑这个的转移,首先可以填一个白色,就是\(f[i][j]=f[i-1][ ...

  3. 【AtCoder】AGC022 F - Leftmost Ball 计数DP

    [题目]F - Leftmost Ball [题意]给定n种颜色的球各k个,每次以任意顺序排列所有球并将每种颜色最左端的球染成颜色0,求有多少种不同的颜色排列.n,k<=2000. [算法]计数 ...

  4. 2018.10.25 bzo1227: [SDOI2009]虔诚的墓主人(组合数学+扫描线+bit)

    传送门 有点难调啊.其实是我自己sb了 不过交上去1A1A1A还是平衡了一下心态. 所以这道题怎么做呢? 我们考虑对于一个点(x,y)(x,y)(x,y)如果这个点成为中心,正左/右/上/下分别有l/ ...

  5. 2018.10.25 洛谷P4187 [USACO18JAN]Stamp Painting(计数dp)

    传送门 其实本来想做组合数学的2333. 谁知道是道dpdpdp. 唉只能顺手做了 还是用真难则反的思想. 这题我们倒着考虑,只需要求出不合法方案数就行了. 这个显然是随便dpdpdp的. f[i]f ...

  6. 2018.10.25 uestc上天的卿学姐(计数dp)

    传送门 看了DZYODZYODZYO的题解之后发现自己又sbsbsb了啊. 直接dpdpdp是O(2d)O(2^d)O(2d)更新,O(1)O(1)O(1)查询或者O(1)O(1)O(1)更新,O(2 ...

  7. Atcoder Grand Contest 002 F - Leftmost Ball(dp)

    Atcoder 题面传送门 & 洛谷题面传送门 这道 Cu 的 AGC F 竟然被我自己想出来了!!!((( 首先考虑什么样的序列会被统计入答案.稍微手玩几组数据即可发现,一个颜色序列 \(c ...

  8. 2018.10.25 bzoj4350: 括号序列再战猪猪侠(区间dp)

    传送门 区间dp好题. 首先我们并不用把右括号拿进来一起dpdpdp,而是直接用左括号来dpdpdp. 然后定义状态fi,jf_{i,j}fi,j​表示区间[l,r][l,r][l,r]的合法方案数. ...

  9. 2018.10.25 bzoj4565: [Haoi2016]字符合并(区间dp+状压)

    传送门 当看到那个k≤8k\le 8k≤8的时候就知道需要状压了. 状态定义:f[i][j][k]f[i][j][k]f[i][j][k]表示区间[i,j][i,j][i,j]处理完之后的状态为kkk ...

随机推荐

  1. Gym - 101911C Bacteria (规律题)

    传送门:点我 Time limit2000 ms Memory limit262144 kB Recently Monocarp has created his own mini-laboratory ...

  2. 【转】收集 jetty、tomcat、jboss、weblogic 的比较

    jetty Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开 ...

  3. chrome谷歌浏览器常用快捷键搜集整理

    搜集了下面比较实用的快捷键,部分不好操作的组合键就不写了:Ctrl+N:打开新窗口. Ctrl+T:打开新标签页.Ctrl+W:关闭当前标签Alt+F4:关闭chrome浏览器Ctrl+Tab:切换到 ...

  4. java 线程Thread 技术--线程状态与同步问题

    线程技术第三篇: 线程的状态: 1. 创建状态: 当用new 操作符创建一个新的线程对象时,该线程就处于创建状态,系统不为它分配资源 2.可运行状态:当线程调用start 方法将为线程分配必须的系统资 ...

  5. Linux系统不能解析域名

    问题:正在使用的Linux系统突然有一天不能解析域名gus.xxxxxxxx.com? # ping gus.xxxxxxxx.com ping: unknown host gus-xxxxxxxx. ...

  6. ClickHouse高性能数据库

    ClickHouse之简单性能测试   前面的文章ClickHouse之初步认识已经简单的介绍了ClickHouse,接下来进行简单的性能测试.测试数据来源于美国民用航班的数据,从1987年到2017 ...

  7. golang 创建一个简单的广播echo服务器

    package main; import ( "net" "fmt" "bufio" ) //里面的代码部分参考cmu440课程 //htt ...

  8. JS正则表达式验证是否为11位有效手机号码

    function isPoneAvailable($poneInput) { var myreg=/^[1][3,4,5,7,8][0-9]{9}$/; if (!myreg.test($poneIn ...

  9. 10.31JS日记

    this问题 (1)this是js的一个关键字,指定一个对象,然后替代this: 函数中的this指向行为发生的主体,函数外的this都指向window,没有意义 (2)函数内的this跟函数在什么环 ...

  10. NSIS Error:Error writing temporary file. Make sure your temp folder is valid的解决办法

    我的是Win7 32位,当前登录用户已经是管理员,在安装腾讯视频电脑版时,提示以上错误,无法安装. 查了好多资料,按如下方法解决了: 在win7下,以管理员的身份打开cmd(在window\syste ...