![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思想
文章平均质量分 50
wind__whisper
qwq
展开
-
洛谷P4007:小 Y 和恐怖的奴隶主(期望、矩阵快速幂)
矩阵快速幂原创 2022-04-20 10:42:12 · 204 阅读 · 1 评论 -
洛谷P1173:[NOI2016] 网格(tarjan、离散化)
tarjan原创 2022-04-15 10:59:26 · 1059 阅读 · 0 评论 -
P5039 [SHOI2010]最小生成树(网络流)
最小割原创 2022-04-12 22:07:43 · 219 阅读 · 0 评论 -
P4383 [八省联考 2018] 林克卡特树(wqs二分、树形dp)
小清新wqs二分+树形dp原创 2022-03-18 22:23:25 · 569 阅读 · 0 评论 -
ybtoj&洛谷P3268:圆的异或并(扫描线)
扫描线思想原创 2022-02-27 08:39:46 · 141 阅读 · 0 评论 -
YBTOJ&BZOJ:大根堆(启发式合并)
树上LIS原创 2022-02-20 09:58:19 · 206 阅读 · 0 评论 -
P3243 [HNOI2015]菜肴制作(拓扑排序、贪心)
解析很好的题也就是我没做出来的意思反向思维似乎是我欠缺的这道题也是也许做题时应该多特意往这边想想当正向看并没有太好的性质时,也许反过来能使题目豁然开朗容易想到暴力n方如何做(以下均指反图)找到1所在的点,染色找到其导出的子图,在其中再找到最小的点,再求导出图…直到子图大小为1时,把结点放到当前答案序列的开头那么不难发现,每个点导出的子图都是占据答案序列上连续的一段,同时最小的结点会在这一段的最后然后…我就发现不出来了…考虑反过来想答案序列最后一个点,必然是入度为0的编号最大的点因原创 2021-11-18 20:56:39 · 401 阅读 · 0 评论 -
CF1500C Matrix Sorting(拓扑排序)
解析神仙题我想到了一部分,但是由于没想到倒着做,后面越想越复杂…本题的关键是要倒着想考虑最后一次排序的列x必须是单调不增的否则直接错然后倒数第二列y必须在x列相等的段内单调不增,因为这些地方x无法起到排序的作用同理再到倒数第三列…那么这个怎么实现呢?拓扑排序!考虑一列中肯定有一些相邻的逆序对如果这个逆序对已经被前面的覆盖过,就没关系一个列如果所有的逆序对都被覆盖,就可以使用了考虑将列操作和相邻行分别看作点,连边即可逆序对只要被遍历到即可入队列操作只有入度减为0才能入队代码原创 2021-11-17 13:23:02 · 174 阅读 · 0 评论 -
CF718E Matvey‘s Birthday(状压、bfs、暴力、分类讨论)
解析比较复杂的一道题看数据范围,我们肯定要从种类很少的颜色入手因为第二种加边方式和颜色密切相关所以设计disi,kdis_{i,k}disi,k表示 i 号节点到颜色为 k 的节点的最小步数通过对每个k bfs一遍就能得出答案然后两个点之间的距离就可以写出转移式:fi,j=min(∣i−j∣,mink8disi,k+disj,k+1)f_{i,j}=\min (|i-j|, \min_k^8dis_{i,k}+dis_{j,k}+1)fi,j=min(∣i−j∣,kmin8disi,原创 2021-11-17 10:47:21 · 666 阅读 · 0 评论 -
CF1137C:Museums Tour(缩点、分层图)
解析比起CF,更像是主题库的一道题也是很好的一道题由于可以在环里转圈,容易想到缩点但是出现了一个问题:缩点是无法统计一个强连通分量里有哪些环及其大小的而本题中显然环的大小和d的关系至关重要考虑转换思路把每个城市x割成d个点(x,1)到(x,d)每个点表示第i天到达该城市对新图跑tarjan每个分量记录其不同的博物馆的数目可以利用一个带标记的桶来解决最后跑一遍简单的dp即可为什么这样不会重复统计?假设(x,i)走到了不在同一个分量里的(x,i+w),使城市x被统计了两遍那么x就在原创 2021-11-15 11:50:40 · 311 阅读 · 0 评论 -
CF1415D:XOR-gun(异或)
这就是CF解析这题真的是……很妙qwq考虑到,如果相邻的连续三个二进制最高位相同,那么把后两个异或一下就可以打成目标而如果不存在连续打三个二进制最高位相同的数,由于ai≤109a_i\leq10^9ai≤109,所以n必然不超过60前缀和乱暴力即可代码#include<bits/stdc++.h>const int N=1e6+100;const int mod=1e9+7;#define ll long longusing namespace std;inli.原创 2021-11-14 22:46:22 · 316 阅读 · 0 评论 -
CF1413C Perform Easily(two pointers)
解析巧夺天工可以说是把two pointers玩明白了把所有的可能减出来的结果升序排列一下然后一个选取区间合法当且仅当这个区间含有1-n所有数的至少一个可能的差然后就可以two pointers了#include<bits/stdc++.h>const int N=2e5+100;const int mod=1e9+7;#define ll long longusing namespace std;inline ll read() { ll x(0),f(1);cha原创 2021-11-14 18:50:18 · 241 阅读 · 0 评论 -
洛谷P1450:硬币购物(背包、容斥)
解析呜呜呜不废啊我只会跑n遍多重背包感觉非常神仙的一道题之所以只是蓝的可能是因为代码实现难度太低了吧但感觉思想真的很难想到也可能是我太菜了容斥相关还是需要加强啊qwq考虑如果没有硬币个数的限制的情况显然就是个简单的完全背包了然而如今有了硬币个数的限制所以我们要考虑容斥利用总方案数-硬币个数超过限制的方案数求出答案前面的总方案数就是完全背包的dp值,关键就是对后面硬币个数超过限制方案数的求解考虑第iii种硬币超过限制,那么就至少要使用(di+1)(d_i+1)(di+1)个,剩下原创 2021-11-01 23:49:23 · 192 阅读 · 0 评论 -
NOIP2016&洛谷P1600:天天爱跑步
文章目录解析sol1:树剖+mapsol2:树剖+离线sol3:dfs维护树状数组+差分解析个人认为本题比同年的逛公园可做许多本题的一个关键是:把慢跑者(u,v)(u,v)(u,v)转化为上升路径上满足depx+tx=depudep_x+t_x=dep_udepx+tx=depu的结点和下降路径上满足−dep+x+tx=depu−2∗deplca-dep+x+t_x=dep_u-2*dep_{lca}−dep+x+tx=depu−2∗deplca的结点x的答案均加一这个感觉不是很难想,由原创 2021-11-01 22:50:46 · 365 阅读 · 0 评论 -
洛谷P3349:小星星(容斥dp)
解析先安利一波洛谷上我介绍如何用暴力日过去的博客现在开始务正业考虑把dp记录状态的一维s去掉这样单次转移复杂度变成n3n^3n3但是这样显然会算多啊!因为一个编号可能会用很多次考虑容斥设ansians_iansi表示至少浪费了i个编号的答案那么我们的答案显然就是ans0−ans1+ans2...ans_0-ans_1+ans_2...ans0−ans1+ans2...就是一个经典的利用容斥至少转恰好的方法至于ans的计算,可以暴力枚举二进制的集合s,每次进行一次n3n^3n3原创 2021-10-27 20:51:40 · 106 阅读 · 0 评论 -
模板:树上启发式合并(dsu on tree)
文章目录解析step1:树剖step2:求出轻儿子的答案(不继承)step3:求出重儿子的答案(继承)step4:加入自己的答案、合并轻儿子的答案并记录答案step5:清空复杂度分析代码所谓树上启发式合并,就是在树上进行启发式合并(逃)解析通过很妙的操作将暴力的复杂度优化到log级别可以解决对子树的一些离线静态问题大概讲一下流程:step1:树剖先剖一下确定重儿子为后来的dsu做准备顺便求出size和dfs序等信息注意这个dfs序不一定要先搜重儿子所以直接在一个dfs函数里解决就可原创 2021-10-20 21:14:00 · 202 阅读 · 0 评论 -
NOIP2020&洛谷P7115:移球游戏(分治)
解析先考虑n=2的情况可以利用一个空队在不超过5m的操作次数下把两个满队还原如何推广?考虑分治把[l,mid]的球看成同色,[mid+1,r]的球看成同色在左右两两匹配柱子进行n=2的还原操作最后在递归处理操作次数:5mnlogn代码#include<bits/stdc++.h>using namespace std;#define ll long longconst int N=2e6+20000;const int mod=998244353;inline ll原创 2021-10-19 20:21:31 · 1145 阅读 · 0 评论 -
YBTOJ&洛谷P4074:糖果公园(树上莫队)
文章目录解析代码所谓树上莫队,就是在树上的莫队(逃)传送门解析似乎就是树上的这道题考虑如何转化为序列问题呢?考虑dfs序但是又一个问题。。。似乎这条链的dfs序不连续啊树剖一下就好啦考虑更阳间的方法求出这棵树的欧拉序,在这个欧拉序上询问那么我们发现,这样的话,其实会多算的部分就都会多算2遍比如样例:以1为根,欧拉序为:13442231那么我们考虑(4-3)对应的序列就是:44223不在路径上的2恰好算了2次所以我们可以利用异或的性质还有一些特判的问题:原创 2021-09-26 21:00:49 · 179 阅读 · 0 评论