首页 > TAG信息列表 > fy

并查集

按秩合并 ·如果连接的循序不好,可能导致找某个节点的代表需要O(n)时间 ·合并时小集合连向大集合 ·这样能保证依次查找时间为O(log n) ·为了减少路径上的重复搜索,压缩查找路上的节点 int find(int x){ if(f[x]==x)return x;//自己就是代表 else return f[x]=find(f[x]);//找

银河英雄传说

P1196 [NOI2002] 银河英雄传说 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) front数组代表每个点到队头的距离,x,y之间隔了几个舰队答案为abs(front[x]-front[y])-1; nums数组代表当前队伍一共有几个舰队 合并操作只需要将x,y对应祖先也就是fa(x),fa(y)也就是它们各自的队头front nums

Java高级特性——平台模块系统

Java高级特性——平台模块系统 java9 引入了 JAVA 平台模块系统 一、模块的概念 假设一个场景,我们想要修改或剔除一个很少使用的特性,如果它对外是公有的,那么就没办法推断这个变化产生的影响。模块为我们提供了比较好的解决方案。 一个 JAVA 平台模块包含: 一个包集合 可选地包含资

百度爱企查旋转验证逆向

地址百度旋转验证 查看重定向的url,获取as, ds, tk 三个值 获取旋转的原图 和 backstr 的值 旋转验证参数提交,dbug 调试参数跟进, 跟进来后发现重点在 r.rzData 控制台打印 r.raData 在r.rzData中ac_c是检测的关键,ac_c=round((o / 212),2),而o是滑动的距离,o=angle*212/360 (an

蓝桥杯2022省赛I题 - 推导部分和 -带权并查集datastructure

    #include <bits/stdc++.h> #define dbg(x) std::cerr << #x << "=" << x << "\n" using i64 = long long; const int N = 1e5 + 9; i64 val[N]; int fa[N]; int find(int x){ if(fa[x] == x) return x; int o

POJ1639 Picnic Planning (限制入度最小生成树)

节点1是有度数限制的,把节点1去掉,就会形成若干个连通块,在每个连通块内部求最小生成树(prim算法实现),并求出每个连通块与1相连的最短的边,这样形成了初始状态的生成树。 假设(1,x)这条边没在生成树中,如果在生成树中从1到x的路径中的最大边权大于(1,x),考虑加上(1,x),去掉这条最大边权的边,答案就更

1492:最小生成树计数

【题目描述】 原题来自:JSOI 2008 现在给出了一个简单无向加权图。你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树。(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的)。 【输入】 第一行包含两个数,n 和 m,表示该无向图的节点数

leedcode 407. 接雨水2

          思路分析 : 在二维中的接雨水,对每一个位置可以接水的量是其左侧的最大值和右侧的最大值中取小值 而在三维的接雨水中,首先可以知道的是最外面一层是不能接水的,因此对内层某一个位置的可以接水量,即为其四周高度的最小值决定的 我们可以借助优先队列,上来先将四周放入

P5064 [Ynoi2014] 等这场战争结束之后 题解

毒瘤卡常分块题但是看你写法。 注意到这道题有回溯操作,可以考虑建立操作树,下设第 \(i\) 个操作在操作树上对应的节点为 \(p_i\): 先建立 0 号节点表示初始状态(令 \(p_0=0\)),对于 1,3 两个非回溯操作(设为第 \(i\) 个操作),当前操作编号就是操作树上对应的节点编号,即令 \(p_i=i\);对于 2

并查集

1 //-----并查集的初始化----- 2 3 //一开始有n个元素,互相独立,则构成了n个集合,每个集合的代表元素就是它本身 4 5 const int maxn = 100010; 6 7 int fa[maxn + 1]; //fa数组记录每个元素由谁代表 8 int sz[maxn + 1]; //sz数组记录每个集合的元素个数 9 int dep

[NOI2021]轻重边

这个题有两个方法,都得掌握。(LCT就算了) 一个方法不具有强的普遍性,但很巧妙,可以积累一下。边由两个端点组成。初始时各点的颜色互不相同,每次修改对路径上的点赋予独一无二的颜色,可以使得黑边等价于两端点颜色相同,白边等价于颜色不同。这个做法能够成立主要是因为修改的方式比较特殊

算法模板

算法模板 数论 //最大公约数 LL gcd(LL a, LL b) { return b ? a : gcd(b, a%b); } 统计 并查集 struct UF{ int n; int cnt; vector<int> fa; vector<int> sz; UF(int _n) : n(_n), cnt(_n), fa(_n), sz(_n, 1) { iota(fa.begin(), fa.end(), 0

FY-4A的nc数据批量转tif并投影

前段时间处理了一些fy4a的沙尘检测数据,综合了一些网上的帖子搞了一个批量处理的方法,主要实现方法是用python读取fy4a数据,然后用arcgis的模型构建器实现批量投影。 FY4A数据读取代码来自(7条消息) FY4A数据读取与插值_爱吃肉的悟空的博客-CSDN博客 模型构建器的设计参考(7条消息) a

CF 793 div2 E 题解

793div2 E 可上 CF 看本题解。 建模不多说,你会把排列拆成若干个轮换,然后对于长为 \(k\) 的轮换,会且仅会用 \(k-1\) 次交换(因为题目保证用的次数是最少的)。 把这些交换抓出来建图,会得到一个森林,你需要给每条边定向,使得每棵树的拓扑序都可以和原轮换循环同构。 考虑如果满足一个 \(i

matlab gradient函数

Gradient(F)函数求的是数值上的梯度,假设F为矩阵.   >> x=[6,9,3,4,0;5,4,1,2,5;6,7,7,8,0;7,8,9,10,0] x =     6       9       3       4      0     5       4       1       2      5     6       7

并查集笔记

代码实现:通过路径压缩把某类节点统统并入根节点,类似于冠状病毒(? 首先把每个节点的父节点设置为他们自己 find函数以及修改父节点代码实现 int findset(int n){ return fa[n]==n?n:fa[n]=findset(fa[n]); } 并查集父节点查询与融合操作 int fx=findset(x),fy=findset(y);

「BalticOI 2020」小丑

预处理出 \(f_i\) 表示最大的使得在加入所有 \([1,i)\or [j,m]\) 中的边后存在奇环的最大 \(j\)。 显然 \(f\) 满足单调性,于是可以整体二分。 对于分治区间 \([l,r]\),已知所有 \(\{f_l...f_r\}\in [x,y]\),那么暴力计算出 \(f_{mid}\),然后递归分治。 暴力计算时用并查集判断奇环即

ST 表并查集小记

ST 表维护并查集,在 $O(n \log n)$ 时间内处理 $[l_1,r_1]$ 内每个点依次向 $[l_2,r_2]$ 中的点连边(共连 $r_1-l_1+1$ 条边) 首先变成对于 $l_1$ 和 $l_2$,对于 $i=0,1,\dots,2^k-1$,连边 $(l_1+i,l_2+i)$。 然后,采取以下形式: void merge(int x,int y,int k) { int fx=getfa(pos[

P2078朋友

一、题目描述             二、题目分析   这个题目我觉得题意有点问题的,后面把并查集的模板改成等于就行了,也就是计算两个公司认识1号人的人数取个最小值,因为你不可能凭空造人,对吧? 三、代码实现    1 #include "bits/stdc++.h" 2 using namespace std; 3 int a[1

JZOJ 3745. 【NOI2014模拟7.14】Problem A

\(\text{Problem}\) 我们有一个树,大小为 \(n\)。 考虑树上的一条路径,如果一个边的两个点都在这路径上,我们称这个边属于这个路径,如果一个边有且只有一个点在这路径上,我们称这个边与这个路径相邻。 现在每个边要么是黑色的要么是白色的,一开始所有边都是白色的。 我们有 \(3\) 个操作

【无标题】python实现有道翻译

''' import requests import json def translate(word=None):     url = 'http://fanyi.youdao.com/translate'     Form_Data = {'action': 'FY_BY_REALTIME', 'i': word, 'from': 'AUTO', �

并查集及其应用

题目后续补吧,主要解决问题; 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+5; 4 int fa[N]; 5 int find_fa(int x){ 6 return fa[x]=(x==fa[x])?x:find_fa(fa[x]);//路径压缩 7 } 8 void merge(int x,int y) 9 { 10 int fx=find_fa(x),f

第1届ICPC青少年程序设计竞赛 G.Dynamic Graph

题目描述 给定一张 \(n\) 个点的无向图,刚开始为空。执行 \(m\) 次操作 \((3\) 种操作\()\)。 1 u v w,在点 \(u\) 与点 \(v\) 之间加入一条权值为 \(w\) 的边。 2 id,删除第 \(id\) 次操作加入的边。 3 u v w,询问点 \(u\) 与点 \(v\) 之间是否存在一条权值模 \(F\) 为 \(w\) 的路径

【十二月】第二次课堂练习

P1605 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> using namespace std; int barrier[10][10]; int walkx[5] = {0,0,0,1,-1}; //x方向可以走的选择 int walky[5] = {0,-1,1,0,0}; //y方向可以走

我发论文啦系列之三《A New Geostationary Satellite-Based Snow Cover Recognition Method for FY-4A AGRI》

前言 第一次发SCI文章,内心还是激动的。文章内容是关于FY-4A号卫星识别积雪的算法。主要是针对去云的研究,也算是为之前静止星的研究画一个句号,也不能这么说,后续如果顺利可能还有一篇应用的文章。文章发表在IEEE-JSTARS,编辑和审稿人都很认真负责,导师和小导师都对我帮助很大,再次