上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页
摘要: D - National Railway 矩阵DP,拆绝对值 设向下为 \(x\) 正方向,向右为 \(y\) 正方向 设两个点为 \((x_1,y_1),\;(x_2,y_2)\), 代价为 \(A_{x_1y_1}+A_{x_2y_2}+|x_1-x_2|+|y_1-y_2|\) 想办法拆掉绝对 阅读全文
posted @ 2022-06-09 20:10 hzy0227 阅读(24) 评论(0) 推荐(0) 编辑
摘要: F - Deforestation 插入DP,前缀和优化DP 因为砍一颗树的代价只与相邻的树的高度有关,并且在第 \(i\) 棵与第 \(i+1\) 棵中 先砍第 \(i\) 棵,代价为 \(h[i-1]+h[i]+h[i+1]+h[i+1]+h[i+2]=h[i-1]+h[i+2]+h[i]+2* 阅读全文
posted @ 2022-06-08 18:41 hzy0227 阅读(51) 评论(0) 推荐(0) 编辑
摘要: E - Shiritori 对抗博弈,BFS,哈希 对于每个字符串,设前三位哈希值为 a,后三位哈希值为 b,则可用 b 来代表该字符串,连一条 a → b 表示若当前是 a 字符串,可以变成 b 反向建图,连 b → a 的边,则入度为 0 的边就是原图的终点,是必败态,赋 0,并将其放入队列 b 阅读全文
posted @ 2022-06-08 18:28 hzy0227 阅读(34) 评论(0) 推荐(0) 编辑
摘要: F - Vlad and Unfinished Business 树形dp 答案可看作是 x->y 路径长度 + 路径上的点向有标记的点上拐一圈回来的代价 先以 x 为根 dfs,求出将路径上的点 \(u\) 标记为 \(path[u]=1\), \(son[u]\) 表示 \(u\) 子树中的标记 阅读全文
posted @ 2022-06-07 20:41 hzy0227 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 矩形面积并 扫描线,线段树 http://oj.daimayuan.top/course/15/problem/688 #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <cm 阅读全文
posted @ 2022-06-07 15:15 hzy0227 阅读(19) 评论(0) 推荐(0) 编辑
摘要: E - Digit Products 数位dp 因为只能由 1~9 相乘而来,所以 \(mul=2^a*3^b*5^c*7^d\), \(d<=c<=b<=a<=log_2k\), 所以最多 \(log^4k\) 种乘积,总复杂度为 \(O(log^4k*logn)\) #include <iost 阅读全文
posted @ 2022-06-07 13:01 hzy0227 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 线段树 单点修改,区间查询 线段树2 - 题目 - Daimayuan Online Judge #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <cmath> using 阅读全文
posted @ 2022-06-04 17:37 hzy0227 阅读(74) 评论(0) 推荐(0) 编辑
摘要: D - Congruence Points 计算几何 给出两个点集 S,T,判断 S 点集的点是否可以通过平移、绕原点旋转变成 T 先求出两个点集的重心,将 S,T 中点的坐标都变成相对重心的坐标(也可以认为是平移到重心是原点的地方) 这时若 S 可旋转变成 T,则就可以 可枚举 \(S[i]\) 阅读全文
posted @ 2022-06-02 18:07 hzy0227 阅读(38) 评论(0) 推荐(0) 编辑
摘要: D - Max GEQ Sum 单调栈 + st表 如果枚举每个区间的话,就算用 st 表 \(O(1)\) 查询,总复杂度也是 \(O(n^2)\) 所以要想办法减少要枚举的区间,用类似于贪心的思路,只枚举那些更容易使得 区间最大值 < 区间和 的区间 为了使区间最大值不变大,区间和不变小,可以想 阅读全文
posted @ 2022-06-01 12:34 hzy0227 阅读(112) 评论(0) 推荐(1) 编辑
摘要: D - String Deletion 贪心、链表 要想操作次数最大,设当前已经删到了第 i 个字符,那第一步操作就要找到 i 后面第一个有连续0/1的串,删掉其中一个 找到 i 后面第一个有连续0/1的串:将这些可以被删去的位置记录到 set 里,二分找到 i 后面第一个,找到了就删去 删去元素后 阅读全文
posted @ 2022-05-31 16:20 hzy0227 阅读(15) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页