省赛训练小记
记录一下这一个周做的一些题
-
HDU7146 枚举不在同一斜线/横线/竖线的两个点,然后暴力枚举这两个点所在直线的类型,求出交点就是中心点,判断是否合法即可
-
HDU7175 先跑最短路,得到可能在最短路图上的边构成了一个新图,由于有 0 边因此可能有环,缩点之后在 DAG 上 dp 即可
-
CF1746C & CF1656D 签到
-
HDU7214 枚举这个数字有多少次出现,然后只需要求出此时的方案数。设 代表考虑到第 位,当前这个数字出现了 次,上界/前导 0,转移是个大讨论
-
GYM103428M 将输赢放到网格上,输往上,赢往右,那么考虑对于每一个输的时候记一个 表示这之前连续赢了几次。问题转化为 ,且 ,容斥一下转化为 ,然后是一个经典子问题: 即 , 问方案数,这个子问题考虑容斥,每次枚举有 个位置超了 ,可以先填一个 然后和没事一样继续填数,这样就保证了一定是超了的。显然容斥之后得到了这个子问题的答案:,带回即可
-
LOJ10159 换根 dp 即可,每次维护以某个点为根的最大/次大深度即可
-
HDU7203 签到题,注意 是固定的,拿个 map 存即可
-
GYM102361D 签到题
-
GYM104337C 如果是 的话显然答案就是 ,否则剩下的 列(行同理)经观察发现这块就是
-
GYM104337F 考虑 | 两端的回文半径构造即可
-
GYM104337H 将 出现次数根号分治,小的部分用桶,大的暴力,小和大的连接用桶+暴力
-
GYM104337I 即求最小的 ,使得 ,首先可以用质因数分解求出 ,然后有 ,由 互质可以发现其包含的质因数都是无交集的,而 1e18 最多有 15 个质因子,因此我们可以枚举哪些质因子对应的是 的,剩下的必然是 的。具体的,假设:
同时,有
其中
则显然有 ,和
化简得 ,将 作为变量用扩欧即可 -
GYM104337J 贪心+优先队列
-
GYM104337K dp推导+数学归纳法可得答案是
-
GYM104337M 签到题
-
HDU6235 签到题
-
HDU6240 分数规划首先二分答案,转化为 的问题,首先将所有小于 0 的部分都加上,因为加上之后答案肯定不劣。然后考虑按照右端点从小到大扫,做 dp,设 表示考虑到第 个时刻的结果,那么对于当前的 来说,答案肯定是 用线段树/树状数组维护即可
-
HDU6231 考虑二分第 大的数 ,那么如果这个数是第 大,令 ,则能推出 的区间个数不会小于 个,用 two-pointers 解决,注意 可能会爆 int
-
HDU6230 先用 manacher 求出每个点的回文半径,注意到题目给的条件实际上就是 与 为中心的回文串相交且交到 处。考虑倒序扫一遍,每次扫到 为中心的回文串时,就将 加上1,每次只需要统计 中有多少个 1,就代表了能和多少个回文串构成题目所求的回文串,用树状数组维护这个过程
-
HDU6241 二分答案,那么第二个条件可以变成子树内的特殊点应该 <=,可以树形 dp 记一下每次的最小值 & 最大值,然后和这个点对应的限制条件比一下。注意要判一下总共选的个数区间是否包含二分时的答案
-
HDU6242 傻逼题。每次随机三个点,由于题目中保证了存在圆使得包含一半结点,随机次数不会很多。被精度卡爆,不能开
long double
,eps 要开到 1e-3.....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示