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

题目传送门(内部题8)


输入格式

一行三个整数$n,m,k$。


输出格式

一行一个整数表示答案。对$998244353$取模。


样例

样例输入

3 7 3

样例输出

6


数据范围与提示

对于10%的数据,$1\leqslant n,m,k\leqslant 10$。
对于40%的数据,$1\leqslant n,m,k\leqslant 1,000$。
对于70%的数据,$1\leqslant n,m,k\leqslant {10}^5$。
对于100%的数据,$1\leqslant n\leqslant {10}^9$,$1\leqslant n,k\leqslant {10}^7$。


题解

$20\%$算法:

如果$n>m$或$n<m\times k$那么一定没有方案,直接$puts("0");$即可。

时间复杂度:$\Theta(1)$。

期望的分:$0$分。

实际的分:$20$分。

$10\%$算法:

爆搜,枚举所有情况即可。

时间复杂度:$\Theta(n^k)$。

期望的分:$10$分。

实际的分:$10$分。

$40\%$算法:

考虑$DP$,设$dp[i][j]$为到第$i$个城市,一共用了$j$个建设队的方案数。

那么可以列出状态转移方程:$dp[i][j]=\sum \limits_{k=1}^{\min(k,m)}dp[i-1][j-k]$。

时间复杂度:$\Theta(n^3)$。

期望的分:$40$分。

实际的分:$40$分。

$100\%$算法:

考虑容斥,挡板法。

这个问题可以转化为,在$m$个物品中插入$n-1$个挡板,挡板不能插在一起,那么方案数就是$C_{m-1}^{n-1}$。

现在需要减去不合法的方案数,设至少有$i$个城市不合法,那么方案数就是$C_n^i\times C_{m-i\times k-1}^{n-1}$,可以理解为,我先将那$i\times k$个不合法的扔掉,再在$m-i\times k$里面选合法的即可。

利用容斥统计答案即可。

时间复杂度:$\Theta(m)$。

期望的分:$100$分。

实际的分:$100$分。


代码时刻

$20\%$算法:

#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int main()
{
	scanf("%d%d%d",&n,&m,&k);
	if(n>m||n*k<m)puts("0");
	return 0;
}

$40\%$算法:

#include<bits/stdc++.h>
using namespace std;
int dp[7000][7000];
int main()
{
	int n,m,k;
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=k;i++)dp[1][i]=1;
	for(int i=2;i<=n;i++)
		for(int j=i;j<=m;j++)
			for(int l=1;l<=min(k,m);l++)
				dp[i][j]=(dp[i][j]+dp[i-1][j-l])%998244353;
	cout<<dp[n][m]<<endl;
	return 0;
}

$100\%$算法:

#include<bits/stdc++.h>
using namespace std;
long long n,m,k;
long long jc[100000001],qsm[100000001];
long long ans;
long long qpow(long long x,long long y)
{
	long long res=1;
	while(y)
	{
		if(y&1)res=res*x%998244353;
		x=x*x%998244353;
		y>>=1;
	}
	return res;
}
void pre_work()
{
    jc[0]=1;
    for(int i=1;i<=m;i++)
        jc[i]=1LL*jc[i-1]*i%998244353;
    for(int i=0;i<=m;i++)
        qsm[i]=qpow(jc[i],998244351)%998244353;
}
long long cm(long long x,long long y)
{
    return jc[x]*qsm[y]%998244353*qsm[x-y]%998244353;
}
long long lucas(long long x,long long y)
{
    if(!y)return 1;
    return cm(x%998244353,y%998244353)*lucas(x/998244353,y/998244353)%998244353;
}
int main()
{
	scanf("%lld%lld%lld",&n,&m,&k);
	if(n>m||n*k<m){puts("0");return 0;}
	pre_work();
	long long flag=-1;
	ans=jc[m-1]*qsm[n-1]%998244353*qsm[m-n]%998244353;
	for(int i=1;i<=n;i++)
	{
		if(m-i*k<n)continue;
		ans=(ans+flag*lucas(n,i)%998244353*lucas(m-i*k-1,n-1)+998244353)%998244353;
		flag=-flag;
	}
	printf("%lld",(ans+998244353)%998244353);
	return 0;
}

rp++

转载于:https://www.cnblogs.com/wzc521/p/11329755.html

华为2022硬件逻辑笔试题 单选题(每题两分) 1.以下关于过程赋值的描述,不正确的是() A在非阻塞性过程赋值中,使用赋值符号“< =” B赋值操作符是“=”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延:如果是0时延,那么在当前时间步结束) D非阻塞性过程赋值在其后所有语句执行前执行 解:D 2.芯片的功耗和下列哪种不强相关_____________。 A资源利用率 B核电压 C组合逻辑级数 D翻转率 解:A 3.下列说 阅读详情

