- 博客(51)
- 收藏
- 关注
原创 题解:P3903 导弹拦截III
因为当前拦截的导弹可能在奇数位上,也可能在偶数位上,所以以这两种状态为子任务。为作为第(偶数/奇数)个被拦截的导弹,最大可以拦截多少个导弹。
2024-09-14 07:27:47
909
原创 P2515 [HAOI2010] 软件安装
对于环,发现要么把这个环上的每一个点都选了,要么每一个都不选。发现构成的图是一个森林和一些环。对于森林,建一个虚点然后树形。
2024-09-13 21:18:37
928
原创 P8435 【模板】点双连通分量
我们对割点要裂点,有多少个点双连通分量包含了它,它就要裂成几个点。什么是点双连通分量?就是不包含割点的极大连通块。的时候将遍历到的点放到一个桶里,在遍历。的时间戳,那当前桶内的点和。怎么找点双连通分量?就是一个点双连通分量。
2024-09-13 08:09:12
1146
原创 P3565 [POI2014] HOT-Hotels【长链剖分】
不会和的同学可以先看看我的。ps:本文主要讲优化,数组和变量也用的ON2版本的,所以建议先看完ON2的题解。
2024-09-10 11:45:10
1306
原创 P5025 [SNOI2017] 炸弹
求得每个连通块能到达的左右端点(也可以用拓扑排序或搜索,但。把每个点与其爆炸范围内的点连边,用线段树优化建图可以做到。发现在同一个连通块里的点可以互相到达,所以缩点。码量最少),这里给出。
2024-09-09 20:51:22
1023
原创 P3177 [HAOI2015] 树上染色
一条边经过的次数就是这条边两侧的点数的积。),而路径上的边权和可以把每条路径分开考虑。两点之间的距离就是两点的路径上的边权和(为根的子树中的黑点的数量,则经过了。为根的子树的贡献合并到以。一定要注意卡好上下界,否则。的这条边经过了几次,设。
2024-09-09 15:56:30
1052
原创 P3565 [POI2014] HOT-Hotels
已经补了两个,不懂的同学可以画个图看一下。发现这道题可以用长链剖分将时间复杂度优化至。以上公式可以用前缀和做到。
2024-09-09 10:18:36
924
原创 P3588 [POI2015] PUS
连向区间内单的其他点,建完图后拓扑排序即可。个区间,暴力枚举区间,用线段树建图即可。怎么办,发挥想象力,用线段树优化建图。这道题的关键点在于线段树优化建图。每个限制的区间最多会被拆分成。对每条限制新建一个虚电。
2024-09-07 07:34:32
1122
原创 P3119 [USACO15JAN] Grass Cownoisseur G
所在的连通块为终点的最长路(通过建返图实现),然后枚举反边即可。像这种每个点可以重复经过,但只会统计一次答案的题,可以考虑缩点。还有就是考虑不走反边的情况,也就是整个图缩成一个连通块的情况。所在的连通块为起点的最长路,再跑一次以。
2024-09-06 09:18:02
934
原创 P3631 [APIO2011] 方格染色
我个人认到这里还是比较难理解的,我也想了很久,所以如果你没有理解大可不必着急,慢慢来,再看一遍或者自己动手画图,模拟一下样例。,所以只要第一行和第一列的颜色确定了,整个矩阵就能确定。,连边后一个连通块就必须要一起选了,如果存在一个点使得。算了都没人看,哪来的侵权。那么大概就可以往连边和连通块的方向去想了。,所以每次涂色等同于一个形如一个(若第。去哪了,仔细想想,假如这条限制默认。在一个连通块中,那么答案就是。列表示的两个点,连两条边。在这条限制中其实不重要。都为偶数的情况下才会。将每行每列视为两个点。
2024-09-05 20:05:22
1102
原创 【C++】对比讲解构造函数和析构函数
~~~~构造函数是类的一种特殊成员函数,用于在创建对象时对其进行初始化。构造函数的名称与类名相同,通常用于设置对象的初始状态,如为成员变量赋值或执行其他初始化操作。~~~~~析构函数也是类的一种特殊成员函数,在类销毁时自动调用,通常用来执行清理工作,如释放资源、关闭文件、释放内存等。析构函数的名称与类名相同,但前面加上一个波浪号(~)。
2024-09-04 21:21:32
934
原创 P2194 HXY烧情侣
缩点,求每个强连通分量的最小权值,记录有几个点的权值是最小权值。方案数就是每个强连通分量最小权值的点的个数的积。最少费用就是每个强连通分量最小权值的和。
2024-09-04 16:16:26
421
原创 P3313 [SDOI2014] 旅行(分块做法)
这个问题也可以用动态开点线段树解决(现在不会,以后再讲),但今天的主角是分块。查询就是一般的分块查询。而修改,因为要求最大值,所以直接。遇到这种树上路径问题,就考虑用重链剖分转为区间问题。的城市的 权值和 或 最大权值。问题转换为了:给定一个区间和。,求这个区间内信仰为。
2024-09-04 11:11:04
754
原创 P1283 平板涂色
发现不太好转移,因为会根据(用来转移的子状态的最后一次涂色的颜色)和(当前涂色的矩形的颜色) 是否一样来分类,一样直接转移即可,而不一样要加。发现数据范围很小,考虑状压DP,用二进制下的。表示已经涂色的方块状态为。,且最后一次涂色的颜色为。为已经涂色的方块状态为。的情况下需要的最小次数。怎么办,再加上一维使得。表示每个矩形有没有涂色。
2024-09-04 07:51:10
643
原创 P2704 [NOI2001] 炮兵阵地
发先同一行有限制,先预处理出满足同一行的限制的数字,最多只有。空间会炸,用滚动数组。转移的时候分别枚举第。
2024-09-02 14:54:47
786
原创 P4170 [CQOI2007] 涂色
这道题的关键在于:对于两次涂色,要么不交,要么包含且端点不重。证明:如果相交但不包含,缩短其中一个区间就可以变为不交的情况。,还是根据上面的性质,一定存在一个。涂色的最小次数,考虑两种情况。,将这一次涂色的右端点改成。,根据上面的性质,区间。的第一次涂色一定包含了。
2024-09-02 10:25:32
900
原创 Queries for Number of Palindromes
枚举回文串的中点,从每个中点开始向两侧扩展,判断两端是否相等。容斥原理,不能理解的可以画个图。的区间内有多少个回文子串。
2024-09-01 21:12:49
1017
原创 P1880 [NOI1995] 石子合并【模板】区间DP
任何一个区间最后都会合并为两个区间,然后再把这两个区间合并。对于每一个区间,枚举最后剩下的两个区间即可转移。的区间合并为一堆石子的最小代价。具体操作时(求最小):设。
2024-09-01 18:49:58
1208
原创 P2403 [SDOI2010] 所驼门王的宝藏
对于“任意门”,用一个 vector 存每行有哪些点,然后二分。对于“横天门”和“纵寰门”建虚点即可。个连通块最多经过了多少给宝物。这道题的关键在于如何连边。连完边之后缩点,然后。
2024-08-30 10:19:51
558
原创 P2863 [USACO06JAN] The Cow Prom S【模板】强连通分量
~~~~强连通分量:原图一个极大子图使得从这个子图中的任意一个点出发都可以到达这个子图的任意一个点。
2024-08-29 19:56:34
731
原创 P10641 BZOJ3252 攻略
又发现其实选择最大路径的过程就是找一条长链使得链上的权值之和最大,所以用长链剖分。发现可以贪心,每次选择一条权值最大的路径,记录贡献后将路径上的点权设为。
2024-08-29 19:02:15
420
原创 Dominant Indices【模板】长链剖分
具体实现时,先用定义一个数组用来申请空间,然后用一个指针指向这个数组的开头,对于每条链,分配的空间大小就是链的长度。这个不好直接理解,建议看代码的指针部分。优化的关键点——继承,在同一条长链上时,父节点可以直接继承其重儿子的。可以发现重链剖分和长链剖分的主要区别就是一个注重大小,一个注重深度。什么是重链剖分:根据子树的大小将树拆成多条互不相交的链。子树的最深的节点的深度,即子树的最大深度。重链剖分中的重儿子:子树大小最大的儿子。不是同一条链的情况,就暴力合并。长链剖分的作用:优化和。,尤其是子树合并类的。
2024-08-29 16:01:03
1033
原创 P3387 【模板】缩点
~~~~强连通分量:原图一个极大子图使得从这个子图中的任意一个点出发都可以到达这个子图的任意一个点。~~~~~而缩点,就是找强连通分量的过程。
2024-08-29 08:56:04
823
原创 P8436 【模板】边双连通分量
的时候将遍历到的点放到一个桶里,若当前边是割边,则在桶内且时间戳大于等于当前点的时间戳的点就是一个边双连通分量。什么是边双连通分量?就是不包含割边的极大连通块。怎么找边双连通分量?
2024-08-27 16:53:23
644
原创 P6626 [省选联考 2020 B 卷] 消息传递
先将询问离线,这样就可以在点分治的时候一次性处理。本身,它要加上的贡献自然就是距离。,它需要加上的贡献就是距离。,注意实际操作的时候要先把。设当前遍历到的重心是。
2024-08-27 15:10:13
962
原创 P1282 多米诺骨牌
次后的上层之和和下层之和的差值的绝对值的最小值?发现上行的数与下行的数只和不变,所以设。个牌,且上行的数之和为。转移就是这样,不难理解。还有一件事~(老爹音)
2024-08-27 11:48:33
872
原创 P1156 垃圾陷阱
这道题的关键在于:你不能在死了之后通过吃东西复活,所以我们在状态转移的时候只转移活着的状态。的情况下的最大高度,对于每个物品有两种选择——吃或搭。再来看第二问:最长可以存活多长时间。那就是要全选择吃,贪心即可。先考虑第一问:最早什么时候可以爬出。将物品按时间排序,用。
2024-08-26 14:42:45
912
原创 P5662 [CSP-J2019] 纪念品
这道题的关键点在于,默认今天买的东西全部在明天卖出,为什么可以这样,因为“每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。”,就比如你有一个物品打算在第一天买入,第三天卖出,可以等价为:第一天买入,第二天卖出,第二天再买入,第三天再卖出。然后用完全背包做即可。
2024-08-26 07:45:21
223
原创 图片详解 —— 二维树状数组
想要完全理解二维树状数组,要先完全理解一维树状数组。好,那么你已经学会了二维树状数组的区间查询,接下来我们看单点修改。那么在代码中,我们就只需要写两层循环,一层遍历行的的。列的矩阵前缀和,就需要将下图标绿的矩阵求和。有不懂的私信我,我都会尽量回的。不想画图了,原理和上面的差不多,直接上代码。建议大家先看一遍视频再来看下面的讲解。的数的和,即下图中标红的地方。的矩阵,即下图中标红的地方。,即下图中标红的两个地方。,即下图中标紫的三个地方。,将所有遍历到的矩阵求和。
2024-06-25 07:43:02
1031
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人