随笔分类 - 题解
摘要:似乎这道题是一道假题,因为std没考虑完全,导致有很多hack数据可以hack。。 各种题解也都被各种hack,似乎只能暴搜写?? 难怪我30min就切掉了,算了假算法就假算法吧,来讲讲我的假做法。 BZOJ上有另一道Zuma2,那道题的做法是真的,那道题在我之前的博文里面有,这里不提了。 错误做法
阅读全文
摘要:A - Alexey and Train 模拟,没啥需要讲的,按照题目写就行了。 #include <bits/stdc++.h> #define Mid (l + r << 1) #define lson (rt << 1) #define rson (rt << 1 | 1) using nam
阅读全文
摘要:题意 字符串由0-9组成,每一位可以是0-9的任何一个数。 并且要求字符串不包含另一个给定的字符串,求方案数。 题解 一开始以为是数位dp,然后发现是一个dp。 设$f[i][j]$为前$i$个字符,最后$j$个字符与目标串匹配的方案数。 我们可以枚举下一个字符,考虑下一个字符会对匹配产生什么影响。
阅读全文
摘要:题意 一棵树,给定每个点的度数,$-1$为无限制,求满足该度数的树的个数。 题解 prufer序列的裸题。 关于prufer序列,网上有更加详细的介绍,这里就不展开说明了,只介绍跟该题相关的性质。 所有无根树可以跟prufer序列形成双射。 一棵无根树,每个点在prufer序列出现的次数为它的度数减
阅读全文
摘要:题意 用六边形瓷砖拼成一个三角形,第i行有i个小瓷砖,问本质不同的方案数有多少。 两个方案本质不同指两个方案不能通过120度或者1270度旋转,或者通过对角线翻转变成另一种。 题解 第二次做$Burnside$引理的题目(其实是因为不会$Polya$) 这道题的置换群比较直观,每个操作都是一个置换。
阅读全文
摘要:题意 有$r,b,g$三种卡牌,各有各的张数,卡牌排列的不同方案数。 两种方案相同当且仅当一种方案经过$m$个置换的其中某种置换可以变成另一种。 保证$m$个个置换任意组合都可由其中一个代替,并且保证对于每一种置换都存在另外的置换使得它能回到原先的状态。 题解 第一次做置换的题目 根据 保证$m$个
阅读全文
摘要: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\le10^9\) 题解 显然这个操作次数不会很多,因为哪怕a是$10^9$,b是2,最多操作32次肯定够了。 而且注意到第二个操作肯定放在操作的最前面。
阅读全文
摘要:题意 计算 \(\sum_{i=0}^{n - 1}\sum_{j = 0}^{m - 1}max((i\ xor\ j) - k,\ 0)\) 题解 首先需要把题意抽象出来。 注意到$i\ xor\ j \le k$时,这个式子就直接等于0,所以只要求$i\ xor\ j > k$的这部分值就行了
阅读全文
摘要:题意 一个数x各个数位上的数之积记为f(x) <不含前导零> 求[L,R)中满足$0<f(x)<=n$的数的个数 题解 (第一次独立做出来的数位dp) 虽然也是很简单,熟悉数位dp的套路就行了。 数位dp是不是只要写个爆搜然后加个记忆化就行了啊? 先写了的爆搜, $dfs(i, limit, x,
阅读全文
摘要:A - Yet Another String Game 题意 博弈游戏,每次可以把字串一个字母改成不同的,A想让字串变小,B想让字串变大,问最后字串变成啥样。 题解 显然从前往后改,A把字串改成'a',如果本来就是'a'则改成'b',B同理。 #include <bits/stdc++.h> #de
阅读全文
摘要:题意 计算1~n所有数的除1和这个数本身的约数的和。 \(n\le 2e9\) 题解 枚举每个数计算因数是$O(n\sqrt)$的,会超时。 考虑改成枚举因数,计算有多少个数是i的倍数,显然有$\frac$个。 每个因数对于答案的贡献为$i * (\lfloor\frac\rfloor-1)$(需要
阅读全文
摘要:题意 一个货币系统要求一共有 m 种货币,并且将它们按照币值从小到大排好序以后,前一个货币币值乘上 x 等于后一个货币币值,\(x ∈ {2, 3, 4, 5}\),且最小的币值一定为 1。 请设计一个货币系统,使得它表示总币值为 n 的钱所需的货币总张数最少。 \(n ≤ 10^18\)。 \(m
阅读全文
摘要:Source : NAIPC 2018 题意 有棵树,树上有红点和黑点,要选出一系列没有祖孙关系的节点,满足红点恰好有m个,求方案数。 \(n\le2*10^5\) \(m\le 1000\) 题解 可以用树形背包解决。 $f[x][j]$表示以x为根的树里,恰好选了j个红点的方案数。 转移就大力分
阅读全文
摘要:A - Space Navigation 题意: 有一个操作序列,会按照序列上的执行,现在要求任意删去一些操作,使得最终能从$(0,0)\(走到\)(x,y)$,询问是否可行。 题解: 能走到的地方是一个范围,判断是否在范围内即可。 #include <bits/stdc++.h> #define
阅读全文
摘要:题意: 测试一批鸡蛋的硬度,有$m$个鸡蛋能用,鸡蛋碎了就不能继续用了,没碎可以捡回来,现在已知鸡蛋的硬度在$[1,n]$以内或者不会碎。求最坏情况下最小的检测次数。 题解: 这道题在学校ACM课程选拔的时候见过。当时以为是分块或者二分,结果是动态规划。现在回想起来是的,分块和二分目的是优化时间,而
阅读全文
摘要:题意: 一个长度为$2n$的序列,任取$n$个加入$A$集合,剩余加入$B$集合。 $A$集合升序排序,$B$集合降序排序,两个集合之间对应元素作差的绝对值之和$\sum|x_i-y_i|$记为$f$。 每个元素都看成是不同的(相同大小也不同),求可能的取法的$f$之和。 题解: 想了一会儿没啥想法
阅读全文
摘要:题意: 已知一个数集中有一些数,又知若$x,y$都在集合中,那么$2x-y$和$2y-x$也都在集合中,问$k$是否在集合中。 题解: 首先假设一开始集合中存在$0$。 那么每个数的任意倍数都在集合中。 至于证明,可以把$2x-y$看做$y$关于$x$做了对称,容易发现任意倍数可以被表出。 那么假如
阅读全文
摘要:题意: 有$2n$个两两不同的数,每个数一定有另外一个数为它的相反数,定义$d_i$为第$i$个数到别的数的距离和。 现在已知$d_i$,询问是否存在合法的数列可以生成$d$数列。 题解: 可以在数轴上画出这些数。 显然$d$数列必须是对称,且从原点向右单调递增。 于是可以排序判断每个数是否恰好出现
阅读全文
摘要:祖玛游戏,两种颜色的球,每次可以选定一个长度为$k$的区间,区间内球同色,消除这个区间。消除后左右两边合并,但不会继续消除。求最小操作次数。 考虑对于一个区间,最后一个消灭的肯定是最左边的一些同色球。 为什么是这样? 首先如果只有这个区间,那么最左边永远可以指定作为最后一次消除:因为消除它不会对右边
阅读全文

浙公网安备 33010602011771号