做题记录

  • P3871: 平衡树模板,每一次加入一个数,然后直接用排名求出中位数

  • P1503: 平衡树模板,将修复摧毁视为添加删除,答案是前驱后继的差\(+1\)

  • P4145 开不了多少就会变成1,多出来的开根操作没有意义,直接分块暴力对每一个块开根,同时如果和等于区间长度,说明该区间已经全部为1,不在进行之后的操作

  • P3304 : 求出直径后对直径上的端点逐一查询

  • P3374: 模板

  • P5057: 线段树每一次对查询区间打标记,翻转两次等于没有反转,判断点的奇偶性

  • P3368: 模板

  • P1253: 每次有限下发修改的\(tag\),有加就把值直接加到赋的值上

  • P1908: 值域树状数组

  • P1637: 值域树状数组,对于每个组来说中间的数就是前面更小的数的个数,乘上后面更大的数的个数

  • P4868: 线段树直接做,每一次修改,影响它后面的所有前缀和,线段树区间加

  • P1168: 直接加入,查询直接查

  • P3390: 模板

  • P3865: 模板

  • P3379: 模板

  • P1886: 模板

  • P1903: 模板

  • P1656: 割边模板

  • P3372: 模板

  • P4779: 模板

  • P3369: 模板

  • P3385: 负环

  • P8306: 模板

  • P3370: 模板

  • P5656: 模板

  • P1433: 状圧 \(dp\) ,每一个奶酪是否取到, 枚举最后一次走到的点转移

  • P5025: 二分,然后线段树优化建图,然后 \(tarjan\) 缩点

  • B3928: 双指针

  • P1650: 贪心双指针,打得过就打,不然就换

  • P1362: 只有不产生进位才有可能产生兔子数,所以每一位都 \(\leq 3\)

  • P1466: \(dp\) 每一个数的凑法,答案是 和的一半的凑法

  • P1467: 大力枚举判断

  • P1470: \(trie\) 暴力匹配

  • P1474: \(dp\)

  • P1473: 暴力搜索每一个空位的填法

  • P1475: 依次以每一个公司为起点,统计拥有的其他公司股票数

  • P7243: 一个点与起点的行列差值就是它被感染的天数,二分然后 \(n^2\) 查找 洛水天依

  • P2401: 如果插入到最左边,会造成新的序列比原来多一个大于号

如果插入到最右边,会造成新的序列比原来多一个小于号
然后 \(dp\)

  • P1468: 无论哪种状态,循环节总为 \(6\),打表,依次筛检
  • P12948: 意思就是判断相同颜色的是否都在一起
  • P1472: \(dp\)
  • P14137: 最大点 \(-\) 最小点的平方
  • P1529: \(floyd\)
  • P6473: 贪心:优先用大的魔法,二分:显然单调性
  • P1530: 记录余数是否有重复,还有如果约分后分母有 \(2\)\(5\) 以外的因数直接无限循环
  • P1522: 先求每一个牧区牧场内的点的最远距离,在根据这个求出直径,然后暴力枚举连接的两个点,连接后的大牧场的直径要为两个原牧场的最大值,或者是两个点的距离和两个点 到最远的点的距离的和
  • P2723 \(s_i\) 表示 \(a_i\) 至少乘第几个丑数才能比第 \(i - 1\) 个丑数大,再取最小值,依次往后推
  • P1546: 最小生成树
  • P2725:\(dp\) 然后暴力找
  • P2949: 反悔贪心,每一次能做就做,不然替换之前价值最低的任务显然不劣
  • P4053: 反悔贪心,每一次能做就做,不然替换之前耗时最长的任务显然不劣
  • P1134: 直接乘维护后 \(11\) 位的值
  • P2730: 直接 \(bfs\)
  • P2341: 缩点, 然后答案就是没有出边的点的大小,如果有多个点没有出边,答案为 \(0\)
  • P2835: 先 传递闭包,再直接并查集
  • P2746: 第二问就是缩点后入读为 \(0\) 的点数和 出度为 \(0\) 的点数的最大值i
  • P2812: 没区别
  • P2002: 还是没区别
  • P1828: 暴力枚举,最短路
  • P2729: 答案是

\[k_1 * a_1 + k_2 * a_2 + k_3 * a_3 = k_a \]

\[k_1 * b_1 + k_2 * b_2 + k_3 * b_3 = k_b \]

\[k_1 * c_1 + k_2 * c_2 + k_3 * c_3 = k_c \]

