ICode9

精准搜索请尝试: 精确搜索
  • 正则表达式的使用经验分享2022-07-23 16:34:59

    正则表达式是一个学习周期较短,但是应用型极强的工具,不少小伙伴在学习完正则表达式之后都直接表示真香了! 但是,由于其语法比较固定,不常使用的话往往会由以往的风险,这里我分享自己的笔记,供大家参考! 一、校验数字的表达式 1. 数字:^[0-9]*$ 2. n位的数字:^\d{n}$ 3. 至少n

  • 论求 $lca$ 最有效的方法是2022-07-23 11:34:18

    目录 \(standard\_table\) : 欧拉序 + \(ST\) 表 \(multiplication\) : 倍增 \(tree_chain_subdivision\) : 树链剖分 #include<bits/stdc++.h> using namespace std; const int N=5e5+5; inline int read(){ int x=0,f=1;char ch=getchar(); while(!isdigit(ch)){if(c

  • $\text{All LCA}$2022-07-23 11:31:27

    \(1.Multiplication\) \(2.Treediv\) \(3.Euler+ST\) #include <bits/stdc++.h> using namespace std; const int N = 5e5 + 5; int n, m, S; vector <int> Link[N]; namespace solve1 { int f[N][25], dep[N]; void dfs(int u, int Fa) {

  • Educational Codeforces Round 132 E,F2022-07-23 11:06:27

    E 容易发现,我们在一个点进行修改,一定可以将经过这个点的非法路径数变成\(0\)。具体的方案就是将\(i\)异或上\(2^{p_{i}}\),其中\(p_{i}>30\),并且\(p\)要两两不同。(比如\(p_{i}=30+i\)就是一组可行的\(p\)) 此时我们有一个贪心策略:为了让更多非法路径变成合法的,那么我们修改的点深度

  • 刷洛谷题单【数据结构1-3】2022-07-23 01:31:06

    P1551 亲戚 题目描述 规定:\(x\) 和 \(y\) 是亲戚,\(y\) 和 \(z\) 是亲戚,那么 \(x\) 和 \(z\) 也是亲戚。如果 \(x\),\(y\) 是亲戚,那么 \(x\) 的亲戚都是 \(y\) 的亲戚,\(y\) 的亲戚也都是 \(x\) 的亲戚。第一行:三个整数 \(n,m,p\),(\(n,m,p \le 5000\)),分别表示有 \(n\) 个人,\(m\) 个亲

  • 并查集2022-07-22 08:03:43

    一般对于连通性问题,并查集是非常好用的 不仅仅可以维护出是否连通,还可以顺便维护出当前连通块的一些信息,比如直径 有时候并查集的祖先节点不做区分,即合并是认定父子关系是随意的,但是是遇到构建 \(kruscal\) 重构树等情形就需要做出区分,甚至在并查集树上做一些事情,所以一般情况下不

  • 最近公共祖先(倍增LCA)2022-07-21 19:01:41

    题目 最近公共祖先 描述 给定一棵树,请查询结点u和v的最近公共祖先。最近公共祖先,就是两个节点在这棵树上深度最大(离根结点最远)的公共的祖先节点,结点的祖先也可以是自身。 输入 输入数据第一行为结点个数n(n<=900),接下来有n行,每行格式如下: x m y1, y2, ... ym 表示结点x有m个孩子y1,

  • CF1033E 做题体验2022-07-20 02:02:36

    题目链接 这题看上去一脸不可做,对,我看什么题都不可做。。。 然后瞄一眼题解,发现一个小 \(\tt Trick\) : 判定二分图可以先拉出一个生成树,対生成树进行染色然后看相同颜色内有没有连边。 所以现在的第一步是拉出一个生成树。 首先,我们先把题目中要求的交互函数写出来,我用一个 \(\tt

  • 题解 CF1707C【DFS Trees】2022-07-18 12:31:09

    因为所有边权两两不同,所以 MST 是唯一的,我们把 MST 上的边标记出来。 我们知道对图进行 DFS 后,只有树边和返祖边两类边。要使得 MST 上的边均为树边,则不在 MST 上的边只能为返祖边。也就是说,不在 MST 上的边在当前根下必须是祖先后代关系。 至此,原问题转化为:判断每个节点作为根时,

  • 【LCA】【施工中】2022-07-17 14:02:25

    #include <bits/stdc++.h> using namespace std; const int N = 5e5 +5; int h[N],ne[N<<1],e[N<<1],fa[N<<1][22],lg[N<<1],dep[N],idx,n,m,s; inline void add(int x,int y){e[++idx] = y,ne[idx] = h[x];h[x] = idx;} void dfs(int u,int

  • P1892团伙 -- 并查集datastructure2022-07-14 20:31:07

    #include <bits/stdc++.h> using i64 = long long; int fa[1000005],b[1000005]; int find(int x){ return (fa[x] == x ? x : (fa[x] = find(fa[x]))); } void merge(int x,int y){ fa[find(x)] = find(y); } int main(){ std::ios::sync_with_stdio(fal

  • Codeforces Round #805 (Div. 3)G2. Passable Paths2022-07-14 13:05:47

    题目大意:   给出一个无向无环连通图(树),n个点n-1条边,m次查询,每次询问给出一个集合,问集合里的树是否都在同一条链上(即能否不重复的走一条边而遍历整个点集)   思路:通过求lca,若有三个点x,y,z   如果满足dix(x,y)+dix(y,z) == dix(x,z),说明此时y位于x,z之间,此时他们就在一条链上,只

  • [SDOI2013] 森林(主席树+启发式合并)2022-07-13 12:03:34

    传送门 description 给一个森林,每个点有权值。在线(每次每个变量xor lastans) 操作如下: Q x y k:查询x到y的路径上第k小的权值(保证x到y至少k个点) L x y:将x和y连边。 solution 从Q和L分别可以猜测需要用到主席树和lct。 主席树是我一直不太熟的数据结构,作用可以维护一段历史版

  • 暑假集训Day6 B(带花树)2022-07-12 23:31:42

    题目链接在这里:B (codeforces.com) 答案要求两女夹一男的匹配数,很显然不能用一般的二分图匹配去做,但是这既然是个匹配问题,题目是人出出来的,很显然还是需要转化成我们平时做的那种匹配。所以我们考虑把男生拆开拆成两个点,然后跑一般图匹配。最后拿匹配数减去男生人数就是结果。这就

  • 洛谷 P2024 食物链2022-07-12 16:38:01

    题目传送门:https://www.luogu.com.cn/problem/P2024 一般的并查集只能用来解决”亲戚的亲戚是亲戚“这类问题,但是如果关系变得复杂就不好解决。 比如”敌人的敌人是朋友“这类的问题,很明显普通的并查集无法解决,这个时候我们就要用到普通并查集的进阶版——种类并查集。   一般的

  • 平衡树——splay 一2022-07-12 10:03:38

    splay 一种平衡树,同时也是二叉排序树,与treap不同,它不需要维护堆的性质,它由Daniel Sleator和Robert Tarjan(没错,tarjan,又是他)创造,伸展树是一种自调整二叉树,它会将一个节点沿着到根的路径旋转上去。 空间效率:On 摊平时间效率:Ologn   存储结构 int ch[N][2],fa[N];//左孩子,右孩子,

  • spoj day1-22022-07-11 23:00:17

    A.国王的游戏 https://www.luogu.com.cn/problem/P1080 题意: 国王和n个大臣分别在左右手写下一个数,,从国王开始按一定顺序,每个大臣获得金币数为其前面包括国王左手的数的乘积除以自己右手写的数,求大臣最多获得金币数的最小值 思路: 这个贪心不是那么容易贪出来。考虑相邻两个大臣i

  • CF #805(div3) F - Equate Multisets 并查集+二分图?2022-07-11 21:06:09

    给定若干个点对,每个点对包含的数字均在1-n之间 要求把这些点对分到两个set里面,使得每个set里面的n不重复 (话说我的第一反应是2-set然后慌张自己2-set不会打嘿嘿嘿) 一般这种匹配,冲突,点,都和图论有点关系 和图论有点关系就是要建图啦 俺的建图是把数字看成一个节点,如果存在点对,比如(1,2

  • LCA模板2022-07-11 20:31:36

      拿来存一下lca模板,想知道原理的话出门洛谷~ #include<bits/stdc++.h> using namespace std; const int maxn=500007; int cnt=0,head[maxn],fa[maxn][40],dep[maxn],lg[maxn]; struct lys{ int from,to,nex; }e[maxn*2]; void add(int from,int to){ cnt++; e[cnt

  • 7.11 【左偏树】2022-07-11 09:37:00

    \(\large\text{Date: 7.11}\) 左偏树(可并堆) \(\large\to\text{Link}\leftarrow\) 原理 定义: 若一个节点有儿子是空的,那么这个节点就叫空节点。而一个节点的 \(dis\) 值代表从这个节点出发,只经过右儿子到达一个空节点最少需要走的边数。 左偏树 的意思是:对于一棵树上的每一个节点,其

  • Codeforces Round #805 (Div. 3) 题解2022-07-11 02:02:37

    A. Round Down the Price AC代码 #include <bits/stdc++.h> #define IOS \ std::ios::sync_with_stdio(false); \ std::cin.tie(0); \ std::cout.tie(0); using PII = std::pair<int, int>; using ll =

  • POJ1417 True Liars2022-07-10 23:34:22

    题目链接 题目 Description After having drifted about in a small boat for a couple of days, Akira Crusoe Maeda was finally cast ashore on a foggy island. Though he was exhausted and despaired, he was still fortunate to remember a legend of the foggy island, wh

  • 换根DP2022-07-10 12:01:02

    P3478 #include<bits/stdc++.h> using namespace std; #define f(i, a, b) for(int i = (a); i <= (b); i++) #define cl(i, n) i.clear(),i.resize(n); #define endl '\n' typedef long long ll; typedef unsigned long long ull; typedef pair<int,

  • NC14685 加边的无向图2022-07-10 02:00:18

    题目链接 题目 题目描述 给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述 第一行两个正整数 n 和 m 。 接下来的m行中,每行两个正整数 i 、 j ,表示点i与点j之间有一条无向道路。 输出描述 输出一个整数,表示答案 示例1 输入 4 2 1

  • NC14545 经商2022-07-10 01:32:50

    题目链接 题目 题目描述 小d是一个搞房地产的土豪。每个人经商都有每个人经商的手段,当然人际关系是需要放在首位的。 小d每一个月都需要列出来一个人际关系表,表示他们搞房地产的人的一个人际关系网,但是他的精力有限,对应他只能和能够接触到的人交际。比如1认识2,2认识3,那么1就可以

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有