相关推荐

诠视MR眼镜Unity开发设置_Unity2020.3.38

请按照如下设置Android SDK 和 Gradle。打包前先将Unity切换到Android模式。Preferences 设置。

m0_71932574的博客 603

随机二分图

随机二分图 题解 我们先来分析一下各个部分分。 对于5%的数据,:直接枚举每一种状态。 对于5%的数据,:与上面一个差不多。 对于10%的数据,:暴力枚举每个点的连接情况,与上面差不多。 暴力按道理说可以跑过20%的分,只是打的区别而已。 对于5%的数据,且,直接输出即可。 对于15%,,状压即可。 剩下两个20%是给考试时间不够的人选择打情况的。 对于100%的数据,我们可以先考...

StaroForgin的博客 535

告别手动抓信号!Synopsys AXI VIP的Port Monitor实战:5分钟搞定与Scoreboard的TLM连接

本文详细介绍了Synopsys AXI VIP的Port Monitor功能,帮助验证工程师快速实现与Scoreboard的TLM连接,5分钟内完成自动数据收集。通过实战指南和常见问题排查,提升验证效率,告别手动抓信号的繁琐流程。

weixin_30565327的博客 300

[HNOI2010]CITY城市建设

题意 动态改边权MSTMSTMST 题解 考虑和线段树分治+LCT+LCT+LCT一样的思想,对修改时间分治 考虑一段时间的修改的那些边 暴力就是当L=RL=RL=R时直接让修改生效,,,然后求一遍MSTMSTMST 这样是不行的因为图的规模没有还是mmm 所以在每一层分治中就是考虑怎么缩小图的规模 考虑一个修改的两种极端情况 1.1.1.把这条边变成−∞−∞-\in...

BeNoble_的博客 907

Spring AI + RAG 构建电商智能客服:从 PDF 文档解析到精准问答的全链路实战

