![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
oj刷题
文章平均质量分 53
各大oj的刷题
run around
这个作者很懒,什么都没留下…
展开
-
AcWing 3256. 商路(dfs序+线段树+斜率优化)
题目 首先可以比较容易的写出dp的转移,化简后发现是含有i和j的乘积形式,所以可以想到斜率优化。化简后可以发现决策点就是(2*dis[j], dp[j]-dis[j]*dis[j]),斜率是-(f[i]+dis[i])。 但是决策的范围是在i的子树,并不是传统的[1,i-1]。所以使用dfs序将子树问题转化为区间问题。注意斜率优化的决策点的横坐标需要单调递增,所以每个线段树节点需要维护当前区间的节点,并按横坐标排序,用这些决策点维护一个斜率单调递减的序列。但是横坐标还可能相同,根据贪心,如果横坐标相原创 2021-08-04 12:51:14 · 193 阅读 · 0 评论 -
D. BFS Trees(bfs+枚举计数)
题目题意: 给定一张n个点m条边的联通无权图,要求输出对于任意的i,j,在原图中有多少棵生成树,使得i,j到生成树上的任意一点的距离等于i,j在原图上到达他们的距离。 1≤n≤400,1≤m≤6001≤n≤400,1≤m≤6001≤n≤400,1≤m≤600分析: 首先我们预处理出所有点的最短路。然后我们考虑将一个点x加入到最小生成树,那连那条边呢?能连的点的距离一定是x与i的距离减一,x与j的距离减一,这样连上去才能保证i,j到x的距离为最短距离。 还有一种点,他们在i原创 2021-03-15 12:17:10 · 172 阅读 · 0 评论 -
C. Break Up(枚举+割边)
题目题意: 给定一张n个点m条边的带权图,输出是否可以删去最多两条边,使得s与t不连通。有多种方案时输出权值最小的方案,没有则输出-1。 1≤n≤1e3,1≤m≤1e41≤n≤1e3,1≤m≤1e41≤n≤1e3,1≤m≤1e4分析: 可以注意到n比较小,而且最多删两条,那就考虑能否枚举一条,再去尝试删去另一条。那我们枚举的这一条边一定是在s到t的一条路径上的,且这条路径上一定要删去一条边。所以我们先找到s到t的一条路径,枚举删去这条路径上的一条边,现在的问题就变成删去一条边,能原创 2021-03-11 18:26:22 · 120 阅读 · 0 评论 -
E. Ehab‘s REAL Number Theory Problem(思维+最小环)
题目题意: 给定一个序列,这个序列的因子数不超过7个,要求从这个序列里拿出尽可能少的数,使得他们的乘积为完全平方数。无解输出-1。 1≤n≤1e5,1≤a[i]≤1e61≤n≤1e5,1≤a[i]≤1e61≤n≤1e5,1≤a[i]≤1e6分析: 首先完全平方数有一个性质,就是素因子分解后,每个素因子的指数都是偶数,所以对于一个数它的素因子是偶数的就不用考虑了。其次我们考虑每个数字的因子数不超过7个,那么可以发现素因子个数不超过2个。那么选择一个数就变成了选择两个素因子(只有一个原创 2021-03-10 18:07:32 · 167 阅读 · 0 评论 -
D. Graph and Queries(可撤销并查集+启发式合并+set维护)
题目题意: 给定一张无向图,n个点,m条边。每个点都有点权,点权互不相同,有两种操作。 操作1:1 v,输出v点所在的连通块的点权最大值,并将那个点的权值置为0。 操作2:2 i,将第i条边删去。 1≤n≤2e5,1≤m≤3e5,1≤q≤5e5。1≤n≤2e5,1≤m≤3e5,1≤q≤5e5。1≤n≤2e5,1≤m≤3e5,1≤q≤5e5。分析: 这种带有删边的题目一般都会考虑从后往前加边,但是这道题每次输出答案的时候同时修改了点权,所以从后往前似乎无法操作。再考原创 2021-03-09 22:49:36 · 172 阅读 · 0 评论 -
C. Greedy Shopping(线段树+复杂度分析)
题目题意: 有n个商店,每个商店吃一顿饭需要a[i]元,保证a[i]单调不减。现在有q次操作: 操作1:1 x y,表示将区间[1,x]的a[i]变为max(a[i],y); 操作2:2 x y,现在有一个人有y元钱,从x个商店开始,如果能吃饭,就花费a[i]元钱吃一顿,否则就不吃去下一家,一直到第n家,输出一共能吃多少顿。 1≤n≤2e5,1≤q≤2e5。1≤n≤2e5,1≤q≤2e5。1≤n≤2e5,1≤q≤2e5。分析: 首先这个是对区间进行操作,我们可以很原创 2021-03-09 22:40:41 · 130 阅读 · 0 评论 -
G. Columns Swaps
题目题意: 给定2*n的数组,每次可以交换同一列的两个元素,要求使用尽可能少的操作使得每一维都形成一个n的排列。 1≤n≤2000001≤n≤2000001≤n≤200000分析: 要想满足条件,那么1-n的元素都要出现两次。考虑对于一个x,如果两个x在同一行,那么一定只能交换一列。如果在不同行,那么这两列要么不交换,要么都交换。对于这种双向边的操作,就可以用并查集来维护,而有向边则需要用2-sat。 所以我们使用一个并查集,i代表第i列需要操作,i+n代表第i列不需要操原创 2020-09-02 11:20:41 · 171 阅读 · 0 评论 -
D. Balanced Playlist(单调队列)
题目题意: 给定n张唱片,每张唱片都有一个好听度a[i]。某个人选择第i张唱片开始播放,播放完则下一张继续播放,到第n张时下一张为第1张。当某一张唱片的好听度严格小于已经听过的唱片的最大值的一半时,这个人将会停止播放。要求输出对于任意的选择一张唱片i开始,最多能听几张唱片,也可能是无穷多,这时输出-1。 2≤n≤105,1≤ai≤1092≤n≤10^5,1≤a_i≤10^92≤n≤105,1≤ai≤109分析: 思考第1张唱片停止的位置,假设为j。那么显然第二张唱片停止的位置一原创 2020-06-25 09:00:10 · 335 阅读 · 1 评论 -
E. Divisor Paths(数论+思维+多重集全排列)
题目题意: 给定一个数d,构造出一张图。点是d的所有因子,两个数x,y,若x|y并且x/y为素数,那么这两个点之间就有一条边,边权为d(x)-d(y)(d(x)为x的因子个数)。有q次访问,每个给定x,y。输出从x到y的最短路径条数。 1≤d≤1015,1≤q≤3⋅105,1≤v,u≤d1≤d≤10^{15},1≤q≤3⋅10^5,1≤v,u≤d1≤d≤1015,1≤q≤3⋅105,1≤v,u≤d分析: 首先我们考虑从x走到它的因子y,路径权值为d(x)-d(x1)+d(x1)-原创 2020-06-12 18:34:22 · 223 阅读 · 0 评论 -
F. Make k Equal(前缀和+分析)
题目题意: 给定一个数组,每次操作可以令最大的值减一或最小的值加1。要求用尽可能少的操作使得数组中至少有k个元素相等。 1≤k≤n≤2⋅105,1≤ai≤109。1≤k≤n≤2⋅10^5 , 1≤a_i ≤ 10^9。1≤k≤n≤2⋅105,1≤ai≤109。分析: 分析之后可以发现,最后的k个相同的元素一定是数组中的某一个元素。因为如果不是的话,这个元素将数组分为两部分(大于答案和小于答案),我们完全可以往元素比较多的那部分移动答案,代价就是元素比较少的部分全体加1,元素比较原创 2020-06-10 10:43:49 · 527 阅读 · 0 评论 -
F. Decreasing Heights(枚举+dp)
题目题意: 给定一个二维数组,每个位置有高度。一开始在(1,1)点,要走到(n,m)点。每次往下走或往右走,但是必须满足下一个位置的高度比当前位置恰好大1。可以进行操作让某一个点的高度减1,要求输出从左上到右下需要操作的次数最少。 1≤n,m≤100,1≤ai,j≤10151≤n,m≤100,1≤a_{i,j}≤10^{15}1≤n,m≤100,1≤ai,j≤1015分析: 其实认真分析后可以发现,在最后答案的路径中,一定是有一个点没有被变化的。因为如果路径上所有点都被减1了,原创 2020-06-09 23:04:56 · 202 阅读 · 0 评论 -
E. We Need More Bosses(无向图环缩点+树的直径)
题目题意: 给定一张无向图,要求在上面选择两个点s,t,若某条边删去后,无法从s到t,则对答案的贡献加1,要求最大的答案。 2≤n≤3⋅105,n−1≤m≤3⋅105。2≤n≤3⋅10^5 , n−1≤m≤3⋅10^5。2≤n≤3⋅105,n−1≤m≤3⋅105。分析: 首先成环的那些边一定不会对答案产生贡献,所以我们把成环的点缩成一个点,然后缩点之后,图就无环了,也就变成了一棵树。那么答案就是树的直径了。#include <iostream>#include &原创 2020-06-09 10:12:48 · 447 阅读 · 0 评论 -
E. Pencils and Boxes(划窗+dp+树状数组)
题目题意: 给定n个数,要求将n个数划分为若干集合。要求每个集合大小至少为k,且集合元素两两差值不大于d。 1 ≤ k ≤ n ≤ 5⋅105,0 ≤ d ≤ 109,1 ≤ ai ≤ 1091 ≤ k ≤ n ≤ 5·10^5, 0 ≤ d ≤ 10^9,1 ≤ a_i ≤ 10^91 ≤ k ≤ n ≤ 5⋅105,0 ≤ d ≤ 109,1 ≤ ai ≤ 109分析: 要求集合内元素差值不超过d,也就是最大值与最小值的差值不能超过d。所以我们肯定按顺序形成集合。对于一个元原创 2020-06-08 19:56:22 · 165 阅读 · 0 评论 -
E. Paint the Tree(树形dp+贪心)
题目题意: 给定一棵带权树,你必须给每个点涂上k种颜色,每种颜色至多用两次。对于一条边连着的两个点,如果有一种颜色相同,那么就会对答案产生边权的贡献。要求分配颜色使得边权最大。 1≤n,k≤5⋅105,1≤ui,vi≤n,ui≠vi,1≤wi≤1051≤n,k≤5⋅10^5,1≤u_i,v_i≤n , u_i≠v_i, 1≤w_i≤10^51≤n,k≤5⋅105,1≤ui,vi≤n,ui=vi,1≤wi≤105分析: 理解一下题意就是每个点最多有k个机会与相邻的点相原创 2020-06-06 19:30:22 · 323 阅读 · 0 评论 -
F. Shovels Shop(dp+贪心)
题目2题意: 有n个物品,每件物品售价为a[i],现在有m个活动(x,y),买x个最便宜的y个免费。要求恰好买k个物品的花费。 1≤n,m≤2⋅105,1≤k≤min(n,2000),1≤ai≤2⋅1051≤n,m≤2⋅10^5,1≤k≤min(n,2000),1≤a_i≤2⋅10^51≤n,m≤2⋅105,1≤k≤min(n,2000),1≤ai≤2⋅105分析: 由于本题k很小,所以我们贪心会发现,只要最便宜的k个物品有用。最多只有k种活动有用(x超过k的没用,相同x的取y原创 2020-06-04 20:06:59 · 195 阅读 · 0 评论 -
C. Kaavi and Magic Spell(区间dp)
题目题意: 给定字符串s和t,还有一个空的字符串a。每次你可以删去s的第一个元素,将其放在a的最前面或者最后面,要求输出有多少种方案构成一个字符串a,使其前缀等于t。 1≤n≤3000,1≤m≤n(n与m分别是s和t的长度)1≤n≤3000,1≤m≤n(n与m分别是s和t的长度)1≤n≤3000,1≤m≤n(n与m分别是s和t的长度)分析: 首先s的字符有两种选择,放前面和放后面,显然就可以想到dp。思考后又发现a这个字符串是动态连续增加的,这就非常适合使用区间dp了。原创 2020-06-03 18:55:47 · 159 阅读 · 0 评论 -
E. Weights Distributing(bfs+贪心)
题目题意: 给定一张图,n个点,m条边,有m个权值。要求分配这些边的权值,使得从a走到b再从b走到c的最短路径尽可能小。 2≤n≤2⋅105,n−1≤m≤2⋅105,1≤pi≤1092≤n≤2⋅10^5 , n−1≤m≤2⋅10^5,1≤p_i≤10^92≤n≤2⋅105,n−1≤m≤2⋅105,1≤pi≤109分析: 首先我们是对于无权图来分配边的权值,那根据贪心,肯定是边越少越好。所以先确定下bfs。对于答案,一定存在一个点x,使得路径为a->x->b->原创 2020-06-03 11:16:30 · 108 阅读 · 0 评论 -
D. Pair Of Lines(思维+模拟)
题目题意: 给定n个点,输出是否这些点可以至多用两条直线就可以连接。 1 ≤ n ≤ 105,∣xi∣, ∣yi∣ ≤ 1091 ≤ n ≤ 10^5,|x_i|, |y_i| ≤ 10^91 ≤ n ≤ 105,∣xi∣, ∣yi∣ ≤ 109分析: 由于一共只有两条线,而且两点确定一条直线。假设答案存在,那么随便拿出三个点,必然有一条直线穿过某两个点。一共三种情况将第一条直线确定下来。 对于别的点来说,如果这个点不在这条直线上,那么必然形成新的直线,再度模拟一下即原创 2020-06-02 20:20:01 · 316 阅读 · 0 评论 -
C. And Reachability(dp+位运算按位考虑)
题目题意: 给定一个序列,一共有q次访问,每次访问给出一个区间[l,r]。查询是否存在一个数l<t<r使得a[l]&a[t]>0且a[t]&a[r]>0,如果a[l]&a[r]>0则直接满足。 2≤n≤300000,1≤q≤300000,0≤ai≤3000002≤n≤300000 , 1≤q≤300000,0≤a_i≤3000002≤n≤300000,1≤q≤300000,0≤ai≤300000分析: 由于是位运算,我们自然原创 2020-06-02 16:03:42 · 193 阅读 · 0 评论 -
C. Perfect Triples(位运算+找规律)
题目题意: 给定一个无限大容器,每次你可以顺序往里面放入a,b,c。要求a,b,c从未出现过,且a ^ b ^ c = 0且a,b,c字典序尽可能小。有t组访问,要求输出该容器第n个元素。 1≤t≤105,1≤n≤10161≤t≤10^5,1≤n≤10^{16}1≤t≤105,1≤n≤1016分析: 首先该题是位运算,位运算的题目一般都是每位独立来考虑的。这题的话是每次3个元素,所以是每2位来考虑。 这种题目肯定是优先打表的,注意这种位运算的打表最好把二进制输出出来。然后原创 2020-06-02 12:24:01 · 209 阅读 · 0 评论 -
D. Yet Another Yet Another Task(思维)
题目题意: 给定一个序列,要求选取一个区间,使得该区间的元素和减去其区间的最大值尽可能大。 1≤n≤105,−30≤ai≤301≤n≤10^5,−30≤a_i≤301≤n≤105,−30≤ai≤30分析: 由于元素值较小,就给了我们暴力的空间。我们直接枚举答案要减去的最大值,也就是说我们选取的区间元素不能大于这个最大值,那么剩下的就是连续子区间正常的取最大就可以了。#include <iostream>using namespace std;int a[10原创 2020-06-01 10:21:31 · 453 阅读 · 0 评论 -
E. Team Building(状态压缩+贪心)
题目题意: 给定n个人,要求选出p个玩家,k个观众。挑选出第i个人为观众对答案贡献a[i]的值,挑选第i个人做为第j个玩家对答案贡献sijs_{ij}sij。 2≤n≤105,1≤p≤7,1≤k,p+k≤n,1≤ai≤109,1≤sij≤1092≤n≤10^5,1≤p≤7,1≤k,p+k≤n,1≤a_i≤10^9,1≤s_{ij}≤10^92≤n≤105,1≤p≤7,1≤k,p+k≤n,1≤ai≤109,1≤sij≤109分析: 对于每个人都有三种选择,不选,当玩家或者当观原创 2020-05-27 15:52:14 · 204 阅读 · 0 评论 -
B. Present(二进制计算+二分)
题目题意: 给定一个数组,求(a1+a2)^ (a1+a3) ^ (a1+a4) ^…(a2+a3) ^ (a2+a4) ^ … ^(an-1+an)。 2≤n≤400000,1≤ai≤1072≤n≤400000,1≤a_i≤10^72≤n≤400000,1≤ai≤107分析: 对于这种位运算,我们肯定是考虑答案的二进制下每一位的数值。当我们考虑对于这种位运算,我们肯定是考虑答案的二进制下每一位的数值。当我们考虑对于这种位运算,我们肯定是考虑答案的二进制下每一位的数值。当我们考原创 2020-05-26 17:32:07 · 284 阅读 · 0 评论 -
E. Physical Education Lessons(set区间操作)
题目1题意: 给定一个n,表示一共有n天的工作日。现在有两个操作,操作1将区间[l,r]全部变为工作日,操作2将区间[l,r]全部变为非工作日。一共有q次操作,要求输出每次操作后的工作日天数。 1 ≤ n ≤ 109,1 ≤ q ≤ 3⋅105,1 ≤ li ≤ ri ≤ n,1 ≤ ki ≤ 21 ≤ n ≤ 10^9, 1 ≤ q ≤ 3·10^5,1 ≤ l _i ≤ r_ i ≤ n, 1 ≤ k_ i ≤ 21 ≤ n ≤ 109,1 ≤ q ≤ 3⋅105,1 ≤ li ≤原创 2020-05-24 10:45:32 · 329 阅读 · 0 评论 -
F. Kate and imperfection(思维)
题目题意: 给定一个1…n的集合,要求分别求出长为2,3,4…n的子集,使得每个子集中任意两个数的gcd的最大值尽可能的小。 2≤n≤5⋅1052≤n≤5⋅10^52≤n≤5⋅105分析: 这题就是一道思维题,经过灵光一闪后发现。在最优决策下,每当一个数加入答案的集合时,它的最大公约数一定在之前也被加到集合中去了,因为如果没有被加入,那么我们此时肯定愿意让它的最大公约数加入集合而不是让它加入集合。所以一个数在最优决策下加入到集合对答案的贡献为它的最大公约数。 现在我们有了原创 2020-05-23 23:19:29 · 130 阅读 · 0 评论 -
E. Graph Coloring(二分图+背包dp)
题目题意: 给定一张图,要求给每个点染色,颜色为1,2,3。要求1的个数为n1,2的个数为n2,3的个数为n3,并且对于任意两个相邻的点颜色的差的绝对值为1。 1≤n≤5000,0≤m≤105,0≤n1,n2,n3≤n1≤n≤5000,0≤m≤10^5,0≤n1,n2,n3≤n1≤n≤5000,0≤m≤105,0≤n1,n2,n3≤n分析: 分析一下其实可以发现,染1和染3其实是等价的,因为他们只能与2相邻。所以我们就可以把染2的点和染别的颜色的点分为两个集合。对于这两个集合其实原创 2020-05-22 12:07:34 · 217 阅读 · 0 评论 -
E. Reachability from the Capital (tarjan缩点+分析)
题目题意: 给定一张有向图,可以在上面建边,输出构建尽可能少的边使得从给定的起点开始可以到达图上的任意一点。 1≤n≤5000,0≤m≤5000,1≤s≤n1≤n≤5000,0≤m≤5000,1≤s≤n1≤n≤5000,0≤m≤5000,1≤s≤n分析: 我们思考该如何建边,显然应该向一个任何点都无法到达的点建一条边,即这个点的入度为0。这样我们就可以利用dfs来更新可达的点,当某个点入度为0且没被更新时,建一条边到这个点,继续更新未达的点。由于有向图存在强连通分量,所以还需要t原创 2020-05-21 22:26:31 · 156 阅读 · 0 评论 -
E. Array Shrinking(区间dp+分析)
题目题意: 给定一个数组,每次可以将两个相邻且相同的元素删去并改成他们的值加1,要求输出操作后最短的长度。 1≤n≤500,1≤ai≤10001≤n≤500,1≤a_i≤10001≤n≤500,1≤ai≤1000分析: 认真思考一下会发现,一个数可能跟前面的数删去,也可能跟后面的数删去,这就有一种dp的感觉了。 由于明显这题是没有顺序的,随便满足条件的数都可以操作,所以不可能是线性的dp。分析后发现其实最后的结果就是某一些连续区间被一个值所替换,所以其实是在对区间进行操原创 2020-05-16 12:04:19 · 267 阅读 · 1 评论 -
D. Bash and a Tough Math Puzzle(线段树维护gcd+分治)
题目2题意: 给定n个数。有两种操作,操作1是将某个数置为x,操作2是查询区间[l,r]是否可以通过改变至多一个元素使得区间的gcd是否为x。 1 ≤ n ≤ 5⋅105,1 ≤ ai ≤ 109,1 ≤ q ≤ 4⋅105,1 ≤ l ≤ r ≤ n, 1 ≤ x ≤ 1091 ≤ n ≤ 5·10^5,1 ≤ a_i ≤ 10^9,1 ≤ q ≤ 4·10^5,1 ≤ l ≤ r ≤ n, 1 ≤ x ≤ 10^91 ≤ n ≤ 5⋅105,1 ≤ ai ≤ 109,1 ≤ q ≤原创 2020-05-10 12:42:59 · 181 阅读 · 0 评论 -
E. Divisibility by 25(分析+模拟)
题目题意: 给定一个数,可以任意交换两个相邻的数字,要求交换的次数尽可能少使得交换后的数字是25的倍数。不允许有前导0。 1≤n≤10181≤n≤10^{18}1≤n≤1018分析: 要满足是25的倍数,则要求末尾的两个数为00或25或50或75。这样的话我们模拟即可,尝试构造每种情况,为保证最优我们都拿每个数的最后一个元素操作。注意当倒数第二位的数的位置在倒数第一个数...原创 2020-05-07 22:44:57 · 155 阅读 · 0 评论 -
D. Ralph And His Tour in Binary Country(二叉树性质+树形计数)
题目1题意: 给定一棵带权二叉树,共有m次访问。对于一次访问x,h,输出以x为起点,任意点y为终点,dis(x,y)小于h,贡献为h-dis(x,y)。 1 ≤ n ≤ 106,1 ≤ m ≤ 105,1 ≤ Ai ≤ n,0 ≤ Hi ≤ 1071 ≤ n ≤ 10^6, 1 ≤ m ≤ 10^5,1 ≤ A_i ≤ n, 0 ≤ H_i ≤ 10^71 ≤ n ≤ 106,1...原创 2020-04-16 23:04:02 · 140 阅读 · 0 评论 -
E. Company(dfs序性质+lca+线段树极小极大)
题目题意: 给定一棵根为1的树,一共q次访问,每次访问一个区间,要求去掉区间中的某一个点,使得剩下的点的lca的深度尽可能大。 2≤n≤100000,1≤q≤100000,1≤li<ri≤n2≤n≤100000 , 1≤q≤100000,1≤l_i<r_i≤n2≤n≤100000,1≤q≤100000,1≤li<ri≤n分析: 首先对于一组点的lc...原创 2020-04-16 22:47:31 · 253 阅读 · 0 评论 -
Educational Codeforces Round 58
比赛链接D题题意:给定一棵树,每个节点都有点权。要求输出满足条件的最大的dist(x,y),x,y路径上所有点权的gcd大于1。分析:由于是任意两点,那么我们思考对于任意的点来说,以它为起点能满足的终点。对于一个节点来说只要考虑其子树便可,所以就可以想到树形dp了。再思考如何满足gcd大于1,其实就是子节点与他有公共的质因子即可。所以每个节点就可以维护其每个质因子的连续最长长度,要计算最远距...原创 2020-04-13 22:32:00 · 62 阅读 · 0 评论 -
C. Online Courses In BSU(dfs+拓扑序)
题目2题意: 一共有n门课,每门课都有若干门先导课程。要求输出修习k门指定的课要修习的课程。 1 ≤ k ≤ n ≤ 1051 ≤ k ≤ n ≤ 10^51 ≤ k ≤ n ≤ 105分析: 经典拓扑背景,建一张有向图。由于要求满足k个点,显然就是一个超级源点,递归处理即可。处理当前节点x时,先处理它相连的节点,最后再处理本身。用vis表示点的状态,vis[i]=1表...原创 2020-04-08 22:40:09 · 171 阅读 · 1 评论 -
C. Square Subsets(状压+素因子分解)
题目题意: 给定n个数,要求选出任意多的数,使得这些数的乘积为平方数。 1 ≤ n ≤ 105,1 ≤ ai ≤ 701 ≤ n ≤ 10^5,1 ≤ a_i ≤ 701 ≤ n ≤ 105,1 ≤ ai ≤ 70分析: 由于这些数都很小,所以我们必然是在它们身上做文章。对于完全平方数,它的素因子分解后每个素因子的指数均为偶数。所以我们就可以对这些数进行素因子分解来探...原创 2020-04-08 11:03:02 · 232 阅读 · 0 评论 -
D. Beautiful Array(dp)
题目1题意: 给定长度为n的序列,可以将某个子序列乘以x,输出最大子区间和。 1≤n≤3⋅105,−100≤x≤100,−109≤ai≤1091≤n≤3⋅10^5,−100≤x≤100,−10^9≤a_i≤10^91≤n≤3⋅105,−100≤x≤100,−109≤ai≤109分析: 对于答案的末尾,有三种可能:之前没有修改过,正在被修改,已经修改完了。就这样三种状态...原创 2020-03-30 21:13:27 · 239 阅读 · 0 评论 -
D. New Year and Fireworks(搜索+记忆化剪枝)
题目题意: 有一个烟花,总共有n层,沿着当前方向穿过t[i]个单位长度后爆炸,每一次爆炸都会分成两半,然后方向是与当前发射方向夹角为正负45度,问有多少个格子被至少一个烟花穿过。 1 ≤ n ≤ 30,1 ≤ ti ≤ 51 ≤ n ≤ 30,1 ≤ t_i ≤ 51 ≤ n ≤ 30,1 ≤ ti ≤ 5分析: 本题的关键点在于烟花最远能到的范围,其实略加分析即可得...原创 2020-04-03 09:52:31 · 125 阅读 · 0 评论 -
E. Minimum spanning tree for each edge(最小生成树+lca)
题目题意: 给定一张带权图,要求对于每一个i,输出包含第i条边的这张图的最小生成树的权值和。 1 ≤ n ≤ 2⋅105, n − 1 ≤ m ≤ 2⋅105,1 ≤ ui, vi ≤ n, ui ≠ vi, 1 ≤ wi ≤ 1091 ≤ n ≤ 2·10^5, n - 1 ≤ m ≤ 2·10^5,1 ≤ u_i, v_i ≤ n, u_i ≠ v_i, 1 ≤ w_i ≤ ...原创 2020-04-01 16:45:08 · 294 阅读 · 0 评论 -
D. Buy a Ticket(超级源点+最短路)
题目1题意: 给定一张带权图,每个点都有权值ai。对于每个点i,找到一个j,使得2*dis(i,j)+aj的值最小。 2 ≤ n ≤ 2⋅105,1 ≤ m ≤ 2⋅105,1 ≤ vi, ui ≤ n, vi ≠ ui,1 ≤ wi ≤ 1012,1 ≤ ai ≤ 10122 ≤ n ≤ 2·10^5, 1 ≤ m ≤ 2·10^5,1 ≤ v_i, u_i ≤ n, v_i ...原创 2020-03-31 19:05:41 · 356 阅读 · 0 评论 -
E. Birds(dp+多重背包模型)
题目1题意: 一条直线上有 n 棵树,每棵树上有 ci 只鸟,在一棵树底下召唤一只鸟的魔法代价是 costi,每棵树的召唤上限为ci,每召唤一只鸟,魔法上限会增加 B。从一棵树走到另一棵树,会增加魔法 X,一开始的魔法和魔法上限都是 W。问最多能够召唤的鸟的个数。 1 ≤ n ≤ 103, 0 ≤ W, B, X ≤ 109,0 ≤ ci ≤ 104,0 ≤ costi ≤ 10...原创 2020-03-30 09:28:18 · 179 阅读 · 0 评论