2025/10/21 总结

博弈

情况

  • 时间:\(30min\)
  • 预期:\(100\)
  • 实际:\(100\)

知识点

  • 贪心

思路

我们考虑有多少个数为奇数即可,我们设所有数之和为 \(sum\),并且其中有 \(cnt\) 个奇数,所以最后的答案为 \(sum-\lfloor\frac{sum}{3}\rfloor-[cnt\bmod3=1\&cnt\neq1]\),所以就做完了。

购物

情况

  • 时间:\(30min\)
  • 预期:\(100\)
  • 实际:\(100\)

知识点

  • 模拟

思路

我们发现如果两个数 \(b_i,b_j(i\neq j)\) 如果两个都会用,设 \(b_i\)\(x\) 个,\(b_j\)\(y\) 个,所以有三种情况:

  1. \(b_i>b_j\),所以 \(xb_i+yb_j<(x+y)b_i\),故这种方法一定不为最大值;
  2. \(b_i<b_j\),所以 \(xb_i+yb_j<(x+y)b_j\),故这种方法一定不为最大值;
  3. \(b_i=b_j\),所以 \(xb_i+yb_j=(x+y)b_i\),故一定存在一种方法与这种方法的大小一样。

所以我们只可能选一种 \(b\)。所以我们枚举选哪一个 \(b\),再计算即可。要注意一下,可能只选择 \(a\) 这种情况。

划分

情况

  • 时间:\(1h\)
  • 预期:\(100\)
  • 实际:\(100\)

知识点

  • 单调栈,\(\text{dp}\)

思路

我们可以先 \(O(n^2)\)\(\text{dp}\),得到 \(dp_i=dp_j+w(i+1,j)\)(这里 \(w(x,y)\)\(x\sim y\) 中最小的 \(a\)\(b\) 值),所以我们考虑优化 \(\text{dp}\)。我们可以把 \(dp_i\) 的式子转化一下,\(dp_i=\max_{k=1}^{top}(\max_{j=s_{k-1}+1}^{s_k}dp_j+b_{s_k})\),所以我们可以用单调栈来处理这个值就行了。

树上计数

情况

  • 时间:\(1.5h\)
  • 预期:\(100\)
  • 实际:\(100\)

知识点

  • 长链剖分,\(\text{dp}\)

思路

我们先可以很轻松的写一个 \(O(n^2)\)\(\text{dp}\),设 \(dp_{0,x,i}\) 为以 \(x\) 为根的子树距离为 \(i\) 的有多少节点,\(dp_{1,x,i}\) 为距离 \(i\) 的节点中有多少个合法的两对,所以我们从上至下 \(\text{dp}\) 即可。我们再思考如何优化,我们观察一下就可以发现这其实是一道长链剖分板题,每次先计算重儿子,再计算轻儿子即可,最后答案为每一个点上的答案。

posted @ 2025-10-21 12:49  小熊涛涛  阅读(5)  评论(0)    收藏  举报