我有点懵逼瞎容斥就过了

首先看了下路牌就是容斥

明显位置没有用,排一波序把拿相同颜色的球的人放一起

设f[i][j]表示枚举到第i个颜色,至少j个人拿了和原来一样颜色的球

那么f[i+1][j+k]=(f[i+1][j+k]+f[i][j]*C[p[i+1]][k]%mod*C[(ls+p[i+1])-(j+k)][p[i+1]-k])%mod;

p是当前球数,ls是前面球数的和,加起来相当于当前总球数

C[p[i+1]][k]是选k个人拿和原来一样颜色的球,C[(ls+p[i+1])-(j+k)][p[i+1]-k]是在剩下的位置中把没有拿的球找个位置放好

考虑这里的容斥系数,也就是对于重复人数为d的一个方案,对f[n][k]的贡献次数

开始我想成了每个不同颜色的球的组合数加起来刚好等于k,实际上可以合并起来看,在d个球中选出k个已确定,就是C[d][k]

那么上二项式反演即可

由于C[i][0]=1,网上很多人都说系数就是1,直接+1-1...................

容斥的时候输出答案记得要(ans+mod)%mod啊,系数有-1的啊!!!!!!!!!!!!!!!!

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int _=1e2;
const int maxn=2*1e3+_;
const int maxm=2*1e3+_;
const LL mod=1e9+9;
LL C[maxn][maxn];
void yu()
{C[0][0]=1;for(int i=1;i<maxn;i++){C[i][0]=1;for(int j=1;j<=i;j++)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;}
}int a[maxn],m,p[maxm];
LL f[maxm][maxn];//前i个数中,相同个数至少为j的个数
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);yu();int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+n+1);m=1,p[1]=1;for(int i=2;i<=n;i++){if(a[i]!=a[i-1])m++;p[m]++;}int ls=0; f[0][0]=1;for(int i=0;i<m;i++){for(int j=0;j<=ls;j++)if(f[i][j]){for(int k=0;k<=p[i+1];k++)f[i+1][j+k]=(f[i+1][j+k]+f[i][j]*C[p[i+1]][k]%mod*C[(ls+p[i+1])-(j+k)][p[i+1]-k])%mod;}ls+=p[i+1];}LL ans=0;int u=1;for(int i=0;i<=n;i++){ans=(ans+u*C[i][0]*f[m][i])%mod;u=-u;}printf("%lld\n",(ans+mod)%mod);return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/10442237.html

bzoj4665: 小w的喜糖相关推荐

  1. bzoj4665小w的喜糖 dp+容斥

    4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 120  Solved: 72 [Submit][Status][Discus ...

  2. BZOJ 4665: 小w的喜糖

    传送门 见计数想容斥 显然每个人交换后可以变成任意的排列 所以就是求对于所有排列使得每个位置的值都和一开始的值不同 感觉同一个值算同一个数不太好搞,考虑把所有数都看成不同的,最后答案再除 $\prod ...

  3. 牛客网CSP-S提高组赛前集训营1题解(仓鼠的石子游戏 [博弈论] + 乃爱与城市的拥挤程度 [树上DP] + 小w的魔术扑克[dfs + 离线])

    文章目录 T1:仓鼠的石子游戏 题目 题解 代码实现 T2:乃爱与城市拥挤程度 题目 题解 代码实现 T3:小w的魔术扑克 题目 题解 代码实现 T1:仓鼠的石子游戏 题目 仓鼠和兔子被禁止玩电脑,无 ...

  4. 【NOIP2017模拟6.25】小W的动漫

    题目 小W最近迷上了日本动漫,每天都有无数部动漫的更新等着他去看,所以他必须将所有的动漫排个顺序,当然,虽然有无数部动漫,但除了1号动漫,每部动漫都有且仅有一部动漫是它的前传(父亲),也就是说,所有的 ...

  5. 【牛客 - 696C】小w的禁忌与小G的长诗(dp 或 推公式容斥)

    题干: 链接:https://ac.nowcoder.com/acm/contest/696/C 来源:牛客网 自从上次小w被奶牛踹了之后,就一直对此耿耿于怀. 于是"cow"成为 ...

  6. 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(六)

    目录 作者简介 作者名:王小王-123 人物简介 二十模拟题 每文一语  本系列文章将会以通俗易懂的聊天对话方式,进行知识点的归纳和总结,对话中涵盖了知识点的主要逻辑结构,给人一种"清水出芙 ...

  7. 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(四)

    目录 作者简介 作者名:王小王-123 人物简介 二十模拟题(含解析) 本系列文章将会以通俗易懂的聊天对话方式,进行知识点的归纳和总结,对话中涵盖了知识点的主要逻辑结构,给人一种"清水出芙蓉 ...

  8. 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(二)

    目录 作者简介 人物简介 二十模拟题(含解析) 每文一语 本系列文章将会以通俗易懂的聊天对话方式,进行知识点的归纳和总结,对话中涵盖了知识点的主要逻辑结构,给人一种"清水出芙蓉,天然去雕饰& ...

  9. PTA: 小H小W爱魔法

    目录 原题 参考代码1:(可以运行,但是无法完全通过PTA) 简化的题目 参考代码2:(能通过PTA) pta上做到了这题,先来看看题目 ------------------------------- ...

最新文章

  1. [LeetCode]k个一组翻转链表(Reverse Nodes in k-Group)
  2. 西安交通大学17年9月课程考试计算机应用基础,西安交通大学17年9月课程考试《计算机应用基础》作业考核试题 (含主观题)...
  3. SSM始用 @Autowired(required = false)的一个坑
  4. C++的内存管理是怎样的
  5. 云南计算机一级没有开考吗,2020年3月云南计算机一级考试时间
  6. 云服务器主机性能测试,云服务器主机性能测试
  7. MSG_NOSIGNAL
  8. 使用FFMPEG类库分离出多媒体文件中的H.264码流
  9. 向量与直线,梯度与法向量,切向量
  10. windows下端口映射(端口转发)
  11. Elasticsearch 安装详细步骤(保姆级安装)
  12. 爬取B站视频 - m4s文件的相关研究
  13. Python 用“*” 输出三角形的代码写法
  14. 虚拟化与网络存储技术:虚拟化技术、Qemu-KVM
  15. k8s集群svc端口范围,nfs做StorageClass运行故障
  16. linux双系统如何选择顺序,Ubuntu和Windows双系统选择开机顺序
  17. 大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐
  18. 判断FTP文件是否传输完成
  19. 花花野公子 - 野行之~昆明大理
  20. 跨境电商 Shopee 的实时数仓之路

热门文章

  1. 道路运输车辆卫星定位系统JT/T808服务实现和压测
  2. Ubuntu14.04LST 安装Oracle SQL Developer 4.0.2
  3. 马云的移动战略:变革和创新
  4. 使用java导入某个msn帐号的好友列表并发送消息
  5. number of databases available at XJTLU
  6. Creator Upload NFT sequencial diagram
  7. 解锁新姿势 | 如何用配置中心实现全局动态流控?
  8. MyBatis增删改示例——MyBatis学习笔记之二
  9. 最新的Java SE平台和JDK版本发布计划
  10. Java中JRE、JDK和JVM的区别