
【算法】倍增与二分
文章平均质量分 83
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【CodeForces1190E】Tokitsukaze and Explosion
题目链接点击打开链接题目解法不难发现,原点距离直线越近,直线所起的作用越大,因此首先二分答案 ansansans 。以 ansansans 为半径,原点为圆心作圆,不妨假定所有直线均与圆相切。对于每一个点 aia_iai ,其对直线的要求可以描述为,在圆周上的某一区间 [li,ri][l_i,r_i][li,ri] 内必须要有至少一个切点。对于此问题在链上的形式,每次尽量向右选取...原创 2019-08-29 20:34:29 · 380 阅读 · 0 评论 -
【LOJ2262】「CTSC2017」网络
【题目链接】点击打开链接【思路要点】首先,本题一点重要的观察是,新建的路径的两个端点必定在树的直径上,若一个方案新建路径的两个端点有一个不在直径上,我们令其向直径靠近,不会使答案变劣。因此,我们可以将直径拿出来考虑,令直径上点数为 tottottot ,每一个点为 posipos_iposi , posipos_iposi 与 posi−1pos_{i-1}posi−1 ...原创 2018-11-02 21:30:52 · 992 阅读 · 1 评论 -
【LOJ2952】「NOIP2018」赛道修建
【题目链接】点击打开链接【思路要点】首先,二分答案 ansansans ,问题转化为判断是否存在 MMM 条长度大于等于 ansansans 的边不相交的路径,考虑树形 dpdpdp 。记 dpidp_idpi 为一个二元组 (x,y)(x,y)(x,y) ,表示在点 iii 的子树中至多可以选出 xxx 条路径,并且在选出 xxx 条路径的基础上,根节点处还可以引出一条长度...原创 2018-12-13 10:27:54 · 701 阅读 · 0 评论 -
【LOJ2955】「NOIP2018」保卫王国
【题目链接】点击打开链接【思路要点】考虑 O(NM)O(NM)O(NM) 的暴力,对于每个询问,我们需要进行一次树形 dpdpdp 。dpdpdp 的状态大致是令某个点 iii 取/不取,其子树内的最优权值和。考虑优化,对于一个询问 (x,y)(x,y)(x,y) ,将路径 (x,y)(x,y)(x,y) 单独考虑,对于路径 (x,y)(x,y)(x,y) 上的每个点,其不在...原创 2018-12-13 11:06:03 · 623 阅读 · 0 评论 -
【CodeForces】CodeForces Round #530 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Sum in the tree【思路要点】题目中给出的限制条件相当于限定了所有深度为奇数的点及其父亲的权值和,显然,将深度为偶数的非叶节点的权值设置得尽可能大有利于减少全局权值和。时间复杂度 O(N)O(N)O(N) 。【代码】#include<bits/stdc++.h>usi...原创 2019-01-20 11:30:34 · 651 阅读 · 0 评论 -
【USACO】2019 January Contest, Platinum题解
**【T1】**Redistricting【题目链接】点击打开链接【题解链接】点击打开链接【思路要点】将 GGG 看做 +1+1+1 , HHH 看做 −1-1−1 ,记原数组前缀和为 sis_isi 。则可以得到动态规划 dpi=∑j=1kdpi−j+[si−si−j≥0]dp_{i}=\sum_{j=1}^{k}dp_{i-j}+[s_i-s_{i-j}≥0...原创 2019-01-25 21:23:06 · 1113 阅读 · 0 评论 -
【CodeForces623E】Transforming Sequence
【题目链接】点击打开链接【思路要点】记 dpi,jdp_{i,j}dpi,j 表示数列的前 iii 项的并有 jjj 位,枚举数列的第 i+1i+1i+1 位使得数值的并增加了 kkk 位,则将 2j∗(j+kk)∗dpi,j2^j*\binom{j+k}{k}*dp_{i,j}2j∗(kj+k)∗dpi,j 加入 dpi+1,j+kdp_{i+1,j+k}dpi+1,j+...原创 2019-03-12 14:32:38 · 294 阅读 · 0 评论 -
【校内训练2019-03-21】C
【思路要点】不妨令 111 号节点为根节点。考虑找到树上的一个叶子结点,删除之,重复该过程,直到只剩下 111 号节点,得到删除序列 aia_iai 。询问一个包含 111 号点的集合 SSS 和一个点 xxx 可以确定 SSS 中是否存在 xxx 的后代,因此我们可以在 Log2N+1Log_2N+1Log2N+1 次操作内找到一个点 xxx 尚未被删除的后代,或确定点 xxx 是...原创 2019-03-22 13:52:05 · 262 阅读 · 0 评论 -
【校内训练2019-03-17】胖
【思路要点】离线操作,我们需要求出各城市破产的时间来回答询问。考虑二分答案,我们需要能够回答形如 “ xxx 城市在 yyy 时刻遭受的损失” 的问题。对于一个修改,我们可以将其拆分为在 O(LogV)O(LogV)O(LogV) 个节点处向下传导至多 O(LogV)O(LogV)O(LogV) 层的损失,在询问时我们只需查询其至多 O(LogV)O(LogV)O(LogV) 个祖先对对...原创 2019-03-19 14:34:48 · 241 阅读 · 0 评论 -
【CodeForces】Avito Code Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Antipalindrome【思路要点】当所有字符相同,答案为 000 。否则,若原串为回文串,删去其最后一个字符一定会使其变成非回文串,因此答案为 N−1N-1N−1 ,否则答案为 NNN 。时间复杂度 O(N)O(N)O(N) 。【代码】#include<bits/stdc++.h...原创 2018-10-25 19:56:20 · 423 阅读 · 0 评论 -
【CodeForces】CodeForces Round #517 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接**【Div.2 A】**Golden Plate【思路要点】直接循环计算答案即可。时间复杂度 O(K)O(K)O(K) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;type...原创 2018-10-22 20:54:05 · 725 阅读 · 0 评论 -
【CodeForces】CodeForces Round #507 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Timetable 【思路要点】 首先,若存在任何一组合法解,有 bi≥ai+t&amp;amp;amp;nbsp;(1≤i≤N)bi≥ai+t&amp;amp;amp;nbsp;(1≤i≤N)b_i≥a_i+t\ (1≤i≤N) 。 对于每一个 xixix_i ,应当满足 xi≥i,&原创 2018-09-10 20:47:42 · 515 阅读 · 0 评论 -
【LOJ2867】「IOI2018」高速公路收费
【题目链接】点击打开链接【思路要点】首先,我们显然需要令所有边为 AAA 进行一次询问,得到 sss 到 ttt 的最短路。我们可以从找到最短路上的一个点出发:令所有与编号在 [1,mid][1,mid][1,mid] 中的点相邻的边为 BBB ,其余边为 AAA ,通过判断最短路是否不变,我们可以知道 sss 到 ttt 间是否存在一条不经过编号在 [1,mid][1,mi...原创 2018-09-18 10:06:27 · 711 阅读 · 0 评论 -
【CodeForces】CodeForces Round #511 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Enlarge GCD【思路要点】令所有数的 gcdgcdgcd 为 ggg ,将所有数除去 ggg ,问题变为了所有数的 gcdgcdgcd 为 111 的情况。我们要选出一个最大的数集,使得这个数集中的数存在不为 111 的公因数。显然我们只需要考虑所有质数即可,线性筛求出每个数的最小质因子,质因...原创 2018-09-25 11:22:38 · 402 阅读 · 0 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Berzerk【思路要点】博弈搜索,将状态按先后手拆点,建出游戏图。若一个点存在出边指向必败态,则该点为必胜态。若一个点所有出边指向必胜态,则该点为必败态。不满足上述两点的点为平局态。用一个类似拓扑排序的过程实现即可。时间复杂度 O(N2)O(N^2)O(N2) 。【代码】#inclu...原创 2018-09-27 18:13:18 · 354 阅读 · 0 评论 -
【CodeChef】September Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接**【ANDSQR】**AND Square Subsegments【思路要点】离线询问,按左端点排序。枚举区间的左端点 lll ,区间 [l,i][l,i][l,i] 的 andandand 和至多变化 O(LogV)O(LogV)O(LogV) 次,二分找到分界点,并找到其中是完全平方数的。每一段 andandand 和相同的区间 [l,i][l...原创 2018-10-06 16:04:18 · 362 阅读 · 0 评论 -
【CodeChef】October Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接**【BBRICKS】**Beautiful Bricks【思路要点】上下两个砖块中,至多有一个黑色。连续的一段存在黑色的行共有两种放置的方案。枚举有几段连续的存在黑色的行,用组合数计算答案。单组数据时间复杂度 O(K)O(K)O(K) 。【代码】#include&amp;lt;bits/stdc++.h&amp;gt;using namespace ...原创 2018-10-21 10:46:08 · 535 阅读 · 0 评论 -
【CodeForces】Lyft Level 5 Challenge 2018 - Elimination Round (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**King Escape【思路要点】皇后会攻击到 888 条直线,其中 444 条斜向的可以跨过,因此可以忽略。判断起始点和目标点是否在其余 444 条线分割出的同一个联通块内即可。时间复杂度 O(1)O(1)O(1) 。【代码】#include<bits/stdc++.h>us...原创 2018-10-10 15:16:22 · 402 阅读 · 0 评论 -
【CodeForces】CodeForces Round #516 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Oh Those Palindromes【思路要点】一个字符串是回文串的一个必要条件是该字符串的第一个字符与最后一个字符相同。因此,记字符 xxx 出现的次数为 cntxcnt_xcntx ,一个字符串回文子串个数的上界为 ∑i=az(cnti+12)\sum_{i=a}^{z}\binom{cnt_...原创 2018-10-17 11:27:01 · 318 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 032 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Limited Insertion【思路要点】考虑时间倒流,对于一个位置 iii ,若 ai=ia_i=iai=i ,则可以将其删去,问是否能将序列删空。不难发现每次删除最大的 iii ,使得 ai=ia_i=iai=i 是唯一的最优策略,模拟之,若无法操作则无解。时间复杂度 O(N2)O(N^2)O(...原创 2019-03-26 17:03:00 · 778 阅读 · 0 评论 -
【AtCoder】ExaWizards 2019 题解
【比赛链接】点击打开链接【题解链接】点击打开链接**【A】**Regular Triangle【思路要点】判断是否 A=B=CA=B=CA=B=C 。时间复杂度 O(1)O(1)O(1) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;ty...原创 2019-03-31 11:21:18 · 742 阅读 · 0 评论 -
【省内训练2019-06-03】String
【思路要点】不难发现对于已知的字符串 SSS ,计算编辑距离可以直接贪心。因此,计算出矩阵 matmatmat ,其中 mati,jmat_{i,j}mati,j 表示 TTT 中未出现的最短的以 iii 开头, jjj 结尾的字符串的长度,用矩阵乘法即可计算编辑距离为 xxx 的最短串的长度。二分答案即可。关于矩阵 matmatmat 的计算可以采用在后缀自动机上 dpdpdp 的...原创 2019-06-06 15:30:33 · 215 阅读 · 0 评论 -
【LOJ2392】「JOISC 2017 Day 1」烟花棒
【题目链接】点击打开链接【思路要点】可以发现,让一个人 AAA 点燃另一个人 BBB 后跑开的解一定能被让 AAA 跟着 BBB 直到 AAA 燃烧殆尽的解完全替代,因此我们可以假设任意时刻,局面中一定只有一个正在燃烧的人。不在燃烧的人一定始终会向正在燃烧的人靠近,一旦到达正在燃烧的人,我们可以看做其燃烧时间增加了 ttt 。正在燃烧的人只有在遇到某人的时候才会转向。二分答案...原创 2019-06-13 15:03:02 · 1100 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 034 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Kenken Race【思路要点】首先, AAA 到 CCC 中与 BBB 到 DDD 中不能存在连续的两个障碍物。其次,若 D<CD<CD<C ,需要额外满足 BBB 到 DDD 中存在至少一个空位两侧均为空位。时间复杂度 O(N)O(N)O(N) 。【代码】#...原创 2019-06-03 09:43:54 · 827 阅读 · 0 评论 -
【LOJ3047】「ZJOI2019」浙江省选
【题目链接】点击打开链接【思路要点】对于 M=1M=1M=1 的情况,问题即为求半平面交。考虑 MMM 更大的情况,以 M=2M=2M=2 为例。首先去掉排名可以为第一的人,则要想取得第二,必须在剩下的人中获得第一,对剩下的人做一次半平面交。每个排名可以为第一的人领先半平面交上的所有人的 xxx 一定是一个非空区间,可以在形成的凸包上直接二分找到这个区间 [li,ri][l...原创 2019-06-16 12:20:27 · 681 阅读 · 0 评论 -
【LOJ2252】「ZJOI2017」多项式
【题目链接】点击打开链接【思路要点】模 222 意义下,多项式平方相等于将每一项的指数翻倍。我们需要维护一些关于字符串 SSS 的信息,使得其能够进行 “指数翻倍” 和 “指数翻倍并乘以原多项式” 的操作。首先考虑测试点 6,7,86,7,86,7,8 。考虑维护字符串 SSS 中 ∣S∣−17|S|-17∣S∣−17 个长度为 181818 的字符串中,每一种字符串的个数...原创 2019-06-26 14:27:21 · 1008 阅读 · 0 评论 -
【校内训练2019-07-11】大水题
【思路要点】考虑没有修改的情况,建立 TTT 的 ACACAC 自动机,用线段树维护 SSS 。在线段树上维护从自动机上任意一点出发,经过区间中每一个字符后产生的匹配次数 cnkcnkcnk ,以及到达的节点 destdestdest ,合并该信息是 O(∑∣T∣)O(\sum|T|)O(∑∣T∣) 的。有修改时,我们需要能够对被赋值的区间快速计算所维护的区间。即我们需要快速计算形如 ...原创 2019-07-11 15:08:47 · 410 阅读 · 0 评论 -
【LOJ555】抢红包
【题目链接】点击打开链接【思路要点】考虑 M=0M=0M=0 的做法,记 P(x,y)P(x,y)P(x,y) 表示经过 (x,y)(x,y)(x,y) 的概率,也即 (x+yx)AyBx\binom{x+y}{x}A^yB^x(xx+y)AyBx ,并记 Ft(x)=∑i=0tP(i,t−i)×xiF_t(x)=\sum_{i=0}^{t}P(i,t-i)\times x^i...原创 2019-07-06 16:32:43 · 444 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 036 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Triangle【思路要点】注意到对于任意一个格点三角形,我们都可以找到一个点,将其平移至原点处后,另外两个点在同一象限内,或在该象限相邻的坐标轴上。因此,可以不失一般性地假定一个点在 (0,0)(0,0)(0,0) 处。令另外两点的坐标为 (x,y),(a,b)(x,y),(a,b)(x,y),(a,b)...原创 2019-08-09 21:08:44 · 499 阅读 · 0 评论 -
【省内训练2019-06-03】Graph
【思路要点】首先考虑 Type=0Type=0Type=0 的做法。矩阵 AiA^iAi 的 (x,y)(x,y)(x,y) 处的元素表示从 xxx 出发走 iii 步是否能够到达 yyy 。问题即为令 xxx 为一个足够大的数,找到最小的 ddd ,使得 Ax+d=AxA^{x+d}=A^xAx+d=Ax 。定义无向图 GGG 是 kkk 分图,当且仅当可以给其中每一个点 iii 拟...原创 2019-06-06 15:25:00 · 214 阅读 · 0 评论 -
【CodeForces】CodeForces Round #562 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 Increasing by Modulo【思路要点】二分答案,贪心判断。时间复杂度 O(NLogM)O(NLogM)O(NLogM) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 3e5 + 5;t...原创 2019-05-28 15:13:38 · 452 阅读 · 0 评论 -
【CodeForces】CodeForces Round #549 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接【A】 The Beatles【思路要点】任取一个合法的起始点,枚举所有可能的步长 lll ,计算步数 N×kgcd(Nk,l)\frac{N\times k}{gcd(Nk,l)}gcd(Nk,l)N×k ,取最优值即可。时间复杂度 O(NLogV)O(NLogV)O(NLogV) 。【代码】#incl...原创 2019-04-04 20:50:38 · 989 阅读 · 0 评论 -
【CodeForces1140G】Double Tree
【题目链接】点击打开链接【思路要点】树形 dpdpdp 算出 2i2i2i 和 2i−12i-12i−1 之间的最短路替换 2i2i2i 和 2i−12i-12i−1 之间的边。此后,我们每一步或是向目标走一步,或是沿最短路走到另一棵树上。直接倍增 +++ 动态 dpdpdp 计算最短路即可。时间复杂度 O(NLogN+QLogN)O(NLogN+QLogN)O(NLogN...原创 2019-04-05 11:09:35 · 897 阅读 · 0 评论 -
【CodeForces645G】Armistice Area Apportionment
【题目链接】点击打开链接【思路要点】考虑找到使得 ∣PX−QX∣|PX-QX|∣PX−QX∣ 最小的 XXX , XXX 应为 PPP 关于 lll 的对称点 P′P'P′ 与 QQQ 所连直线与 lll 的交点,若两直线平行,则 XXX 可取无穷远处的一点。此时 ∣PX−QX∣=P′Q|PX-QX|=P'Q∣PX−QX∣=P′Q ,因此原问...原创 2019-04-12 15:33:18 · 355 阅读 · 0 评论 -
【校内训练2019-04-12】绝对伏特加
【思路要点】考虑 ∏aiF\prod a_i^F∏aiF 的组合意义,即对于每一种颜色,找到一个关键点,重复 FFF 次。考虑交换求和顺序,我们首先决定每种颜色被找到的关键点,剩余的没有被选中的位置任意涂色。令关键点的指数型生成函数为 G(x)=∑i=0kS(k,i)×i!i!xi=∑i=0kS(k,i)xiG(x)=\sum_{i=0}^{k}\frac{S(k,i)\times i...原创 2019-04-17 13:37:55 · 338 阅读 · 0 评论 -
【LOJ3054】「HNOI2019」鱼
【题目链接】点击打开链接【思路要点】考虑枚举 A,DA,DA,D ,那么显然选择 B,CB,CB,C 和 E,FE,FE,F 的方案数是独立的。枚举 DDD ,将剩余点对 DDD 极角排序,按序枚举 AAA ,则选择 E,FE,FE,F 的方案数可以通过用哈希表维护一定角度内所有点到 DDD 距离的平方来实现。考虑选择 B,CB,CB,C 的方案数,我们要求 BC⊥ADBC\...原创 2019-04-23 13:54:41 · 604 阅读 · 0 评论 -
【BZOJ4231】回忆树
【题目链接】点击打开链接【思路要点】分开处理路径上竖直的字符串和在 LcaLcaLca 处拐弯的字符串。在 LcaLcaLca 处拐弯的字符串总数在 O(∑∣S∣)O(\sum|S|)O(∑∣S∣) 级别,可以直接 KmpKmpKmp 判断。竖直的字符串可以在离线询问后通过 ACACAC 自动机和树状数组处理。时间复杂度 O(NLogN+MLogN+∑∣S∣)O(NLogN...原创 2019-04-22 14:54:01 · 584 阅读 · 0 评论 -
【LOJ3059】「HNOI2019」序列
【题目链接】点击打开链接【思路要点】没有修改的做法在《IOI2018中国国家候选队论文集——浅谈保序回归问题》中有所介绍。具体做法如下:(1)(1)(1) 、注意到若所有 BiB_iBi 均相等,最小化 ∑i=1N(Ai−B)2=∑i=1NAi2−2AiB+B2\sum_{i=1}^{N}(A_i-B)^2=\sum_{i=1}^{N}A_i^2-2A_iB+B^2∑i=1...原创 2019-04-24 17:01:02 · 1168 阅读 · 0 评论 -
【LOJ3082】「2019 集训队互测 Day 5」小水题
【题目链接】点击打开链接【思路要点】考虑一次钻孔操作对全局水位的影响。注意到一次钻孔操作只会使得水向某一方向流动,以下认为水向右流动进行讨论。定义函数 querySum(l,r)querySum(l,r)querySum(l,r) 表示区间 [l,r][l,r][l,r] 的水位和。定义函数 queryLeft(l,r,h)queryLeft(l,r,h)queryLeft...原创 2019-05-07 16:29:56 · 1020 阅读 · 0 评论 -
【CodeForces】Manthan, Codefest 18 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Packets 【思路要点】 可以用 1,2,4,...,2i,N−2i+1+11,2,4,...,2i,N−2i+1+11,2,4,...,2^i,N-2^{i+1}+1 构造一组最优的可行方案。 其中 iii 为使得 N−2i+1+1&amp;gt;0N−2i+1...原创 2018-09-05 11:34:15 · 397 阅读 · 0 评论