ICode9

精准搜索请尝试: 精确搜索
  • Vjudge-Find Metal Mineral(HDU - 4003)2022-07-31 18:06:56

    written on 2022-04-13 树形背包题,写一篇题解总结一下 题意:给一棵 \(n\) 个节点的树, 节点编号为1 ~ \(n\) , 每条边都有一个花费值. 有 \(k\) 个机器人从 \(S\) 点出发, 问让机器人遍历所有边,最少花费值多少? 因为树形背包的题确实做得不多,掌握的不是很好,刚开始并没有什么思路。

  • Trie字符串统计2022-07-31 03:02:23

    Trie字符串统计 摘自acwing模板题https://www.acwing.com/problem/content/837/ trie数的存储和查找 形如上面的树,左边的字符串是要存储的字符串,存完一个字符串在他的末尾记录一个标记(方便查找操作) 存储: 存储的时候,一个字符就存放成一个结点,结尾字符打标记. 查找: 查找的时候

  • "蔚来杯"2022牛客暑期多校训练营32022-07-30 20:36:12

    比赛链接: https://ac.nowcoder.com/acm/contest/33188 A.Ancestor 题意: 已知两棵有 \(n\) 个节点的树 \(A\) 和 \(B\),每个节点都有自己对应的权重,有一个长为 \(k\) 的序列 \(x\),表示树中的关键节点,第 \(i\) 轮删除 \(x_i\) 这个关键节点,问 \(A\) 树中剩余关键节点的最近公共祖先的

  • P3916 图的遍历2022-07-30 16:01:14

    P3916 图的遍历 题意:求各个点所能到达最大的编号   按正常情况去遍历图,会超时和爆内存,得到20分(起码我只拿了20) 换个思路来求,编号大的地点可以到达哪些点 思路: 反向建边 从编号大的点开始dfs,dfs传递初始编号d,这是遍历到的点的答案 若当前点被访问过了说明被更大的点访问过了,遂ret

  • A层邀请赛42022-07-29 07:31:47

    A. 暗之链锁 树剖维护一下即可,其实树上差分也可 注意线段树空间开四倍!!!!!!!!!! 左移\(2\) code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; inline int read(){ int x = 0; char c = getchar(); while(c < 

  • [ZJOI12007] 时态同步2022-07-28 15:04:53

    [ZJOI12007] 时态同步 [ZJOI2007] 时态同步 - 洛谷 将图看成以激发器 \(S\) 为根的一棵树。 容易发现,所有终止节点均为叶子节点,于是题意转化为:至少改动多少次边权使得 “时态同步”。 设 \(u, v\) 为两个不同的叶子节点。 那么,若 \(u,v\) 时态同步,则在以 \(lca(u,v)\) 为根的子树

  • 算法竞赛进阶指南 0x54 树形DP2022-07-26 00:33:41

    总论 树状DP就是以 子树大小 节点的深度 为阶段。 当一个节点的最优解仅仅和他的儿子有关系,那么就可以。 AcWing\285. 没有上司的舞会 Ural 大学有 N 名职员,编号为 1∼N。 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。 每个职员有一个快乐指数,用整数 Hi 给出,

  • 堆板子计划2022-07-25 08:01:12

    LCT*1 struct LCT_Tree{ #define lch V[p].son[0] #define rch V[p].son[1] #define Isroot(p) (V[V[p].fa].son[0]!=p && V[V[p].fa].son[1]!=p) #define Son(p) (V[V[p].fa].son[1]==p) struct Vertex{int son[2],siz,sum,t1,fa;}V[maxn]; int tot; int New(

  • AGC/ARC 难题集2022-07-24 11:37:56

    AGC024E Sequence Growing Hard ARC097D Monochrome Cat 开始想的是一个暴力的换根 dp 模拟题意的选择,打到一半意识到严重的问题就是代码 3K 起步且可能要调一年,所以灰溜溜去看题解了。 题解发现性质就能转化成简单问题的 dp。首先不难发现如果一个无根树的子树(意会一下)全黑就

  • 冲刺国赛7.182022-07-24 10:00:57

    T1 先分类讨论把 \(\max\) 拆开 假设 \(a_c+b_c\geq a_y+b_y\) \(a_c-a_y\geq b_y-b_c\) 于是对于每个蛋糕都记录一个判据量 \(h\) 属于 \(L\) 的判据为 \(c-y\) 属于 \(C\) 的是 \(y-c\) 当 \(a\) 的判据大于等于 \(b\) 的时候取最小的 \(b_c\) 再开一个关于 \(h\) 值域的线段树,

  • $\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) {

  • 树上启发式合并2022-07-22 11:42:28

    模板 #include <iostream> #include <cstdio> using namespace std; const int N = 100010; int n, c[N], head[N], ver[N << 1], nex[N << 1], tot, cnt[N], num[N], siz[N], son[N], L[N], R[N], dfn, pos[N], maxn; long long sum[N], ans[N]; inlin

  • 最长异或和路径2022-07-20 20:35:44

    题目详情 最长异或和路径 描述 给定一颗n <= 100 000个点的带权树,求树上最长的异或和路径。 输入 多组数据。每组数据的第一行包含一个整数n(1 <= n <= 100000),以下n -1行每行包含三个整数u(0 <= u < n),v(0 <= v < n) ,w(0 <= w <2 ^ 31),表示u和v之间的长度为w的边。 输出 对于每组数据输出

  • 【DSY】Migration 题解2022-07-20 08:31:48

    DSY 传送门:Migration 二分 + 贪心 + 双向搜索(思想)。 Solution 1 看到“最大值最小”,考虑二分答案如何做。对于每个状态权值的上限 \(mid\),它的可行性是具有单调性的。直白地,当 \(mid\) 大于等于一个临界值,那么一定可以满足最大状态权值小于此上限;反之则一定不满足。 为了方便计算,

  • Vue2-Slot插槽使用2022-07-19 15:33:40

    Slot插槽 父组件向子组件传递 父组件将内容分发到子组件 slot插槽的值只读,不能在子组件中修改 slot插槽也可以作为组件之间的通信方式 默认插槽 父组件中:使用Son组件 <template> <Son> <ul> //子组件如果不定义插槽 这里面的ul不起作用 <li>我<

  • 树链剖分学习笔记2022-07-17 16:32:12

    目录概述基本概念预处理操作dfs1dfs2具体处理问题1.LCA问题P3379 【模板】最近公共祖先(LCA)Game2:简单树上问题P4281 [AHOI2008] 紧急集合 / 聚会P5903 【模板】树上 k 级祖先2.单点修改,链上求值P2590 [ZJOI2008]树的统计 概述 树链剖分(轻重链剖分)是一个将树上问题转换为序列上问题

  • P3250 [HNOI2016] 网络 (树剖+堆)2022-07-15 22:31:26

    本题有插入路径和删除路径,在每个节点维护插入堆和删除堆,查询时两者top一样则一直弹出。如果每个节点维护的是经过他的路径,显然有些不好处理,正难则反,每个点维护不经过他的路径,那么x节点出了故障时,我们就查询x,查询到的就是x出故障后不受影响的路径。 (洛谷上有一个点一直过不了,似乎是

  • G. Xor Tree - 字典树2022-07-14 08:00:12

    G. Xor Tree https://codeforces.ml/group/MKpYqfAQQQ/contest/386972/problem/G 题意 给一个数组里面的数都不相同 对于每个数组中的数 找到数组中与之亦或值最小的数 这两个数之间有一条边 求最多删去多少个数 使得最后得到的图是连通图 思路 字典树 处理每个数的二进制数 根据0

  • [LC 676] Trie树简单运用2022-07-09 12:41:14

    https://leetcode.cn/problems/implement-magic-dictionary/ static int son[10010][26]; int idx = 0; static int cnt[10010]; class MagicDictionary { public: //Trie树相关的数据; MagicDictionary() { memset(son, 0, sizeof son); memset(cnt, 0,

  • 点分治2022-07-04 12:36:21

    int siz[Z], kid[Z], root, size;//kid[rt]:该点的最大子树的大小 bool vs[Z]; void getroot(int rt, int fa)//求树的重心 { siz[rt] = 1, kid[rt] = 0; for (re i = head[rt]; i; i = e[i].ne) { int son = e[i].v; if (vs[son] || son == fa) conti

  • Codeforces Round #798 Div.2 C-E 题解2022-07-03 01:04:33

    Problem C 传送门 Solution 看完题面不难想到一个贪心思路: 从根节点开始 DFS,每次截断节点数更多的子树,然后递归到另一棵子树继续向下计算。 看起来十分美好,但有一个问题:如果两棵子树大小一样,结构又不清楚,怎么办? 这个时候就珂以用动态规划来解决了。 设 \(dp(u)\) 表示 \(u\) 被感

  • 平衡树(Splay)2022-07-02 13:09:50

    平衡树 不同平衡树 有许多不同的平衡树 如:替罪羊树,AVI,红黑树,Treap,FHQ-Treap (无旋Treap),Splay,SBT 等 其中比较重点的是上述后四种 目前只学习了 Splay 和 Treap 能够较为熟练的打出来的只有 Splay 有关 Splay 代码 (luoguP3396) : #include<bits/stdc++.h> using namespace std; i

  • POJ2763 Housewife Wind (树链剖分)2022-07-01 20:37:52

    差不多是模板题,不过要注意将边权转化为点权,将边的权值赋给它所连的深度较大的点。 这样操作过后,注意查询ask()的代码有所改变(见代码注释) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=100010; 6 int head[m

  • POJ3237 Tree (树链剖分)2022-07-01 20:34:52

    通过打懒标记实现区间取反,和线段树基本操作都差不多。 本题还是一道边权化为点权的问题。 200行巨长代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=10010; 6 int head[maxn],cnt=0,total=0;//头结点

  • HYSBZ1036 [ZJOI2008]树的统计(树链剖分)2022-07-01 19:32:47

    将树通过树链剖分转化成线性序列,用线段树维护最值,和值即可。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 const int maxn=30005; 7 int n,m; 8 int head[maxn],to[maxn<<1],nxt[maxn

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

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

ICode9版权所有