想模一大堆人呢。考场上AC的大仙。

估计没人想给这题好好写一个题解吧,因为它的确挺简单的。。。

但是它对我来说一点都不简单啊!!!

至少出题人用脚写题解的时候肯定认为这道题是送分题了

容斥,枚举至少有 i 个不满足条件,方案数为C(n,i)*C(m-i*k-1,n-1)。

对着题解发了半个小时的呆。我真的就是不会啊我有什么办法。

为啥就不重不漏了啊?为啥就最少了啊?为啥就容斥了啊?为啥我抄了这个式子才30分啊?

我估计没多少人会看这一篇所以废话有点多。

其实容斥原理不难想到,考场上我就想到了。

但是我的思路清奇了一波,我在想通过容斥计算出“恰好有i个城市不满足条件的方案数”

一共要求出n个,每次复杂度是n,总复杂度n2。

然后就滚去打暴力了。

然而为什么要把每一个都求出来啊!它们之间跟没就没有递推的依赖啊。

所以说就是脑子不行。

所以问题其实只是求解我刚才那个问题在i=0时的值,求解一次就好。

考场上想不到就算了,诚当是攒exp了。

那么考虑如何求解。

问题中的“恰好”让人感到有些拘束,那么就别恰好了,至少0个好吧?

那就水极了,相当与没有上界限制,问题就是m物分n人,每人至少1。

挡板法的裸题。是 $ C^{n-1}_{m-1} $ 啦。这个还是比较简单的。

至少0个的处理完了,那么至少1个的呢?

首先在所有城市里选出1个, $ C^1_n $ 。

然后是在剩下空余的建设队里,选择k个先分给你选定的那个城市,剩下的m-k个分给所有的这n个城市。

还是挡板法: $ C^{n-1}_{m-k-1} $

注意,你选定的那个城市也要继续参与分配,至少再被分到1个,否则它就是恰好k个而并非超过k个了。

至少2个呢?算的过程和含义都一样: $ C^2_n × C^{n-1}_{m-k*2-1} $

至少i个呢?$ C^i_n × C^{n-1}_{m-k*i-1} $

至此我们终于得到了题解里面的式子。(我早就在半道上迷路了)

接下来就可以容斥了。剩下的就是一个容斥的裸题了。

然而我连容斥奇加偶减都不会了。。。

对于至少有1的情况中,里面会包括至少有2的情况。。。

啊。。。然后用二项式定理证它就是个容斥了嘛(其实是我不会了)

 #include<bits/stdc++.h>
using namespace std;
#define mod 998244353
#define int long long
int inv[],fac[],invv[],n,m,k;
signed main(){
scanf("%lld%lld%lld",&n,&m,&k);
if(n>m){puts("");return ;}
if(n==m){puts("");return ;}
// if(m>n*k){puts("0");return 0;}
inv[]=inv[]=fac[]=fac[]=invv[]=;
for(int i=;i<=m;++i)invv[i]=-mod/i*invv[mod%i]%mod,inv[i]=inv[i-]*invv[i]%mod,fac[i]=fac[i-]*i%mod;
int ans=fac[m-]*inv[n-]%mod*inv[m-n]%mod;
for(int i=;i<=n&&i*k+n<=m;++i)ans=(ans+((i&)?-:)*fac[n]*inv[i]%mod*inv[n-i]%mod*fac[m-i*k-]%mod*inv[n-]%mod*inv[m-i*k-n]%mod)%mod;
printf("%lld\n",(ans%mod+mod)%mod);
}

贴代码就跑

