ICode9

精准搜索请尝试: 精确搜索
  • 2021.8.13模拟赛2021-08-14 10:00:26

    感觉自己变菜了,有些应该能写出来的东西写不出来了QWQ。 T1:A. Sign 题面…… 额……这个是怎么计算出来的啊? 叶子节点有哪些啊?? 一个无向图的有向路径又是啥啊??? 经过全机房几分钟的讨论后…… 看不懂题,弃了吧。 后来经过做过这道题的大佬提示,发现: 接下来 \(N - 1\) 行,每行 3 个整数

  • 题解 P3224 [HNOI2012]永无乡2021-08-12 22:36:24

    题目链接 前置知识:kruskal 重构树,主席树 来讲一种目前题解区里没有,使用 kruskal 重构树和主席树,且时间复杂度为一个 log 的做法。 题目大意是给定一张点数为 \(n\)​​ ,初始边数为 \(m\)​ 的无向图,图中每个点有一个权值,然后有 \(q\)​ 个操作,每个操作可能是询问与点 \(x\) 联通的

  • [模板] 基础树上动规2021-08-12 16:32:23

    树的直径 方法一 : 两次dfs 方法二 : 利用动规求解,以每个结点向下延伸的最长长度为状态,顺便记录下向下延伸的次长长度,则数的直径便为 d1 + d2。 void dfs(int x,int fa){ f[x] = 1; int mx = 0; for(int i=head[x];i;i=nxt[i]){ int y=ver[i]; if(y==fa) continue; d

  • luogu P5043 【模板】树同构([BJOI2015]树的同构)2021-08-08 20:03:32

    题面传送门 首先把这颗树转化成最小的括号序。 然后有一个神奇的结论:如果两棵有根树的最小括号序相同,那么他们同构。 仔细想想其实是这么回事,这个东西使树的形态确定。 然后对于无根树我们找到它的重心做根就好了 时间复杂度\(O(mn^2)\) code: #include<bits/stdc++.h> #define I

  • U41492 树上数颜色(dsu on tree)2021-08-06 22:04:54

    blackpink \(O(n^2)\)显然不过我们应该优化成\(O(nlogn)\) 采用树上启发式合并 仿照树链剖分的思想,对于每一个位置,我们先处理所有的轻儿子,然后处理重儿子,统计当前节点的答案,最后把轻儿子删掉就可以了。 这样全局一个桶就够用了。 #include<iostream> #include<cstdio> #include<al

  • 1232021-08-05 19:31:42

    #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 300010 #define ll long long #define pb push_back #define reg register int //#define int long long char buf[1<<21], *p1=buf, *p2=buf; #define getchar() (p1==p2&am

  • 树上染色2021-07-31 21:00:44

    题面 树上染色 题解 这道题转移应该很容易。 直接枚举当前节点染黑的个数以及子节点染黑的个数即可。 设 \(f[x][j]\) 表示以 \(x\) 为根节点的子树中染黑 \(j\) 个点时两种颜色两两距离的之和的最大值。 所以有状态转移方程: \[f[x][j] = min(f[x][j - p] + f[y][p] + val) \]其中

  • 树的重心(dfs+?)2021-07-28 14:32:26

    题目链接–树的重心 dfs函数解析 int dfs(int x) { vis[x] = true; int sum = 1, cnt = 0; for (int i = h[x]; i != -1; i = ne[i]) if (!vis[e[i]]) { int s = dfs(e[i]);//s求得的是以e[i]为根的一条分支上节点的个数(不包括e[i]) cnt = max(cnt, s);//cnt存的

  • ARC124 比赛记录2021-07-26 18:33:43

    开幕数数,有点害怕。 A 手速偏慢, 用了 14 分钟,所幸没吃罚时。 B 刚开始还没想到偶数时怎么 check 后来发现如果 \(a\oplus b=x\) 那必然有 \(a\oplus x=b\),然后就做完了。 C 数据范围很诡异,看上去很像乱搞,所以直接暴力维护当前可能达到的所有状态,发现复杂度应该是和质因数个数有关

  • [题解]CF1527D MEX Tree2021-07-26 14:32:02

    题目链接 #1.0 基本思路 首先需要理解这个 "mex" 的含义,我们需要找出所有的路径使得 \(i\) 是编号最小的未出现的点,那么也就意味着 \([0,i-1]\) 应当全部包含在我们要找的路径中。那么我们便可以尝试维护这样的路径:路径两端 \(x, y\in[0,i-1]\),\([0,i-1]\) 包含在路径经过的点集

  • HDU 2376 Average distance2021-07-26 03:31:15

    题目链接:HDU 2376 Average distance 题目大意: 计算一棵树中任意两点之间的距离的平均值。 题解: 如果暴力枚举两点再求距离是显然会超时的。 转换一下思路,我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点数分别为\(a\)和\(b\),那么这条边被经过的次数就是\(a\times

  • noip模拟23[联·赛·题]2021-07-25 16:02:04

    \(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好久,hhhh 害,害,害,害 · \(T1\;联\) 据出题人说,这是个线段树裸题,啊啊啊,我看到1e5的时候也觉得这是个简单的线段

  • Atcoder Regular Contest 096 D - Sweet Alchemy(贪心+多重背包)2021-07-24 14:33:42

    洛谷题面传送门 & Atcoder 题面传送门 由于再过 1h 就是 NOI 笔试了所以题解写得会略有点简略。 考虑差分,记 \(b_i=c_i-c_{fa_i}\),那么根据题意有 \(b_i\le d,i=2,3,4,\cdots,n\),而 \(b_1\) 则没有任何约束条件。而如果我们令某个 \(b_i\) 加 \(1\),其余 \(b_i\) 均不变,那对应到原

  • NOIP 模拟 $19\; \rm v$2021-07-19 10:35:02

    题解 一道概率与期望的状压题目 这种最优性的题目,我们一般都是倒着转移,因为它的选择是随机的所以我们无法判断从左还是从右更有,所以我们都搜一遍 时间一定会爆,采用记忆化搜索,一种状态的答案一定是固定的,所以可以记忆化 但是空间也会爆,当状态大于 \(2^{25}\) 次方时,我们选择使用一

  • 【洛谷P4323】独特的树叶2021-07-18 09:00:50

    题目 题目链接:https://www.luogu.com.cn/problem/P4323 JYY有两棵树 \(A\) 和 \(B\) :树 \(A\) 有 \(N\) 个点,编号为 \(1\) 到 \(N\) ;树 \(B\) 有\(N+1\) 个节点,编号为 \(1\) 到\(N+1\)。 JYY 知道树 \(B\) 恰好是由树 \(A\) 加上一个叶节点,然后将节点的编号打乱后得到的。他想知道

  • 2019.7.17 义乌模拟赛 T3 白兔的树与白云的序列2021-07-18 07:00:33

    这个东西显然可以二分。转化为判定性问题。 我们考虑一个答案怎么被判定合法。 首先我们将大于等于\(mid\)的边去掉,然后得到若干个连通块,每个连通块有一个\(siz\)和\(S\)的总和。 考虑这个有什么充要条件之类的,仔细思考一下会发现就是对于任意\(i\)都有\(siz_i\leq ToTS-S_i\) 这

  • 【洛谷P5043】【模板】树同构2021-07-17 22:00:06

    题目 题目链接:https://www.luogu.com.cn/problem/P5043 树是一种很常见的数据结构。 我们把 \(N\) 个点,\(N-1\) 条边的连通无向图称为树。 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树就成为有根树。 对于两个树 \(T_1\) 和 \(T_2\),如果能够把树 \(T_1\) 的所有点

  • 线段树の模板2021-07-13 22:32:28

    0x01 线段树 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int M=1e6; char buf[1<<21],*p1=buf,*p2=buf; ll n,m,q; ll sum[M<<2],add[M<<2]; char sr[1<<21],z[20]; int C=-1,Z; ll read(){ ll x=0,y=1; cha

  • TC15279 SpanningSubgraphs2021-07-13 12:31:06

    题目链接 TC15279 SpanningSubgraphs 题目大意 有一张 \(n\) 个点,\(m\) 条边的图,对于每个 \(k\in[n-1,m]\),求出大小为 \(k\) 的能使图连通的边集数量。 \(1\leq n\leq 15\),\(1\leq m\leq 200\) 思路 考虑朴素的容斥,设 \(siz_S\) 为两个端点都在点集 \(S\) 中的边数,\(dp_{S,k}\) 为

  • LG7124 [Ynoi2008] stcm【树分治,构造】2021-07-12 18:03:26

    传送门 大概是全局平衡二叉树的思想( 假设当前递归到处理 \(x\) 的子树,首先我们先把以 \(x\) 为链顶的重链上的节点做了,因为这些集合互相包含,可以全部加一次再删掉。 接着要递归到轻子树,首先把重链节点加入,然后对轻子树建 Huffman 树,“加左进右,加右进左”,就可以对每个轻子树都把它

  • Codeforces 983E - NN country(贪心+倍增优化)2021-07-11 21:05:42

    Codeforces 题面传送门 & 洛谷题面传送门 一道(绝对)偏简单的 D1E,但是我怕自己过若干年(大雾)忘了自己的解法了,所以过来水篇题解( 首先考虑怎么暴力地解决这个问题,不难发现我们每一步肯定会贪心,贪心地跳到所有经过当前点的公交线路中另一端最浅的位置,直到到达两点的 \(\text{LCA}\) 为

  • Topcoder 10773 TheCitiesAndRoadDivOne 题解2021-07-10 09:02:32

    Topcoder 10773 TheCitiesAndRoadDivOne 题解 观察“最少一条路径,最多两条路径”这个条件,发现图中至多有一个环,否则(有至少两个环)一定可以找一对点,使其间有至少 \(3\) 条路径。 1---2 1-2-3-4 \ / \ | | | | 3---4 5-6 7-8 (1与4间有3条路径) (1

  • 【题解】[HAOI2015]树上染色2021-07-09 12:33:23

    [HAOI2015]树上染色 \(\text{Solution:}\) 考虑对于一个点,从它子树再中选择 \(k\) 个黑点的代价:\(e[i].dis \cdot (p-k)*k+(siz[j]-k)*(n-p-siz[j]+k).\) 于是状态转移方程就写好了: \(dp[x][T]=dp[x][T]=Max(dp[x][T],dp[x][T-k]+dp[j][k]+v*(k*(p-k)+(siz[j]-k)*(n-p-siz[j]+k)))

  • luogu P5482 [JLOI2011]不等式组2021-07-09 07:00:33

    题面传送门 其实这道题是一眼秒了的。 因为\(A\)有正负所以显然按\(A\)正负开两颗平衡树维护即可。 但是并没有这么简单。 首先\(A=0\),这个要特判。 然后它还会重复撤销一个不等式多次所以也要特判。 大概没了。时间复杂度\(O(nlogn)\) code: #include<bits/stdc++.h> #define I i

  • CF15412021-07-03 15:00:44

    CF1541 A 求一个排列,使得没有p[i] = i且最小化Σ(|p[i] - i|) 显然如果是偶数就相邻的交换,奇数就只有一组是三个轮换,剩下的两个换 B n个不同的数构成一个数组,问你有多少对i,j满足a[i] * a[j] == i + j,1e5 一开始没看到不同结果不会做。 枚举a[i]是多少,那么a[j]不会超过2 * n / a[i

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

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

ICode9版权所有