中最小的 \(k_1 + k_2 + k_3\)

  • P3545: 能放就直接放,不然就换掉之前消耗最大的
  • P1527: 二维莫队,卡常
  • P2709: 莫队模板
  • P4867: 莫队 \(+\) 值域分块
  • P5906: 模板
  • P10728: 按攻击排序,那么只要防御大于当前的最大值就是有用的
  • P2169: 强连通分量,最短路时如果两个点在一个联通快内边权直接为 \(0\)
  • P2731: 模板,欧拉回路
  • P2732: 最多需要 \(5\) 个商品,直接五维 \(dp\) 暴力做
  • P7291: 贪心选右边的
  • P7148: 肯定会先把牛翻倍到足够的数量在派到别的地方
  • P2734: 区间 \(dp\) 因为都采取了最优策略,所以一个区间的答案就是相邻的区间总和减去最优取法(另一个人取剩下的)加上当前的点
  • P2733:\((i,j)\) 为右下角,的最大矩形受到\((i-1,j-1),(i-1,j),(i,j-1)\)限制,取最小值 再 + 1, 丢到桶里,把桶再算一个前缀和
  • P2735: 计算几何 \(pick\) 定理, 反用一下公式
  • P2736: 状压 \(dp\),从前往后推,每一次从最后一张碟不用的情况转移过来,记录两个量,当前剩余的空间和已经用了的碟片数量, 超过了就再开一张,最后的合法答案是使用数量 \(\leq\) 限制的
  • P10815: 模板
  • P1012: 邻项交换, \(A + B > B + A\)
  • P8113: 邻项交换,从大到小
  • P3076: 邻项交换,从小到大
  • P3253: 把两个栈顶端相接,指两个向相接的地方,移动时加上从指的到目标位置的贡献,删除时再把要删的点的贡献减掉, 树状数组维护
  • P2737: 直接 \(dp\)\(5e6\), 反正不超过这个值
  • P3147: \(dp_{i,j}\) 表示 从 \(i\) 开始凑出 \(j\) 的右端点, 拼出\(j\) 显然需要两个 \(j - 1\)
  • P7535 :\(dp_{i,j}\) 表示 前 \(i\) 张钞票两人差值为 \(j\) 时的和,可以把钱给少的扔,那么差值就从 \(j\) \(=>\) \(j - a_i\) ,也有可能小的变成大的,所以加上绝对值,或者给大的,差值扩大 \(a_i\)
  • P1005 : 每一次取得区间都会翻倍,因为多取了个点,所以转移就是

\[f_{i,j} = max(2 f_{i+1,j} + 2 a_i, 2 * f_{i,j-1} + 2 a_j) \]

每一次取相互独立,可以分开做

  • P7801:

\[P1 \times P2\;\; = \;\;\frac{x}{y} \times \frac{\sum c_i - x}{\sum a_i - y}\;\; = \;\; \frac{x \times \sum c_i - x ^2}{y \times \sum a_i - y ^2} \]

因为精度问题不能直接记录,但是可以记录 $ x $ 的 最大值最小值

  • P4765: 邻项交换发现按照价值从大到小买最优,然后 \(dp_{i,j}\) 表示前 \(i\) 项 被干掉了 \(j\) 项得到的价值, 因为后手会让价值更小,所以使用或不使用操作的最小值,最后价值的最大值 再减去消耗

  • P4170: \(f_{i, j}\) 表示涂区间 \([i,j]\) 的次数,如果 \(i,j\)
    颜色相同,就可以直接从 \([i,j - 1]\) 拓展,还有就是枚举端点再去最小值

  • P2135: 仅用状态 \(i,j\) 表示 \([i,j]\) 的答案不行,再加上\(k\)\(f_{i,j,k}\) 表示在块 \(i\)\(j\) 以及后面连续 \(k\) 个与块 \(j\) 颜色相同的小格最优的消除价值,在把后面相同颜色的数预处理,就可以容易转移

  • P3149: 如果现在排序的数比之前排过的最大的数小那就不用排,对于一些数来排队比他的数来说没有影响,因为位置还在,只是换了数,所以实际上是把这些数的产生的逆序对消掉了,又因为消掉的肯定是一段一段的,所以预处理每个数的贡献,再做一个前缀和

  • P2184 : 答案是右端点前面的左右起点减去还没有到左端点就已经结束了的右端点,两个树状数组

  • P11328: 邻项交换,从大到小排序两项的和

  • P6278: 求完逆序对后查询时一次累加

  • P4939: 模板树状数组

  • P1972: 离线后按\(r\) 排序,每一次从前面的\(r\)完后处理,如果已经出现过就把上一次出现位置的贡献减去

  • P1966: 根据排序不等式可将题目转换为求逆序对

  • P4514: 二维树状数组模板

  • P4113: 和项链类似,但是要记录上次和上上次的

  • P5367: 模板

  • P6225: 分奇偶性来讨论,两棵树状数组

  • P4310: 拆位\(dp\)

  • P1020: 用 二分贪心 求最长上升,不严格上升子序列

  • P1725: 直接\(dp\) 不行,发现每一次从前面的一个区间最大值转移,于是使用单调队列优化

  • P4933:\(dp_{i,j}\) 表示以\(i\)为结尾,公差为\(j\)的方案数,枚举前面一个数,得到两个数的差,进行转移

  • P3287: 发现每一次的使用的右区间一定是 \(n\),然后根据\(dp\)发现这其实可以用二维树状数组求最大值来优化,设\(dp_{i,j}\) 表示\(i\)\(j\)个区间覆盖过

posted @ 2025-10-23 09:36  wmq2012  阅读(2)  评论(0)    收藏  举报