上一页 1 2 3 4 5 6 7 8 ··· 18 下一页
摘要: Sol 考虑询问两个边界 \((1,1)\) 和 \((1,n)\),手玩可以发现就得到了 \(x_1+x_2\) 和 \(y_1+y_2\)。 注意到 \(x=\left\lfloor\frac{x_1+x_2}{2}\right\rfloor\) 可以询问出 \(\left|x_1-x_2\ri 阅读全文
posted @ 2025-05-07 10:02 incra 阅读(11) 评论(0) 推荐(0)
摘要: Sol 直接建立两颗可持久化线段树,一个维护以 dfn 为下标的数,这个是为了做子树异或,一个做根到当前点的,这个是为了做链上异或。 Code #include <bits/stdc++.h> #define x first #define y second #define pb push_back 阅读全文
posted @ 2025-05-02 10:03 incra 阅读(9) 评论(0) 推荐(0)
摘要: Sol 直接一位一位贪,判断贪完之后是否能放满 \(k\) 个即可。 这个东西我们只需要维护一个区间里面最多能取几个,然后 set 维护当前没选的段即可。 Code #include <bits/stdc++.h> #define x first #define y second #define p 阅读全文
posted @ 2025-05-02 10:02 incra 阅读(11) 评论(0) 推荐(0)
摘要: Sol 很神秘的 trick。 注意到最小圆覆盖是 \(O(len)\) 的,那么如果直接二分每个段,肯定会 TLE。 于是考虑先倍增找出一个和长度同级别的一个范围,然后在这个范围里面二分,每段的次数就是 \(O(len \log len)\),那么全部加起来就是 \(O(n \log n)\) 的 阅读全文
posted @ 2025-05-01 13:34 incra 阅读(25) 评论(0) 推荐(0)
摘要: Sol 简单题。 首先不连通一定无解。 假设 \(deg_i\) 表示 \(i\) 的点的度,那么 \(deg_1 < d\) 显然无解。 注意到如果把 \(1\) 删了以后,如果连通块数量大于 \(d\) 那么也无解。 否则我们只需要考虑先在把 \(1\) 删掉以后各个连通块各选一个点与 \(1\ 阅读全文
posted @ 2025-04-28 13:23 incra 阅读(11) 评论(0) 推荐(0)
摘要: Sol 观察答案的长度: \(1989\sim 1998\) 答案 \(1\) 位。 \(1999\sim 2098\) 答案 \(1\) 位。 \(\dots\dots\)。 所以可以直接每次偏移 \(10^{len}\),直到答案在范围内。 Code Link。 阅读全文
posted @ 2025-04-28 11:31 incra 阅读(17) 评论(0) 推荐(0)
摘要: Sol 显然二分 + 数位 DP。 但是直接会超时,于是记录每个问题里面的重复部分即可。 阅读全文
posted @ 2025-04-21 21:35 incra 阅读(9) 评论(0) 推荐(0)
摘要: Sol 注意到书被用了两次,所以让它夹在中间,然后注意要拆点,因为这个点不能被用多次。 Code #include <bits/stdc++.h> #define x first #define y second #define pb push_back #define pf push_front 阅读全文
posted @ 2025-04-17 17:49 incra 阅读(4) 评论(0) 推荐(0)
摘要: Sol 还是阅读理解题。 显然可以把加生命的部分可以直接加到血量上。 然后就是每个人之多被使用血量次,直接多重匹配即可。 Code #include <bits/stdc++.h> #define x first #define y second #define pb push_back #defi 阅读全文
posted @ 2025-04-17 17:33 incra 阅读(20) 评论(0) 推荐(0)
摘要: Sol 考虑建模: 考虑把每个点拆成 \((i,j)_1\) 和 \((i,j)_2\),分别表示入点和出点。(此处拆点是为了添加每个点上的岩石被选一次的限制。) 那么此时就要跑最大费用最大流,考虑把边权取反,那么就变成了常规的最小费用最大流。 对于 \(g_{i,j}\neq 1\),连一条 \( 阅读全文
posted @ 2025-04-16 14:28 incra 阅读(8) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 18 下一页