bzoj4665: 小w的喜糖
我有点懵逼瞎容斥就过了
首先看了下路牌就是容斥
明显位置没有用,排一波序把拿相同颜色的球的人放一起
设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的喜糖相关推荐
- bzoj4665小w的喜糖 dp+容斥
4665: 小w的喜糖 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 120 Solved: 72 [Submit][Status][Discus ...
- BZOJ 4665: 小w的喜糖
传送门 见计数想容斥 显然每个人交换后可以变成任意的排列 所以就是求对于所有排列使得每个位置的值都和一开始的值不同 感觉同一个值算同一个数不太好搞,考虑把所有数都看成不同的,最后答案再除 $\prod ...
- 牛客网CSP-S提高组赛前集训营1题解(仓鼠的石子游戏 [博弈论] + 乃爱与城市的拥挤程度 [树上DP] + 小w的魔术扑克[dfs + 离线])
文章目录 T1:仓鼠的石子游戏 题目 题解 代码实现 T2:乃爱与城市拥挤程度 题目 题解 代码实现 T3:小w的魔术扑克 题目 题解 代码实现 T1:仓鼠的石子游戏 题目 仓鼠和兔子被禁止玩电脑,无 ...
- 【NOIP2017模拟6.25】小W的动漫
题目 小W最近迷上了日本动漫,每天都有无数部动漫的更新等着他去看,所以他必须将所有的动漫排个顺序,当然,虽然有无数部动漫,但除了1号动漫,每部动漫都有且仅有一部动漫是它的前传(父亲),也就是说,所有的 ...
- 【牛客 - 696C】小w的禁忌与小G的长诗(dp 或 推公式容斥)
题干: 链接:https://ac.nowcoder.com/acm/contest/696/C 来源:牛客网 自从上次小w被奶牛踹了之后,就一直对此耿耿于怀. 于是"cow"成为 ...
- 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(六)
目录 作者简介 作者名:王小王-123 人物简介 二十模拟题 每文一语 本系列文章将会以通俗易懂的聊天对话方式,进行知识点的归纳和总结,对话中涵盖了知识点的主要逻辑结构,给人一种"清水出芙 ...
- 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(四)
目录 作者简介 作者名:王小王-123 人物简介 二十模拟题(含解析) 本系列文章将会以通俗易懂的聊天对话方式,进行知识点的归纳和总结,对话中涵盖了知识点的主要逻辑结构,给人一种"清水出芙蓉 ...
- 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(二)
目录 作者简介 人物简介 二十模拟题(含解析) 每文一语 本系列文章将会以通俗易懂的聊天对话方式,进行知识点的归纳和总结,对话中涵盖了知识点的主要逻辑结构,给人一种"清水出芙蓉,天然去雕饰& ...
- PTA: 小H小W爱魔法
目录 原题 参考代码1:(可以运行,但是无法完全通过PTA) 简化的题目 参考代码2:(能通过PTA) pta上做到了这题,先来看看题目 ------------------------------- ...
最新文章
- [LeetCode]k个一组翻转链表(Reverse Nodes in k-Group)
- 西安交通大学17年9月课程考试计算机应用基础,西安交通大学17年9月课程考试《计算机应用基础》作业考核试题 (含主观题)...
- SSM始用 @Autowired(required = false)的一个坑
- C++的内存管理是怎样的
- 云南计算机一级没有开考吗,2020年3月云南计算机一级考试时间
- 云服务器主机性能测试,云服务器主机性能测试
- MSG_NOSIGNAL
- 使用FFMPEG类库分离出多媒体文件中的H.264码流
- 向量与直线,梯度与法向量,切向量
- windows下端口映射(端口转发)
- Elasticsearch 安装详细步骤(保姆级安装)
- 爬取B站视频 - m4s文件的相关研究
- Python 用“*” 输出三角形的代码写法
- 虚拟化与网络存储技术:虚拟化技术、Qemu-KVM
- k8s集群svc端口范围,nfs做StorageClass运行故障
- linux双系统如何选择顺序,Ubuntu和Windows双系统选择开机顺序
- 大学我都是自学走来的,这些私藏的实用工具/学习网站我贡献出来了,建议收藏精品推荐
- 判断FTP文件是否传输完成
- 花花野公子 - 野行之~昆明大理
- 跨境电商 Shopee 的实时数仓之路
热门文章
- 道路运输车辆卫星定位系统JT/T808服务实现和压测
- Ubuntu14.04LST 安装Oracle SQL Developer 4.0.2
- 马云的移动战略:变革和创新
- 使用java导入某个msn帐号的好友列表并发送消息
- number of databases available at XJTLU
- Creator Upload NFT sequencial diagram
- 解锁新姿势 | 如何用配置中心实现全局动态流控?
- MyBatis增删改示例——MyBatis学习笔记之二
- 最新的Java SE平台和JDK版本发布计划
- Java中JRE、JDK和JVM的区别