摘要: 原题链接 题解 最小生成树和最短路不一样的兄弟 code #include<bits/stdc++.h> using namespace std; int fa[306]={0}; int finds(int now){return (fa[now]==now?now:finds(fa[now])) 阅读全文
posted @ 2024-03-06 23:25 纯粹的 阅读(26) 评论(0) 推荐(0)
摘要: 原题链接 题解 思维转换,想象井里的水都来自山上,并把山看成一个点,那么这道题就变成了最小生成树 简证最小生成树原理: 按边权排序,然后遍历,如果这条边的两个点之前每连过,那么就连上,因为这就是这两个点所在集合之间的最短路径了,不然这条边没必要加,因为已经联通了 算是一种贪心? code #incl 阅读全文
posted @ 2024-03-06 23:09 纯粹的 阅读(80) 评论(0) 推荐(0)
摘要: 原题链接 题解 二分图匹配,总的来说就是如果我的位子没人霸占,那我就坐,如果没人霸占,那我尝试着让他滚蛋 如果一个位子经历过两次滚蛋,说明别人确实没位子坐了,人家确实需要这个位子,那我就换一个位子 code #include<bits/stdc++.h> using namespace std; i 阅读全文
posted @ 2024-03-06 21:19 纯粹的 阅读(24) 评论(0) 推荐(0)
摘要: 原题链接 题解 代码量小的离谱,思维难度大的离谱 对于两个原本不相邻的同色区域块,历经千辛万苦碰面的场景,我们可以描述成右边的区域块为左边的区域块消除的时候增添了长度 设 \(dp[i][j][suf]\) 代表消除区域 \([i,j]\) 同时该区域的 \(j\) 增添了长度 \(suf\) 但是 阅读全文
posted @ 2024-03-06 20:29 纯粹的 阅读(36) 评论(0) 推荐(0)
摘要: 原题链接 题解 二分加动态维护区间最大值 注意设立变量的含义,改变变量值的规则 code #include<bits/stdc++.h> #define ll long long using namespace std; ll sum[500005]={0}; struct unit { ll x, 阅读全文
posted @ 2024-03-06 19:35 纯粹的 阅读(57) 评论(0) 推荐(0)