建设城市(city):组合数,容斥原理的更多相关文章

  1. 8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)

    鉴于T3的惨烈程度,我决定先来颓篇题解. T1 建设城市(city) 挡板法+容斥 m个建设队分成n组,每组必须有一个,先不考虑上限,共有 C(m-1,n-1)种方案. 有i个组是超过k个的,容斥掉 ...

  2. 嵊州D6T2 城市 city

    城市 city [问题描述] 众所周知,why 是czyz 王国的国王. czyz 王国一共有n 个城市,每个城市都有一条道路连向一个城市(可能连向这个城市自己). 同时,对于每一个城市,也只有一条道 ...

  3. [CSP-S模拟测试]:建设城市(city)(组合数学+容斥)

    题目传送门(内部题8) 输入格式 一行三个整数$n,m,k$. 输出格式 一行一个整数表示答案.对$998244353$取模. 样例 样例输入 3 7 3 样例输出 数据范围与提示 对于10%的数据, ...

  4. 【模拟8.09】建设城市(city) (容斥)

    放在了考试T1 发现70分的DP很水啊,f[i][j]为当前位置是i分配了j个队的方案 我们用前缀和统计,在将i删去,j倒序枚举,就可以删掉一维(也可以滚动数组滚起来) 1 #include<i ...

  5. NOIP模拟测试15「建造城市city(插板法)·轰炸·石头剪刀布」

    建造城市 题解 先思考一个简单问题 10个$toot$ 放进5间房屋,每个房屋至少有1个$toot$,方案数 思考:插板法,$10$个$toot$有$9$个缝隙,$5$间房屋转化为$4$个挡板,放在t ...

  6. 组合数+容斥原理 UVALive 7040 Color(14西安F)

    题目传送门 题意:n盆花涂色,相邻不能涂相同的颜色,从m中颜色选取k种颜色涂,保证正好有k种颜色 分析:从m中颜色选取k种就是C (m, k),然后第一个有k种选择,之后的都有k-1种选择,这样是不超 ...

  7. [NOIP模拟15]题解

    A.建设城市(city) 这容斥题多难啊你们是怎么考场切掉的啊 首先可以想一下,如果没有k的限制,这题怎么做? 相信你们肯定能看出来是挡板法裸题:m个物品分给n个人,每个人至少一个. 就是$C_{m- ...

  8. XML:使用DOM技术解析xML文件中的城市,实现select级联选择

    中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...

  9. 微信小程序实现按首字母检索城市列表

    不说废话,上效果图 因为我有多处要用到,所以我这里是写成自定义组件的,你也可以直接改成在page页面编写: 布局左边一个scroll-view,显示城市列表,右边一个view显示字母列表,城市列表这边 ...

随机推荐

  1. GIT原理介绍

    Git 是一套内容寻址文件系统.很不错.不过这是什么意思呢? 这种说法的意思是,Git 从核心上来看不过是简单地存储键值对(key-value).它允许插入任意类型的内容,并会返回一个键值,通过该键值 ...

  2. 06-01 DeepLearning-图像识别

    目录 深度学习-图像识别 一.人脸定位 二.手工提取特征的图像分类 2.1 识图认物 2.2 传统分类系统的特征提取 2.3 计算机眼中的图像 2.4 什么是图像特征? 2.5 卷积运算 2.6 利用 ...

  3. python编程基础之二十六

    偏函数:当一个函数有大量的参数时候,调用时候非常不方便,于是就可以用偏函数解决,将一些参数固定(默认值),达到简化函数调用的目的 使用偏函数需要导入functools import functools ...

  4. 【bzoj2342】[Shoi2011]双倍回文

    这题属于博主还未填坑系列,先嘴巴AC,到时候有时间再搞字符串时,再来好好填坑. 废话不多说上题: 题解: 显然是和马拉车有关的吧,我们可以先对整个串跑一个马拉车,然后枚举‘#’好字符,并以他为中心,在 ...

  5. UVA - 11795 Mega Man's Mission

    Mega Man is off to save the world again. His objective is to kill the Robots created by Dr. Wily who ...

  6. 如何在Linux服务器上部署Mysql

    一.安装mysql 1.通过文件上传工具,将mysql安装包上传到linux服务器上 2.卸载mariadb包,由于系统中存在mariadb包会导致mysql安装时报错mariadb-libs被mys ...

  7. VPGAME 的 Kubernetes 迁移实践

    作者 | 伍冲斌  VPGAME 运维开发工程师 导读:VPGAME 是集赛事运营.媒体资讯.大数据分析.玩家社群.游戏周边等为一体的综合电竞服务平台.总部位于中国杭州,在上海和美国西雅图分别设立了电 ...

  8. [CF467D] Fedor and Essay

    After you had helped Fedor to find friends in the «Call of Soldiers 3» game, he stopped studying com ...

  9. Codeforces Round #426 The Meaningless Game

    题目网址:http://codeforces.com/contest/834/problem/C 题目: C. The Meaningless Game Slastyona and her loyal ...

  10. 记录一次gdb debug经历

    目录 问题描述 查看core文件 使用gdb查看core文件 总结 问题描述 今天在写代码时,运行时奔溃了.segment fault,而且是在程序退出main()函数后,才报的. 唯一的信息是:Se ...