
并查集
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
agc002_d Stamp Rally 二分答案并查集树向上倍增
https://atcoder.jp/contests/agc002/tasks/agc002_dABC傻逼题,感觉以前的AGC有点水,然而B题一开始想假了写了快20分钟D题最后9分钟过了挺爽的首先对于M条边,把整棵树连起来只有N-1条边,那么因为答案要求最小化最大边的序号那么我们直接按序号连边,如果要合并,就新建一个点,记录下这个点对应的集合的大小时多少,然后连向合并的两个点,且边的权值为当前枚举的边的序号,相当于把完整的并查集树建出来,且不需要按秩合并由于图是联通的,根节点一定是一个原创 2020-11-08 01:08:06 · 249 阅读 · 0 评论 -
gym102759D Just Meeting XXI Open Cup. Grand Prix of Korea
https://codeforces.com/gym/102759/problem/D自闭场,4题跑路,五点共圆和uestc7题也太猛了由于要满足不存在一个3元环中,一条边同时小于另外两条边,那么对于u-v这条边,如果u-w,w-v只有一边存在,那么另一边可以任意变的边就等于这两条边的较小值,如果两条边都不存在,就直接2条1就行了然后可以发现对于同一个联通分量两个点之间的边一定是确定的,且对于这个联通分量的最大或最小生成树,那些还无法确定的边等于这棵树上两个点路径上最小的那条边最优,而对于那些.原创 2020-10-29 20:32:22 · 690 阅读 · 0 评论 -
codeforces1398F Controversial Rounds
https://codeforces.com/contest/1398/problem/F太神了从后往前预处理出每个位置向后最远多少个连续的mx[i],然后我们加入a[mx[i]]中,存相同的最多连续相同mx[i]的所有下标然后用一个并查集维护对于下标idx来说,最近的能走>=x的位置是哪里,然后直接跳到那里,然后idx+=x处理完x的答案后,我们枚举a[x]中的所有下标,把他们的f[i]=i+1,这个意思也就是下次求x+1的答案的时候,必须跳过这个位置,因为他不能走x+1,由于从小到原创 2020-08-15 17:34:24 · 326 阅读 · 0 评论 -
codeforces1385G Columns Swaps
https://codeforces.com/problemset/problem/1385/G和hwh一起忘记这场了。。。好迟才打,只能看后面的题了。然后E写了一年还WA。。。最后发现队友都不会G,一看G是设虚点并查集裸题,口胡给队友过了,想拿队友代码写题解,然而写的太麻烦,代码思路不清晰,于是重写一发首先必须是1-n每个数字出线一次才有解然后对于每一个位置拆成2个点,i表示这一列不换,i+n表示这一列换,那么初始并查集的t[i+n]=1,t[i]=0,表示有1的代价那么如果两个x在同原创 2020-07-18 01:56:47 · 499 阅读 · 0 评论 -
gym100513 K Treeland
https://codeforces.com/gym/100513/problem/K我们知道对于每天相连的边,他们的距离都是1,而每一个C(i,1)=i,C(i,2)=C(i,....)=1就是i直接连的边我们记录每个点已经被哪些边连上了,也就是每个点当前的度+1是多少l[i],那么对于每一个Ci,还没考虑的边的下标就是l[i]+1,对于一条边(u,v),如果a[u][l[u]+1]=v,a[v][l[v]+1]=u,说明u-v这条边是连起来的用一个队列维护,由于直接相连的边都在C(i)的靠左原创 2020-05-11 01:06:12 · 283 阅读 · 0 评论 -
codeforces1290C Prefix Enlightenment
https://codeforces.com/problemset/problem/1290/C这题如果改成给出一种方案使得全部点亮,那么就可以2-sat了,因为一个灯泡最多由两个集合控制,我们可以根据灯泡的初始情况判断两者的相互关系,x和y应该同时变换还是不同变换。然而题意改不得,要问1-i的最优值。2-sat只能求出全部最后的情况,于是看了题解https://www.bilibili....原创 2020-02-08 21:37:06 · 264 阅读 · 0 评论 -
bzoj 1854: [Scoi2010]游戏
https://www.lydsy.com/JudgeOnline/problem.php?id=1854匈牙利里面忘记写return false了,结果洛谷全部AC,bzojWA。。。洛谷数据也太水了,估计是没有返回false的情况就对于每一个武器,两个值a,b,那么要取a值时可以用该武器,取b值时可以用该武器最后我们用时间戳来代替vis数组就好了由于这个只有2条边,所以虽然最大...原创 2020-01-16 22:20:53 · 164 阅读 · 0 评论 -
bzoj1202 [HNOI2005]狡猾的商人
https://www.lydsy.com/JudgeOnline/problem.php?id=1202带权并查集维护前缀和s,t,v相当于sum[t]-sum[s-1]=v,那么对于一个连通块中的,val[根节点]=0,val[其他点]等于他们到根节点的距离,用带权并查集维护这个到根节点的距离就可以了,如果不在一个连通块中,设x=find(s-1),y=find(t),由于sum[t]...原创 2020-01-17 11:18:09 · 116 阅读 · 0 评论 -
bzoj1997 [Hnoi2010]Planar
https://www.lydsy.com/JudgeOnline/problem.php?id=1997本来是做2-sat的,结果发现这题就是直接相斥,那么并查集虚点做法就可以了。题目给出了一条哈密顿回路,那么我们只要把这个哈密顿回路拿出来,再判断那些不在这条路上的边不相交,就可以判断他是不是平面图了。网上查题解查到一个平面图的性质,m<=3*n-6,m太大就直接判断是NO,否...原创 2020-01-11 17:18:47 · 139 阅读 · 0 评论 -
codeforces1245D Shichikuji and Power Grid
https://codeforces.com/problemset/problem/1245/D讲讲我的思考历程看到题目觉得是一般应该是一维DP,枚举前i个位置上一个位置选在第j号位置的最小值是多少,然而这个二维不知道怎么搞。。。然后看了看F题感觉是个二进制下数位DP之类的,然而不太会搞,又回来想D那么我至少要知道我要选择哪一些建电塔把,那么应该是选择代价小的电塔建立,但是这样并不...原创 2019-11-02 15:37:46 · 204 阅读 · 0 评论 -
2019徐州网络赛 B so easy
https://nanti.jisuanke.com/t/41384树状数组是天,1e6*logn*logn随便跑离散化所有点和区间,要染色的点单点作为一个点,然后两个染色点之间的区间也作为一个点,然后二分找第一个位置在哪。但是牛逼的标程用unorderd_map+并查集,f[x]存x右边第一个在哪,初始的是f[x]=x+1unorderd_map的存取查询操作都近似于O(1),m...原创 2019-09-07 20:17:35 · 428 阅读 · 7 评论 -
codeforces 1213G Path Queries
https://codeforces.com/problemset/problem/1213/G把询问离线,对于每个询问,我们把比他的要求小的边全部加进树中。那么答案就是所有连通块的贡献,每个连通块的贡献是sz*(sz-1)/2那么我们按询问的要求值从小到大排序,然后每次尝试加边,并用并查集维护连通块大小#include<bits/stdc++.h>#define ...原创 2019-08-31 01:01:49 · 675 阅读 · 3 评论 -
E All men are brothers 2019牛客多校第9场
传送门:https://ac.nowcoder.com/acm/contest/889/E就记录一下每一块的人数,以及sum[1]表示所有人数,sum[2]表示所有团选2团的方案数,sum[3]表示选3团,sum[4]表示选4团。每次合并x团和y团时,先从sum[1]减起,减到sum[4],吧x团和y团在sum[1..4]中的贡献全部减去然后再从sum[4]加到sum[1],把x团和y...原创 2019-08-15 20:54:53 · 144 阅读 · 0 评论 -
poj3694 边双联通分量缩点
这题思路很简单对边双联通分量缩点,变成一棵树,那么每条边都是桥,然后每加一条边,就从所在的两个节点向上跑到LCA的地方,然后把沿路的桥都从答案中减去,由于q次询问是持久化影响的,所以我们用并查集维护,在同一个并查集中表示这些点之间的桥都已经被删除了,那么q次询问下来最多只会跑n次,所以复杂度为O(n alpha(n)),据说数据很水,q*n也能跑过去233#include<cst...原创 2019-07-30 09:35:33 · 205 阅读 · 0 评论 -
atcoder 2019.1.27晚 E.Weights on Vertices and Edges
https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e题目给出n个点m条边,问你至少删掉多少条边,能够使得最后的所有连通块中,一个连通块中的点权之和要大于这个连通块中每一条边的值。考场上已经接近正解了,按边权排序,从小到大考虑是否加进答案里去,并查集维护一下点权和,求出最多能加进答案的边,输出m-ans,但是不...原创 2019-01-28 19:06:14 · 280 阅读 · 0 评论 -
codeforces 1108F 最小生成树并查集
让我想起了徐州的第一题。。。。还以为比那题更难第二天早上队友跟我聊了下这题,然后我发现这题就可以用我徐州第一题的错误的思路做(虽然那题因为数据特殊性A了。。。),我们开两个并查集,对于一段相同的边,f1表示这段相同的边之前的连接情况,然后从前向后枚举这段边,如果能连就连,只更新f2,如果不能连,去f1中看看是不是在同一集合,如果不在,说明这段边中在这条边之前有一条边跟这条边是等价的,这样就会形...原创 2019-01-24 15:05:35 · 506 阅读 · 0 评论 -
HDU - 3047
今天发现一个大秘密!关于合并函数,此题题意很鬼,1--300列没有明确说明是什么东西,然而是否考虑%300都可以A,奇葩题。#include#include#define maxl 50010#define mod 300int n,m,cnt,ans;int dis[maxl],f[maxl];void prework(){ cnt=0;ans=0; for(int i原创 2017-08-09 18:41:09 · 350 阅读 · 0 评论 -
C - 食物链 POJ - 1182
设虚点,若ab相同就连接ab,吃就连接a,b+n,设2组虚点方便理解ABC#include#include#define maxn 1000001int n,k,ans=0;int f[maxn*3],rank[maxn],d[maxn];void prework(){ scanf("%d",&n); for(int i=1;i<=3*n+1;i++) f[i]=i;原创 2017-08-08 19:20:01 · 365 阅读 · 0 评论 -
POI代码等式
Poi1999基因片段 问题描述有这样一段遗传基因K,它是由一系列的自然数组成:K=a1,a2,a3,a4……am。在该段基因中,连续的两个自然数被称做它的“特征”。例如对基因段:8, 5, 1, 4, 2, 3(5,1)就是它的“特征”之一,而(4,3)则不是。L教授正在研究这样一段长度未知的奇特基因段,并且已经成功地分析出了该基因段的大多数“特征原创 2015-07-01 20:47:38 · 892 阅读 · 1 评论