首页 > TAG信息列表 > getf
浙大上机题--继续畅通工程
题目链接 要先计算连通分支的个数,最终只有一个连通分支即可 #include <iostream> #include <algorithm> using namespace std; const int N = 5010; struct node { int wei, x, y, sta; bool operator < (const node& t) const { return wei < t.wei;国王的烦恼
code #include<iostream> #include<cstring> #include<algorithm> using namespace std; int n,m,ans,num; struct land{ int x,y,t; }; land island[100005]; int f[100005];//Disjoint-sset array int last_time; void Init(){ for(int i=0;i<n;++2022GDUT寒假专题学习-3 图论
专题链接:专题训练3-图论 - Virtual Judge (vjudge.net) A - 并查集 题目 这是一道模板题。 维护一个 nn 点的无向图,支持: 加入一条连接 uu 和 vv 的无向边 查询 uu 和 vv 的连通性 由于本题数据较大,因此输出的时候采用特殊的输出方式:用 00 或 11 代表每个询问的答案,将每个询问的畅通工程(最小生成树and并查集算法)HDU - 1232
题目:畅通工程 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input 测试输入包含若CF1499G Graph Coloring 题解
Link. Codeforces Luogu Description. 给定一个二分图,给边染色。 使得 \(\sum|\text{black}(u)-\text{white}(u)|\) 最小。 其中 \(\text{black}(u)\) 和 \(\text{white}(u)\) 分别表示和 \(u\) 相邻黑/白边的数量。 支持动态加边,查询哈希值 \(\sum_{e|\text{col}(e)=\text{white}vue 微信小程序 props与$emit
小程序不支持props,在小程序中无法通过props给子组件传递值。 this.$emit("getF",getForm) 如果getForm为函数 则父级:getF="getF“ getF为父级定义的方法,此时子级的getForm函数将作为参数传递给getF,为回调函数。\ 小程序会过滤掉uni-forms里面的验证对象【并查集】关押罪犯 C++题解
题目描述: S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值[NOI2007] 货币兑换
前言 妙啊,我最喜欢码农题偷懒了。 题目 洛谷 讲解 思路来源:panyf orz 首先 \(O(n^2)\) 的 \(dp\) 很好想,令 \(f_i\) 为第 \(i\) 天最多获得的钱,则有: \(f_i=\max\{\frac{f_j*Rate_ja_i}{Rate_ja_j+b_j}+\frac{f_j*b_i}{Rate_ja_j+b_j}\}\) 令 \(A_j=\frac{f_j*Rate_j}{Rate_ja_j+b_李超线段树
前言 T4正解李超线段树?不会,滚过来学 保留节目百度百科自学已被删除 讲解 貌似思路并不是很难的亚子 我们需要在线支持一下两个操作: 插入一条线段 给定\(x_0\),询问当\(x=x_0\)时所有线段的最高点 我们可以使用权值线段树! 对于每个区间,我们维护一个最优线段 1.插入 显然对于一吉林区域赛 C - Justice 模拟
链接:https://vjudge.net/contest/386991#problem/C 题意:给出2指数级倍数的倒数 让我们把这些数分为两个堆,看看能不能分别分出两个大于等于二分之一的堆 思路:用优先队列+并查集的方式 优先队列从大到小排序,然后每次取最大的两个数进行操作,如果两个数不同,则剔除最大的那1387. 将整数按权重排序
1387. 将整数按权重排序 我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数: 如果 x 是偶数,那么 x = x / 2 如果 x 是奇数,那么 x = 3 * x + 1比方说,x=3 的权重为 7 。因为 3 需要 7 步变成 1 (3 --> 10 --> 5 --> 16 --> 8 --> 4 --> 2 --> 1)。 给leetcode [5497. 查找大小为 M 的最新分组]
(https://leetcode-cn.com/problems/find-latest-group-of-size-m/) 刚开始写的时候没有想到用并查集去做,于是胡乱分析,像什么用一些pair去记录子数组,放进que里面不断去分割....到最后也没写出来.... 这题可以用并查集去做,对于每一个新变成1的位置i,我们去尝试能否和i-1,i+1连起来,同[NOI Online #1 提高组]序列
Luogu P6185 NOI Online #1 序列 将其转化为图论题。 定义:\(u,v\)为\(a_i\)所代表的点 \(u',v'\)为\(b_i\)所代表的点 对于操作\(2\),将其视为一种权值搬运的操作,从\(u\)到\(v\)或者反过来转移点权。那么我们对\(u,v\)和\(u',v'\)连一条无向边,显然对于一个连通块内的所有点都[洛谷P6185] [NOI online 提高]T1 序列
[洛谷P6185] [NOI online 提高]T1 序列 一.题意简述 首先给出两串序列,给定操作1:指定两个数同加或同减 操作2:指定两个数一个加一个减。 思路一 1.分析 首先,由于是变换,所以达到最终目的需要让对应的数相差为0,换句话说,两个数有一个“相对差值”,只要相对差值不变数值本身的情况Tarjan算法求LCA
待更新...... 先把代码贴上 #include<bits/stdc++.h> using namespace std; const int maxn=500000*2+10; int head[maxn],tot=0,ver[maxn],nxt[maxn]; int headq[maxn],totq=1,verq[maxn],nxtq[maxn]; int ans[maxn],f[maxn]; bool vis[maxn]; void add(int x,int y) { ver[P3402 【模板】可持久化并查集
今天看到这道题,忽然不知道为何要线段树了\笑(出现了一些瞎搞的想法 然后就想到了操作树。。。 就是,我们可以离线,然后每个位置直接维护一个栈,记录历史信息。 然鹅我也不知道为什么常数很大 #include<bits/stdc++.h> #define R register int using namespace std; namespace LuitaryiKruskal重构树学习笔记
Kruskal重构树学习笔记 为做这道题,特意去学了一波Kruskal重构树。 以下写写学习心得: 首先像Kruskal一样按权值排序, 不过将Kruskal生成树的并查集合并操作改为了新建点,为合并的两点的父亲,点权为加入的边的权值的操作 作者不要脸地剽图了 变为: 有一些性质: 1.二叉树。 2.点权大根堆并查集
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int fa[10003]; 5 int n , m; 6 int getf(int p) 7 { 8 if(fa[p] == p) 9 return p;10 return fa[p] = getf(fa[p]);11 }12 int merge(int x , int y)13 {14 int t1 =洛谷P2256 一中校运会之百米跑
洛谷P2256 一中校运会之百米跑 题目背景 在一大堆秀恩爱的**之中,来不及秀恩爱的苏大学神踏着坚定(?)的步伐走向了100米跑的起点。这时苏大学神发现,百米赛跑的参赛同学实在是太多了,连体育老师也忙不过来。这时体育老师发现了身为体育委员的苏大学神,便来找他帮忙。可是苏大学神需要热B.DongDong认亲戚
链接:https://ac.nowcoder.com/acm/contest/904/B 题意: DongDong每年过春节都要回到老家探亲,然而DongDong记性并不好,没法想起谁是谁的亲戚(定义:若A和B是亲戚,B和C是亲戚,那么A和C也是亲戚),她只好求助于会编程的你了。 思路: 并查集模板题。 map记录人。 代码: #include <bits/stdc++.h>P1536 村村通
原题链接 https://www.luogu.org/problemnew/show/P1536 昨天刚学的并查集,今天正好练习一下,于是就找到了这个题 看起来好像很简单,尤其是你明白了思路之后,完全就和板子题没啥区别嘛 话是这么说,但是思路我一开始也没想到,只知道要用并查集和生成树的知识,知道看到了题解里的思路才恍然并查集及扩展域与边带权
并查集是个很实用的数据结构,主要功能可以动态维护若干个不重叠的集合,并支持合并与查询,当然这些都只是概念,个人理解并查集能够维护具有传递性的关系,还可有维护节点之间的连续性,克鲁斯卡尔就是这样做到的.普通的并查集就是如此,今天介绍并查集的扩展,看题: 题目一看便知道要用到并查集P1955 [NOI2015]程序自动分析
Description 给定多个 $ x_i x_j $ 是否相等的条件 判断能否实现给每个 $ x_ i $赋上合适的值满足条件 Solution 考虑用并查集实现 若两个数相等,则表示它们的祖先相同 给出的条件要先排序,把所有相同的条件放在前面先处理 数的范围很大,并查集数组开不下,需要离散化一下 Co