AtCoder Grand Contest 002 F:Leftmost Ball
题目传送门:https://agc002.contest.atcoder.jp/tasks/agc002_f
题目翻译
你有\(n*k\)个球,这些球一共有\(n\)种颜色,每种颜色有\(k\)个,然后你可以随意把它们放成一行。放好后把每个颜色最左边的球染成\(n+1\)号颜色,问这样可以搞出多少种不同的颜色序列。
题解
最近没休息好,状态不好,而且这还是我最不擅长的计数题,跪了跪了。
你们去看别人的题解吧,我也讲不清楚,这里只有丑逼代码可以看。
时间复杂度:\(O(nk)\)
空间复杂度:\(O(nk)\)
代码如下:
#include <cstdio>
using namespace std;
const int maxn=2e3+5,pps=1e9+7;
int n,k,ans;
int f[maxn],fac[maxn*maxn],inv[maxn*maxn];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
int quick(int a,int b) {
int sum=1;
while(b) {
if(b&1)sum=1ll*sum*a%pps;
a=1ll*a*a%pps;b>>=1;
}
return sum;
}
void prepare(int N) {
fac[0]=inv[0]=1;
for(int i=1;i<=N;i++)
fac[i]=1ll*fac[i-1]*i%pps;
inv[N]=quick(fac[N],pps-2);
for(int i=N-1;i;i--)
inv[i]=1ll*inv[i+1]*(i+1)%pps;
}
int C(int a,int b) {
return 1ll*fac[a]*inv[b]%pps*inv[a-b]%pps;
}
int main() {
n=read(),k=read()-1;
if(!k) {puts("1");return 0;}
prepare(n*k+n);f[0]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
f[j]=(f[j]+1ll*C(n*k+n-i-(j-1)*k-1,k-1)*f[j-1]%pps)%pps;
ans=1ll*f[n]*fac[n]%pps;
printf("%d\n",ans);
return 0;
}
AtCoder Grand Contest 002 F:Leftmost Ball的更多相关文章
- Atcoder Grand Contest 002 F - Leftmost Ball(dp)
Atcoder 题面传送门 & 洛谷题面传送门 这道 Cu 的 AGC F 竟然被我自己想出来了!!!((( 首先考虑什么样的序列会被统计入答案.稍微手玩几组数据即可发现,一个颜色序列 \(c ...
- AtCoder Grand Contest 002
AtCoder Grand Contest 002 A - Range Product 翻译 告诉你\(a,b\),求\(\prod_{i=a}^b i\)是正数还是负数还是零. 题解 什么鬼玩意. ...
- AtCoder Grand Contest 002 (AGC002) F - Leftmost Ball 动态规划 排列组合
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC002F.html 题目传送门 - AGC002F 题意 给定 $n,k$ ,表示有 $n\times k$ ...
- AtCoder Grand Contest 012 D:Colorful Balls
题目传送门:https://agc012.contest.atcoder.jp/tasks/agc012_d 题目翻译 给你一排一共\(N\)个球,每个球有一个颜色\(c_i\)和一个重量\(w_i\ ...
- AtCoder Grand Contest 009 D:Uninity
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_d 题目翻译 定义只有一个点的树权值为\(0\),若干棵(可以是\(0\)棵)权值为\(k\) ...
- AtCoder Grand Contest 009 E:Eternal Average
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_e 题目翻译 纸上写了\(N\)个\(1\)和\(M\)个\(0\),你每次可以选择\(k\) ...
- AtCoder Grand Contest 004 C:AND Grid
题目传送门:https://agc004.contest.atcoder.jp/tasks/agc004_c 题目翻译 给你一张网格图,指定的格子是紫色的,要求你构造出两张网格图,其中一张你可以构造一 ...
- AtCoder Grand Contest 014 D:Black and White Tree
题目传送门:https://agc014.contest.atcoder.jp/tasks/agc014_d 题目翻译 给你一棵树,每次任选一个点染色,先手染白色,后手染黑色.如果最后存在一个白色的点 ...
- AtCoder Grand Contest 028 A:Two Abbreviations
题目传送门:https://agc028.contest.atcoder.jp/tasks/agc028_a 题目翻译 给你两个串\(s\)与\(t\),长度分别为\(n,m\).问你存不存在一个串长 ...
随机推荐
- 说说我的web前端之路,分享些前端的好书(转)
WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没有学校的正规教育,大多数人都是靠自己自学成才.本文主要介绍自己从事web开发以来(从大二至今)看过的书籍和自己的成长过程,目的是给想了解Java ...
- TP 上传excel
<?php class ExcelAction extends Action{ public function read($filename,$encode='utf-8'){ vendor(' ...
- 【PHP开发】ThinkPHP3.1.3问题集及解决方法
Outline: 无法获取post请求中的url参数的问题 中文存入数据表后为空字符串 1. 无法获取post请求中的url参数的问题 ThinkPHP3.1.3中,如果提交的post请求中,如果要在 ...
- C - The C Answer (2nd Edition) - Exercise 1-1
/* Run the "hello, world" program on your system. Experiment with leaving out parts of the ...
- mysql 查看触发器,删除触发器
1. 查看所有触发器 2. 根据触发器名称看下相关触发器信息 3. 查看所有触发器 另一种查询触发器命令: show triggers; 删除触发器命令: drop trigger trigg ...
- Objective-C中NSString转NSNumber的方法
本文转载至 http://www.linuxidc.com/Linux/2013-02/78866.htm 在Objective-C中,以数字格式组成的字符串经常需要转换为NSNumber对象后再使用 ...
- delphi 颜色 引用http://www.cnblogs.com/del/archive/2008/02/19/1073568.html
颜色名称 颜色效果 Hex HTML clBlack $000000 #000000 clMaroon $000080 #800000 clGreen $008000 #00800 ...
- 点聚-weboffice 6.0 (三)
1.页面 var filename="<%=request.getParameter("filePath").toString()%>"; docu ...
- mysql系列之4.mysql字符集
针对mysql语句的临时办法: 先查看下mysql的各种编码设置情况, 如果结果显示有几项的编码不一致, 请先调整linux的系统编码 mysql> show variables like 'c ...
- Grunt 学习笔记【2】---- 配置和创建任务
本文主要讲Grunt任务配置. 说明:本文所有示例都基于Grunt 0.4.5版本. 一 说明 使用Grunt实现项目的打包等工程化工作,实际上是通过Grunt提供的机制和插件,配置一个个任务(例如: ...