摘要:
题意 有$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 阅读全文
摘要:
题意 给定一列数,要求重新安排这列数,使得相邻两数的乘积之和最大。 有一定限制:某些位置上只能填某个数。 \(n\le16\) 题解 很明显的状压复杂度。 显然当前填的数只与上个数有关。 一开始想以阶段作为状态$f[i][j][k]$表示前i个位置,填的状态为k,最大的乘积。 成功地T了这道题。 然 阅读全文
摘要:
Source : NAIPC 2018 题意 有棵树,树上有红点和黑点,要选出一系列没有祖孙关系的节点,满足红点恰好有m个,求方案数。 \(n\le2*10^5\) \(m\le 1000\) 题解 可以用树形背包解决。 $f[x][j]$表示以x为根的树里,恰好选了j个红点的方案数。 转移就大力分 阅读全文