核心框架:向量数据库:- PostgreSQL + pgvector (生产推荐)- Redis Stack (轻量级方案)- ChromaDB (快速原型)文档解析:- Apache PDFBox: PDF 文本提取- Spring AI Document Readers: 结构化解析大模型:- 阿里云百炼 (DashScope)- 本地部署:Qwen/ChatGLM/*** 电商领域实体*/@Data@Builder@ToString/*** 商品类型。

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 381

建设城市(city) (容斥)

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

weixin_30713953的博客 443

别再到处找离线包了!Visual Studio 2022 企业版/社区版离线安装保姆级教程(含工作负载选择指南)

本文提供Visual Studio 2022企业版/社区版离线安装的详细教程,包括工作负载选择指南和批量安装优化策略。针对网络隔离或带宽受限环境,介绍如何制作离线安装包、选择合适的工作负载组合,并分享高级技巧如增量更新和自动化部署,帮助团队高效统一开发环境配置。

weixin_28745821的博客 732

[Code+#4]组合数问题2

题目 展开 题目描述 众所周知,小葱同学擅长计算,尤其擅长计算组合数,所以小葱给了你两个数 nn 和 kk,希望你找到 kk 个不同的组合数使得这 kk 个组合数的和最大。所谓不同的组合数,即对于组合数 C_{a_1}^{b_1}C a 1 ​ b 1 ​ ​ ​​​ 和 C_{a_2}^{b_2}C a 2 ​ b 2 ​ ​ ,若 a_1\neq a_2a 1 ​  ​ =a 2 ​ ...

Brute♂force 1106

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 218

ENS160传感器原理图设计,已量产(空气质量传感器)

ENS160 是一款集成式数字空气质量传感器,核心优势源于 “MEMS 传感元件 + 内置微处理器” 的架构。

不脱发的程序猿 572

建设城市(city)(【CCF】NOI Online 能力测试2 入门组第三题 )

时间限制:1.0 秒 空间限制:256 MB 题目描述 球球是一位建筑师。一天,他收到市长的任务:建设城市。球球打算建造2n 座高楼。为了保证城市美观,球球做出了如下计划: 球球喜欢整齐的事物。他希望高楼从左向右排成一行,编号依次为 1∼2n。 球球喜欢整数,他要求每座高楼的高度都是正整数。 由于材料限制,高楼的高度无法超过m。 球球喜欢中间高,两边低的造型。他要求前n座...

Running Snail 1342

ML307R OpenCPU TCP使用

实现现象 平台下发数据,板子在收到数据之后,马上再发送到平台,通过串口助手可以看到已经接收到数据。ML307R TCP 是使用LWIP的标准的socket通信,具体TCP流程可以自行百度。实验目的:实现把接收的数据再发送到服务端。因为是4G,所以必须用外网的。

面朝大海春暖花开 2232

思维入门1

A. 小 B 的异或 小 B 收到了一串数字,其中包含nn个数字。 寄件人想知道这nn个数的异或结果,但小 B 并不会求,就把这个问题转交给你。 但他为了使你求得的更方便,于是运用魔法把这nn个数都变成了11。 现在,你需要求出这nn个11异或后的结果。 关于异或: 下表为aa与bb的异或结果: aa bb a \oplus ba⊕b 11 00 11 11 11 00 00 00 00 00 ...

★探梦少年☆的博客 1073

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

2019 蓝桥杯省赛 B组模拟赛(一) 部分题解(持续更新)

 F. 程序设计:找质数   数据范围 对于 30\%30% 的数据 1 \le t \le 10^31≤t≤103。 对于 60\%60% 的数据 1 \le t \le 10^51≤t≤105。 对于 100\%100% 的数据 1 \le t \le 10^6, 4 \le n \le 10^61≤t≤106,4≤n≤106,nn 为偶数。   由于本题的数据范围过大,需要对素...

大芝士球的博客 3877

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2019.9.19 csp-s模拟测试47 反思总结

思路接近正解?都想到了?这都是借口呀。 没有用的,往前走吧。 T1:Emotional Flutter 我的做法和题解不太一样,我把s放在最后考虑了。 因为出发以后步幅是一样的,所以每一个黑条可以ban掉一段出发点。把黑条的左右边界%k存成区间,每个黑条可以存一个或者两个区间【跨越k这个边界】。然后像以前写区间覆盖的贪心一样按左端点排序,看看有没有长至少为s的空余。 代码...

weixin_30905133的博客 304

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【CSP-S2019模拟】10.05比赛总结

又又又又又是自闭的一天 比赛思路 传送门 T1:简单的构造题,但是没有清晰的思路,只好打表观察,再总结构造的方法。 T2:观察了十几分钟后才发现是一个仙人掌,难道是仙人掌上倍增、点分治? T3:没有时间打,暴力还打错了,自闭Orz 赛后消化 T1由于思路不周少了一种构造方法,没了40分。 T2暴力又挂了,思想上有80分,打了40分,另外四十分要仙人掌上倍增??超级难打。然而正解却十分简单,只...

Deep_Thinking的博客 428

建设城市(city):组合数,容斥原理

想模一大堆人呢。考场上AC的大仙。 估计没人想给这题好好写一个题解吧,因为它的确挺简单的。。。 但是它对我来说一点都不简单啊!!! 至少出题人用脚写题解的时候肯定认为这道题是送分题了 容斥,枚举至少有 i 个不满足条件,方案数为C(n,i)*C(m-i*k-1,n-1)。 对着题解发了半个小时的呆。我真的就是不会啊我有什么办法。 为啥就不重不漏了啊?为啥就最少了啊?为...

weixin_38168696的博客 278

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 323

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 369

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 598

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 412

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 23

26-下载中心按哈希分目录存文件

为解决大导出文件存储的扩展性与一致性问题,采用哈希分目录策略:以任务 key 前四位划分为两级子目录,结合安全文件名构建路径(如 a3/f9/a3f9c2e1..._orders.xlsx),实现文件分散存储。业务库仅保存任务状态与 key,下载中心通过内网接口接收文件流并管理持久化,支持无状态扩容。配合内存索引与定期清理作业,确保元数据与文件一致。该方案有效避免单目录膨胀、提升性能,并通过共享令牌控制访问,保障安全性。

CAthlete的博客 180

栈和队列和数组-优快云博客

一句话理解:栈就像一个羽毛球桶或手枪弹夹——只能从一头放、从一头取,最后放进去的最先拿出来。严格定义:栈是限定仅在某一端进行插入或删除操作的线性表。允许插入和删除的一端叫栈顶(top);另一端叫栈底(bottom);不含任何元素的栈叫空栈;栈中元素遵循后进先出(LIFO,Last In First Out)。两个核心动作插入数据叫入栈 / 进栈(Push);删除数据叫出栈(Pop)。⚠️ 易错点:栈只能在一端操作,不是两端。判断题里说「栈允许在两端操作」一定是错的。一句话理解。

2501_93853322的博客 169

Vue3 低代码移动表单设计器实战(二):缩放画布下的拖拽系统与树状级联数据结构

本文深入剖析Vue3低代码表单设计器在缩放画布下的拖拽失效问题,揭示SortableJS在CSS Transform下坐标崩溃的数学根源。通过自研独立视觉克隆壳层与逆向几何补偿算法,实现精准拖拽;采用扁平数据存储+运行时树状计算结构,解决级联依赖与深克隆难题,确保逻辑一致性与性能优化,为复杂低代码系统提供可复用的工程范式。

NanChen的博客 347
上一篇: Pocket PC访问PC上的Webservice
下一篇: 逆向破解之160个CrackMe —— 002-003
badiu_30394251
博客等级 码龄11年 124粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值