02 2021 档案

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

点击右上角即可分享
微信分享提示