摘要: 原题意可以转化为把所有矩形映射到 \(0<=x<=d && 0<=y<=d\) 这个区域内,然后用扫描线判断有没有点没有矩形没有覆盖到,这个点为起点就可以存活。 首先把矩形映射下来是个非常难写的模拟: vector<line>l;//扫描线的线段 void push(ll x, ll y, ll x 阅读全文
posted @ 2021-08-19 23:04 Lecoww 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 提供一种轻重链剖分+dp的做法 先把2树的倍增数组预处理好,用下面这个方式查询可以省去上跳的时间(直接欧拉序也行,不过比赛的时候能想到欧拉序我就不会写dp了QAQ): int lca(int u, int v) { if (d[u] > d[v])swap(u, v);//默认v的深度较大 whil 阅读全文
posted @ 2021-08-19 22:52 Lecoww 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 两人的行走可以分成两类: ①在两人的路径上; ②离开这条路径后一直走到叶子节点; 那么我们可以先把这条路径上每个点到 除了包含这条路径 的叶子 的最长路径,假设A和B两个人的距离是x,这样就得到了一个长度为x的上述数组。 之后就去模拟每个人选取最优的行动: int solve(int l, int 阅读全文
posted @ 2021-08-19 22:42 Lecoww 阅读(78) 评论(0) 推荐(0) 编辑