2020ICPC江西省大学生程序设计竞赛
比赛链接
2020ICPC 江西省大学生程序设计竞赛
A.Simple Math Problem
求解 ,其中 为 的数位和
解题思路
暴力,容斥原理
先预处理所有的 ,对于每个 ,找出 内 与 互质的个数 , 即为 的贡献,关键在于计算 ,根据前缀和,即找 内 与 互质的个数,由于 ,直接计算与 互质的个数不好做,相反计算与 不互质的个数比较方便,即先对 分解质因数种类:,然后找 内倍数为 的数个数,其中也得用到容斥原理
设平均质因子种数为 ,则:
- 时间复杂度:
莫比乌斯函数
等价于 ,由容斥原理,,而 ,则 ,将 提到外面, 的范围为 ,此时需满足 ,设 ,变换,
求解后面一部分,直接线性筛求解欧拉函数即可,前面一部分计算 需 复杂度求解,故:
- 时间复杂度:
代码
- 莫比乌斯函数
- 暴力
C.Charging
数轴上有 一共 个点, 个区间分别是 ,设 为所选取的区间数量, 为所有所选取的区间的交集长度, 求 tot, 的最大值
解题思路
树状数组,二分
所选取的交集区间一定是某个区间的左端点,某个区间的右端点,不妨枚举所选取区间的右端点 ,即按将所有区间按右端点从大到小排序,枚举右端点时前面的点的右端点都满足右端点条件,设所选取区间的左端点为 ,则利用树状数组可计算前面的区间左端点不大于 的点即满足包含区间 的区间的个数,即选取的区间的个数 ,此时交集长度为 ,而要求 最大,其中 固定, 为减函数, 为增函数,当两者最接近时最优,故可二分 ,使其满足 的最小的 ,答案在 或 中
- 时间复杂度:
代码
D.Chinese Valentine's Day
给出 个整数字符串,要求所有本质不同的子串的和
解题思路
后缀自动机
本质上是广义后缀自动机,但可转化为普通后缀自动机,即在 个字符串之间插入一个分割字符,将 个字符串合并为一个字符串,构建 ,由于 的有向无环图中的所有路径与所有子串一一对应,设某一个状态节点 的贡献为 ,每次按某一个字符 扩展到状态节点 ,贡献转移即 ,其中 表示状态节点 表示的子串数量即 ,每次扩展需要前一个状态转移过来,拓扑排序计算贡献即可,同时计算贡献时只需在非分割字符扩展时计算
- 时间复杂度:
代码
E.Color Sequence
给定一个颜色序列,求它有多少个颜色出现次数都是偶数的连续子序列
解题思路
思维
颜色数量比较少,可以考虑用二进制来表示每一种颜色,要求每种颜色出现次数为偶数,即表示的连续子序列异或值为 ,不妨先求出前缀异或值 ,考虑每个数的贡献,对于当前数下标 ,求前面有多少个数 ,满足 ,直接统计前面 的个数即可
- 时间复杂度:
代码
F.Magical Number
定义魔数:其前缀表示的数都能整除该数的位数,每一个个位数都由下列火柴棒组成:
求 () 个火柴棒恰能组成的最大的数
解题思路
暴力dfs
对于 位的魔数 ,后面组成的数 ,共有 条分支,要求 整除 ,这样的条件可想而知,分支数会越来越少,不妨考虑暴力 ,用 速度控制在了 秒内,不妨直接用 ,会发现最大值为 ,没有超出 的范围,所以位数大概到了 的量级就没有出现分支了
共有 层,每层直接最多有 个分支,但实际上很少,故:
- 时间复杂度:
代码
G.Mathematical Practice
个数,要求 个子集,使得子集之间没有交集,求方案数
解题思路
放球问题
由于 比较大,考虑结论
问题转化:将 个不同的球放入 个不同盒子(不一定非要放入盒子中)的方案数,即经典放球问题,每个球有 种选择,答案即为
- 时间复杂度:
代码
J.Split Game
一张 的纸,两个人轮流操作,可以沿着一条直线切,当有人切出 的纸时输掉比赛,问最后谁赢
解题思路
博弈论,sg函数
跟 219. 剪纸游戏 不同的是,这里要求切出 的纸时输掉比赛,则 为终止态,在进行剪纸时不能剪到 的状态再计算 mex 即可
- 时间复杂度:
代码
L.WZB's Harem
给你一张 的图,图上有 和 两种数字,现在有 个互不相同的皇后,需要将这 个皇后放在 的位置上,并且保证这 个皇后之间不存在任意两个皇后处于同一行、同一列,问方案数。
解题思路
状压dp
- 状态表示: 表示前 行,状态为 的方案数, 表示前 个皇后选在哪些列的状态
- 状态计算:
分析: 二进制下含有 个 ,且第 位为 ,则在 的前提下可转移到第 行
枚举行和列,再枚举含有对应 的状态,最坏情况下有 种状态,则:
- 时间复杂度:
代码
__EOF__

本文链接:https://www.cnblogs.com/zyyun/p/16417693.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战