摘要:
原题链接 题解 先看成前缀和,这样就是维护 \(pre[r],pre[l-1]\) 两点之间的权值 如果是false,代表存在矛盾,且矛盾出现在回路 我们可以把这个回路之前的元素看成一个集合,如果新加入的边使得原先两点间的权值不等便失效 而对于一个集合里的元素,由于相加具有矢量特性,所以我们维护集合 阅读全文
posted @ 2024-07-23 20:37
纯粹的
阅读(22)
评论(0)
推荐(0)
摘要:
原题链接 题解 首先对于约束,建边,我们跑最短路,由于 T 非负整数,且图可能不连通,所以我们建立超级源点,并建立指向每一个节点的边 由于差分约束表示的是所有元素的相对大小,所以最后的答案要减去图中最小的节点 无解的情况为出现负权环 阅读全文
posted @ 2024-07-23 16:51
纯粹的
阅读(12)
评论(0)
推荐(0)
摘要:
原题链接 题解 减少对方多少,就会扣自己多少,因此判断 \(sum\) 即可。 code #include<bits/stdc++.h> #define ll long long using namespace std; void solve() { int n,m; cin>>n>>m; ll s 阅读全文
posted @ 2024-07-23 16:16
纯粹的
阅读(44)
评论(0)
推荐(0)
摘要:
原题链接 题解 缩点+差分约束,求最小值故跑最长路 无解的情况:存在正权环,由于是有向图,所以环上的元素在一个强连通分量内,判断强连通分量内存不存在有正权值的边,然后缩点,拓扑跑一圈 缩点时要一个超级源点就可以只dfs一次了 code #include <bits/stdc++.h> using n 阅读全文
posted @ 2024-07-23 14:59
纯粹的
阅读(18)
评论(0)
推荐(0)
摘要:
原题链接 题解 一步一步来,当 \(k=2\) 的时候,怎么分? 当 \(k=2\) 时,两个点集之间的距离等于两个点集中各取一个点之间的最小距离,我们联想到最小生成树的建立过程,按边权从小到大依次加入,如果两个点所属集合不同便合并 因此,当 \(k=2\) 的时候,答案是最小生成树的最后一个合并边 阅读全文
posted @ 2024-07-23 11:24
纯粹的
阅读(28)
评论(0)
推荐(0)
摘要:
原题链接 题解 首先,考虑如何分配卫星电话使得 \(D\) 最小是比较困难的,所以我们考虑怎样的 D 可以使得卫星电话个数不小于联通块个数 由于 D 越小,联通块个数也就越小,所以具有单调性,考虑二分 优化: 最后的答案,一定是所有连通块内部,距离最长的树边(即失去该边之后,联通块变得不连通),由此 阅读全文
posted @ 2024-07-23 10:46
纯粹的
阅读(14)
评论(0)
推荐(0)
摘要:
原题链接 题解 任何数一定可以被二进制表示下最低位的一及以下的二次方数整除 code #include<bits/stdc++.h> #define ll long long #define lowbit(x) ((x)&(-x)) using namespace std; void solve() 阅读全文
posted @ 2024-07-23 09:38
纯粹的
阅读(39)
评论(0)
推荐(0)

浙公网安备 33010602011771号