02 2021 档案
摘要:A - Arena 题意 有一堆人打架,两个人打架战斗力强的赢,相等就谁也不赢。 问每次随机挑一对人打架,有多少人可能一直赢。 题解 随机就是说每个人只会跟最弱的打,如果当前人比最弱的强ans就+1。 #include <bits/stdc++.h> #define int long long #d
阅读全文
摘要:A - Add and Divide 题意 有两个数a和b,每次可以选择把a除去b(下取整)或者把b加1,问最少操作几次使a等于0。 题解 显然这个操作次数不会很多,因为哪怕a是,b是2,最多操作32次肯定够了。 而且注意到第二个操作肯定放在操作的最前面。
阅读全文
摘要:题意 一个数x各个数位上的数之积记为f(x) <不含前导零> 求[L,R)中满足的数的个数 题解 (第一次独立做出来的数位dp) 虽然也是很简单,熟悉数位dp的套路就行了。 数位dp是不是只要写个爆搜然后加个记忆化就行了啊? 先写了的爆搜, $dfs(i, limit, x,
阅读全文
摘要:A - Yet Another String Game 题意 博弈游戏,每次可以把字串一个字母改成不同的,A想让字串变小,B想让字串变大,问最后字串变成啥样。 题解 显然从前往后改,A把字串改成'a',如果本来就是'a'则改成'b',B同理。 #include <bits/stdc++.h> #de
阅读全文
摘要:题意 一个货币系统要求一共有 m 种货币,并且将它们按照币值从小到大排好序以后,前一个货币币值乘上 x 等于后一个货币币值,,且最小的币值一定为 1。 请设计一个货币系统,使得它表示总币值为 n 的钱所需的货币总张数最少。 。 \(m
阅读全文
摘要:题意 给定一列数,要求重新安排这列数,使得相邻两数的乘积之和最大。 有一定限制:某些位置上只能填某个数。 题解 很明显的状压复杂度。 显然当前填的数只与上个数有关。 一开始想以阶段作为状态表示前i个位置,填的状态为k,最大的乘积。 成功地T了这道题。 然
阅读全文
摘要:Source : NAIPC 2018 题意 有棵树,树上有红点和黑点,要选出一系列没有祖孙关系的节点,满足红点恰好有m个,求方案数。 题解 可以用树形背包解决。 表示以x为根的树里,恰好选了j个红点的方案数。 转移就大力分
阅读全文
摘要:A - Space Navigation 题意: 有一个操作序列,会按照序列上的执行,现在要求任意删去一些操作,使得最终能从,询问是否可行。 题解: 能走到的地方是一个范围,判断是否在范围内即可。 #include <bits/stdc++.h> #define
阅读全文
摘要:题意: 测试一批鸡蛋的硬度,有个鸡蛋能用,鸡蛋碎了就不能继续用了,没碎可以捡回来,现在已知鸡蛋的硬度在以内或者不会碎。求最坏情况下最小的检测次数。 题解: 这道题在学校ACM课程选拔的时候见过。当时以为是分块或者二分,结果是动态规划。现在回想起来是的,分块和二分目的是优化时间,而
阅读全文
摘要:题意: 一个长度为的序列,任取个加入集合,剩余加入集合。 集合升序排序,集合降序排序,两个集合之间对应元素作差的绝对值之和记为。 每个元素都看成是不同的(相同大小也不同),求可能的取法的之和。 题解: 想了一会儿没啥想法
阅读全文
摘要:题意: 两个数列,对每一个,求 题解: 更相减损术。 更相减损术是两个数之间的情况,但是个数之间仍旧适用:任意两个数作差,gcd不变。 至于证明很简单,每个数写成即可。 于是相邻两数差分即可
阅读全文
摘要:题意: 已知一个数集中有一些数,又知若都在集合中,那么和也都在集合中,问是否在集合中。 题解: 首先假设一开始集合中存在。 那么每个数的任意倍数都在集合中。 至于证明,可以把看做关于做了对称,容易发现任意倍数可以被表出。 那么假如
阅读全文
摘要:题意: 有个两两不同的数,每个数一定有另外一个数为它的相反数,定义为第个数到别的数的距离和。 现在已知,询问是否存在合法的数列可以生成数列。 题解: 可以在数轴上画出这些数。 显然数列必须是对称,且从原点向右单调递增。 于是可以排序判断每个数是否恰好出现
阅读全文
摘要:祖玛游戏,两种颜色的球,每次可以选定一个长度为的区间,区间内球同色,消除这个区间。消除后左右两边合并,但不会继续消除。求最小操作次数。 考虑对于一个区间,最后一个消灭的肯定是最左边的一些同色球。 为什么是这样? 首先如果只有这个区间,那么最左边永远可以指定作为最后一次消除:因为消除它不会对右边
阅读全文
摘要:写出了的算法,但是却看不懂的算法。 首先说的算法。 把所有牛放在一起从大到小排序,相同则的牛放在前面,问题变为从序列中选择一些元素,使得任意前缀入选的个数大于入选的个数。 表示考虑了前
阅读全文