【题目】F - Leftmost Ball

【题意】给定n种颜色的球各k个,每次以任意顺序排列所有球并将每种颜色最左端的球染成颜色0,求有多少种不同的颜色排列。n,k<=2000。

【算法】计数DP

【题解】只看黑体字部分即可

自己考虑了几种计数方案,都不能实现。一种从左到右,但要记录每种球剩余多少,不可行。一种从右到左枚举白球包含区间填充,但因为只看白球,每种颜色没有关键球,会有重复统计的问题。

计数的关键在于白球的原色不重要以及每种颜色关注最左端的球(这里不含变成白球的球)。

本题既然nk能分开,就没必要整个序列推进,只抽象地枚举白球数和颜色数就可以了,这是因为本题的条件很优美,不需要考虑位置的因素。

设$f[i][j]$表示前i个白球,仅包含j种颜色的最大前缀的排列数。这里只要保证$j \leq i$就可以满足颜色数不多于白球数。

转移可以增加一个白球,或增加一种颜色。增加颜色时固定最左端球的位置,然后在前面球剩余的位置任意填充。(这里既不考虑填充前面剩余位置的问题,因为紧凑。也不考虑前面每种球的剩余数量,因为每种填充方案的剩余位置数都是确定的。计数问题常常考虑每一种前面的方案共有的性质然后抽象出来转移,即对于前面每一个方案如何如何后就变成现在的方案)

$$f[i][j]=f[i-1][j]+\binom{n-i+(n-j+1)*(k-1)-1}{k-2}*(n-j+1)*f[i][j-1]$$

后面的(n-j+1)可以改为最后乘上n!。

复杂度O(n^2)。

代码来自:zhanglexing

  1. #include<cstdio>
  2. #define ll long long
  3. const int N=,M=4e6+,mo=1e9+;
  4. int n,m,nm,i,j,f[N];
  5. int fact[M],inv[M],fv[M];
  6. void init(int n){
  7. fact[]=fact[]=inv[]=fv[]=fv[]=;
  8. for (i=;i<=n;i++){
  9. fact[i]=(ll)fact[i-]*i%mo;
  10. inv[i]=(ll)inv[mo%i]*(mo-mo/i)%mo;
  11. fv[i]=(ll)fv[i-]*inv[i]%mo;
  12. }
  13. }
  14. int C(int n,int m){return (ll)fact[n]*fv[m]%mo*fv[n-m]%mo;}
  15. int main(){
  16. scanf("%d%d",&n,&m);m--;
  17. if (!m){puts("");return ;}
  18. nm=n*m+n;init(nm);f[]=;
  19. for (i=;i<=n;i++) for (j=;j<=i;j++)
  20. f[j]=(f[j]+(ll)(n-j+)*
  21. C(nm-i-(j-)*m-,m-)%mo*f[j-])%mo;
  22. printf("%d",f[n]);
  23. }

【AtCoder】AGC022 F - Leftmost Ball 计数DP的更多相关文章

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

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

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

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

  3. AGC002 F Leftmost Ball——DP

    题目:https://atcoder.jp/contests/agc002/tasks/agc002_f 充要条件是前缀0的个数 >= 颜色种数. 设计 DP ,放一个颜色的时候就把所有该颜色的 ...

  4. AtCoder Grand Contest 002 (AGC002) F - Leftmost Ball 动态规划 排列组合

    原文链接https://www.cnblogs.com/zhouzhendong/p/AGC002F.html 题目传送门 - AGC002F 题意 给定 $n,k$ ,表示有 $n\times k$ ...

  5. AGC002 F - Leftmost Ball

    貌似哪里讲过这题..总之当时掉线了(理解能力又差水平又低选手的日常).. 看看题目,应该是DP. 尝试了几次换状态,毫无思路.那我们就来继续挖掘性质吧...为了更直观,我们令第i个出现的球颜色就是i( ...

  6. ATcoder 2000 Leftmost Ball

    Problem Statement Snuke loves colorful balls. He has a total of N×K balls, K in each of his favorite ...

  7. 【agc002f】Leftmost Ball(动态规划)

    [agc002f]Leftmost Ball(动态规划) 题面 atcoder 洛谷 题解 我们从前往后依次把每个颜色按顺序来放,那么如果当前放的是某种颜色的第一个球,那么放的就会变成\(0\)号颜色 ...

  8. [DP之计数DP]

    其实说实在 我在写这篇博客的时候 才刚刚草了一道这样类型的题 之前几乎没有接触过 接触过也是平时比赛的 没有系统的做过 可以说0基础 我所理解的计数dp就是想办法去达到它要的目的 而且一定要非常劲非常 ...

  9. 【AGC 002F】Leftmost Ball

    Description Snuke loves colorful balls. He has a total of N*K balls, K in each of his favorite N col ...

随机推荐

  1. tomcat文件中server.xml 实例说明

    <?xml version='1.0' encoding='utf-8'?>   # 这是server类, 指定一个tomcat的应用实例 <Server port="80 ...

  2. JabRef学习笔记(一)

    JabRef简介 JabRef is an open source bibliography reference manager. The native file format used by Jab ...

  3. aes python加密

    # *_*coding:utf-8 *_* #AES-demo import base64 from Crypto.Cipher import AES ''' 采用AES对称加密算法 ''' # st ...

  4. linux yum 下载至本地及使用本地缓存安装包

    由于网络安全的原因,服务器不允许上公网,有2种方案,解决这个问题 1.搭建yum服务器2.使用yum下载缓存进行封装,然后使用缓存安装 这里讲讲使用yum缓存封装 一.下载指定包及相关依赖 yum i ...

  5. [转帖]UsingDiskspdforSQLServer --- 改天做下练习 官方文档.

    Using DiskSpd in SQL Server environments Writer: Robert Beene Contributors: Jose Barreto, Ramu Konid ...

  6. 【移动端debug-4】iOS下setTimeout无法触发focus事件的解决方案

    开篇总结:其实目前无法解决这个bug. 这两天做项目遇到了这个case,项目需求是打开页面的时候,input元素自动弹起键盘.由于各种方面的考虑,我们希望通过setTimeout延时200毫秒让inp ...

  7. jQuery文件上传插件uploadify

    官方网站:http://www.uploadify.com/ 参考博客:jQuery Uploadify在ASP.NET MVC3中的使用 参考博客:使用uploadify上传图片时返回“Cannot ...

  8. 【Java并发编程】之十一:线程间通信中notify通知的遗漏

    notify通知的遗漏很容易理解,即threadA还没开始wait的时候,threadB已经notify了,这样,threadB通知是没有任何响应的,当threadB退出synchronized代码块 ...

  9. BZOJ3444 最后的晚餐(并查集)

    容易发现只要图中有非链部分则无解.剩下就非常简单了. #include<iostream> #include<cstdio> #include<cmath> #in ...

  10. 访问控制列表-ACL匹配规则

    1 .ACL匹配机制 首先,小编为大家介绍ACL匹配机制.上一期提到,ACL在匹配报文时遵循“一旦命中即停止匹配”的原则.其实,这句话就是对ACL匹配机制的一个高度的概括.当然,ACL匹配过程中,还存 ...