Luogu P4323 [JSOI2016]独特的树叶】的更多相关文章

一道比较好的树Hash的题目,提供一种不一样的Hash方法. 首先无根树的同构判断一般的做法只有树Hash,所以不会的同学可以做了Luogu P5043 [模板]树同构([BJOI2015]树的同构)再来. 首先我们直接考虑一种朴素的想法,暴力求出\(A\)树中以每一个点为根时的Hash值 然后扔到一个set(你要再写个Hash也没事)里,再在\(B\)树中枚举叶子节点,判断去掉这个叶子节点后的Hash值是否在set里即可. 发现这样算法的复杂度瓶颈在求\(A\)树Hash值时的\(O(n^2)…
新技能get 树哈希,考虑到两棵树相同的条件,把每一个结点的哈希值和树的siz写进哈希值里去. 做出A树每一个结点为根时的树的哈希值丢进set中,然后暴力枚举B树中度数为1的点,求出删掉这个点之后的哈希值是否相同. 暴力算哈希是$O(n^{2})$的,考虑换根法,一个点作根的时候它的子树中的信息是不会变的,唯一的改变就是它的父亲及往上变成了它的新的一棵子树,这样我们可以递推出每一个结点的父亲作它的子树时的哈希值. 所以先自下到上哈希一遍,再重新自上到下算一遍,算父亲作儿子的哈希值就相当于挖掉一个…
传送门 树哈希?->这里 反正大概就是乱搞--的吧-- //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;…
https://www.lydsy.com/JudgeOnline/problem.php?id=4754 https://www.luogu.org/problemnew/show/P4323 https://loj.ac/problem/2072 JYY有两棵树A和B:树A有N个点,编号为1到N:树B有N+1个点,编号为1到N+1.JYY知道树B恰好是由树A加上一个叶 节点,然后将节点的编号打乱后得到的.他想知道,这个多余的叶子到底是树B中的哪一个叶节点呢? 树同构问题基本都是树哈希做的.…
题目链接 这道题是一道判断无根树同构的模板题,判断同构主要的思路就是哈希. 一遇到哈希题,一百个人能有一百零一种哈希方式,这篇题解随便选用了一种--类似杨弋<Hash在信息学竞赛中的一类应用>中的这种,可能不是最简洁好写的,但是能用. 我的哈希规则:子树\(u\)的哈希值由它的每一个子树\(v_i\)的哈希值得来,首先将所有\(f(v)\)排个序(防止顺序不同造成影响),然后\(f(u) = size(u) * \sum_i f(v_i)W^{i - 1} \bmod P\),\(W\)是事先…
这个题....别人写得怎么都....那么短啊? 我怎么....WA了好几次啊....怎么去loj扒了数据才调出来啊? 这个算法...怎么我还是不知道对不对啊 怎么回事啊怎么回事啊怎么回事啊? 请无视上面的梦话 代码太长应该是因为我把两棵树都有的函数通过复制改名实现,如果写成结构体大概能短一半吧 题意 给出两棵树A和B,A有n个点,B有n+1个点,且B是由A的某个点上多连一个点再把节点重新标号得到的.问多连的那个点在B中的编号.有多解时输出最小的. 分析 首先我们发现这是个树同构题目!然后我们只会…
判断两棵无根树是否同构只需要把重心提作根哈希即可.由于只添加了一个叶子,重心的位置几乎不发生偏移,所以直接把两棵树的重心提起来,逐层找哈希值不同且对应的两子树即可.被一个普及组子问题卡一年. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace…
https://zybuluo.com/ysner/note/1177340 题面 有一颗大小为\(n\)的树\(A\),现加上一个节点并打乱编号,形成树\(B\),询问加上的节点最后编号是多少? \(n\leq10^5\) 解析 判断树的同构显然需要树哈希. 可以先将树\(A\)中以每个节点为根的哈希值算出来存进一只\(unordered\_set\)中, 然后在树\(B\)中随便找一个不是叶节点的节点为根,枚举去掉一个叶节点,看根的\(Hash\)值是否能在\(unordered\_set\…
不得不说这是神题. %%%   http://blog.csdn.net/samjia2000/article/details/51762811 #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <set> #define inf 0x3f3f3f3f #define LL long long #define eps 1e-…
[BZOJ4754]独特的树叶(哈希) 题面 BZOJ 给定一个\(n\)个节点的树A和一个\(n+1\)个节点的树\(B\) 求\(B\)的一个编号最小的节点,使得删去这个节点后\(A,B\)同构 题解 树哈希 一个奇怪的姿势 总而言之,就是把树的各种信息乱七八糟的拼在一起强行哈希一下 真搞不懂这种丧病的东西为什么还能直接出成省选题, 随便一个模数还可能\(WA\)... 这种东西依我看只适合\(IOI\)赛制 至于怎么搞?想怎么搞怎么搞啊.... 你可以把子树的哈希值排序再哈希 也可以直接异…
题解 干脆题解套题解好了 毕竟我的hash方法是抄小迪的 https://www.cnblogs.com/RabbitHu/p/9165770.html 小迪太巨了%%% 之前模数是八位的WA了几个点,换成9位模数就都过了 代码 #include <bits/stdc++.h> //#define ivorysi #define enter putchar('\n') #define space putchar(' ') #define fi first #define se second #…
正题 题目链接:https://www.luogu.com.cn/problem/P4323 题目大意 给出\(n\)个点的树和加上一个点之后的树(编号打乱). 求多出来的是哪个点(如果有多少个就输出编号最小的). \(1\leq n\leq 10^5\) 解题思路 定义一下\(hash\)值\(P(i)\) 我的做法是\(P(i)=p^i\),\(p\)是一个质数,当然这样好像容易被卡,安全点的做法是用第\(i\)个质数或者直接用复数\(hash\). 然后定义一下带根的\(hash\)值 \…
原题传送门 这题实际挺水的 先对两个字符串分别跑马拉车 就能求出1.2类扭动回文串最大的长度 考虑第三类的扭动回文串\(S(i,j,k)\),一定可以表示为\(A(i,l)+A(l+1,j)+B(j,k)\)或\(A(i,j)+B(j,l)+B(l+1,k)\),其中,第一段与第三段对称(第一段正着Hash和第三段反着Hash相同,数据水(某八位质数都不卡),单模数hash就行),第二段是一个回文子串,三段都可以是空串. 在A.B串上枚举扭动的回文串的中心mid,不难发现,以其在原串上能扩展出的…
JZdalao昨天上课讲的题目,话说JSOI的题目是真的不难,ZJOI的题目真的是虐啊! 题意很简单,抽象一下就是:有一棵树,一次只能选从根到某个节点上的链上的所有点,问从中取出k个节点所得到的总价值和总代价的比最大是多少. 像这种比值最大的题目,很容易让人联想到分数规划 关于分数规划的姿势,可以自行百度 对于题意进行进一步分析,得到要求的是: max{∑v[i]/∑w[i]}(if i is chosen) 因此我们设x,二分x,看看是否存在: max{∑v[i]/∑w[i]}>=x(if i…
传送门 解题思路 一道0/1分数规划+树上背包,两个应该都挺裸的,话说我常数为何如此之大..不吸氧洛谷过不了啊. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int MAXN = 2505; const double eps = 1e-6; inline int rd(){ int x=0,f=1;cha…
高考集训讲课(To 高一) 主要是怕下午讲着讲着把自己讲懵了,有一定的迷糊概率 经过机房的讨论,一致认为插头\(DP\)实用性不大,所以这次不讲了,先把重要的讲一讲. 顺便吐槽一下,凭什么另外几个人都是几个相互联系的知识点,到我这跨越这么大... 反正都是\(trick\)直接上题,没有知识点讲 状压\(DP\) \(P7519\)滚榜 这是上次想讲的题 费用提前\(+\)状压\(DP\) 我们最后只求情况数,那么中间每个队伍的通过题数是无需关注的 从最开始考虑,我们暴力枚举每种情况,如何判断这…
哈希 Tags:字符串 作业部落 评论地址 一.概述 百度百科: 散列表(Hash table/哈希表),是根据关键码值(Key value)而直接进行访问的数据结构. 哈希表常用于比较两个字符串是否相同(可以把状态看作字符串,从而比较状态是否相同) 二.实现方式 一个例子 通常将其看成一个进制数,比如\(ABAF\)看成\(1216\),那么哈希值就是\(Hash=1*base^3+2*base^2+1*base+6\),\(base\)可以自由决定,如果说状态量有限,可以使用较小的\(bas…
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27update : 开学了终于搞到了550  可还行 *数据结构 *可持久化线段树/主席树 *bzoj3932 [CQOI2015] 任务查询系统 : 比较裸的主席树,任务查分一下就好了  cqoi真良心 *bzoj4026 dC Loves Number Theory :  数论个头啊,对每个数分解质因数…
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n\leq k^2\) 暴力 \(n\geq k^2\),找点x,求直线l经过x,且点数最多,点数\(\geq k+1\),递归,否则再找一个 One Point Nine Nine 现在平面上有\(n\)个点,已知有一个常数\(D\). 任意两点的距离要么\(\leq D\),要么\(\geq 1.…
判断树的同构,采用树hash的方式. 树hash定义在有根树上.判断无根树同构的时候,可以比较重心为根的hash值或者比较每个点为根的hash值. h[x]表示x为根的子树的hash,g[x]表示x为根时全树的hash. 我采用的方法是 h[x] = 1 + ∑h[y] * p[siz[y]] 于是g[x] = g[fa] - h[x] * p[siz[x]] + h[x] 例题1: BJOI2015 树的同构 判断无根树同构,我是比较了每个点为根时的hash值. #include <bits/…
JSOI部分题解 JSOI2018 战争 问题转化为给定你两个凸包\(\mathbb S,\mathbb T\),每次独立的询问将\(\mathbb T\)中的每个点移动一个向量,问\(\mathbb S,\mathbb T'\)是否有交. 我们知道对于两个凸包\(\mathbb {A,B}\)的闵科夫斯基和为\(\mathbb C=\{\vec a\in\mathbb A,\vec b\in \mathbb B\;|\;\vec a+\vec b\}\), 而两个凸包对于一次移动向量\(\ve…
强行一波题解骗一个访问量好了... http://blog.csdn.net/yanqval/article/details/51457302 http://absi2011.is-programmer.com/posts/200822.html http://absi2011.is-programmer.com/posts/200920.html orz js省队神犇↑ Day1 最佳团队(team) 给一个n+1个点的树,每个点有价值pi和费用si,求一个包含根的大小为m+1的联通块,使价值…
我博弈基础好差.. Luogu P2490 题意 有一个长度为$ n$的棋盘,黑白相间的放$ k$个棋子,保证$ k$是偶数且最左边为白子 每次小$ A$可以移动不超过$ d$个白子,然后小$ B$可以移动不超过$ d$个黑子 双方不能把棋子越过其他棋子 求有多少种初始方案使得小$ A$先手必胜 注意白子只能往右黑子只能往左 $NimK游戏$ 对于一个局面,我们可以把每对相邻的(白,黑)对看成一堆石子,数量即为这两个棋子之间的距离 问题等价于每次可以在不超过$ d$堆中取石子求是否必胜 考虑普通…
超详细树叶绘制法,更有配套绘树小TIPE!让你画树So Easy~一秒变身,画树达人! 优动漫PAINT个人版软件下载:http://www.dongmansoft.com/chanpin.html 动笔前,我会先告诉你绘制树叶的基本形状. 你大可使用笔刷绘制树叶,但在本教程中,咱得动手画~ 总之,我是这样开始的: 首先,绘制一 条方向线: 然后,在方向线周围加上形状线: 添加两条线作为叶脉: 沿着叶脉塑形: 我们可以増加更多的叶脉线,在我们 认为所需之处.并且围绕着它们对叶 片塑形. 叶形 (…
Luogu P2570 [ZJOI2010]贪吃的老鼠 题目描述 奶酪店里最近出现了\(m\)只老鼠!它们的目标就是把生产出来的所有奶酪都吃掉.奶酪店中一天会生产\(n\)块奶酪,其中第\(i\)块的大小为\(pi\),会在第\(ri\)秒被生产出来,并且必须在第\(di\)秒之前将它吃掉.第j只老鼠吃奶酪的速度为\(sj\),因此如果它单独吃完第i快奶酪所需的时间为\(pi/sj\).老鼠们吃奶酪的习惯很独特,具体来说: (1) 在任一时刻,一只老鼠最多可以吃一块奶酪: (2) 在任一时刻,一…
AOS 是一个用于在页面滚动的时候呈现元素动画的工具库,你可能会觉得它和 WOWJS 一样,的确他们效果是类似的.但是AOS是 CSS3 动画驱动的库,当你滚动页面的时候能让元素动起来,当页面滚回顶部的时候,元素能够回到前一个状态,如此达到循环动画的效果. 马上去试试 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 & JavaScript 特效 Web 开发中很实用的10个效果[源码下载] 12…
An abbreviation of a word follows the form <first letter><number><last letter>. Below are some examples of word abbreviations: a) it --> it (no abbreviation) 1 b) d|o|g --> d1g 1 1 1 1---5----0----5--8 c) i|nternationalizatio|n --&…
这个是枚举类,可能大家根据个人需求不同,不是很需要,但是跟着做那个项目的朋友会用到 我在这贴一下代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; namespace Common.Enums { /// <summary> /// 枚举独特类 /// add yuangang by 2016-05-10 ///…
查看效果:http://keleyi.com/keleyi/phtml/css3/15.htm 请使用Chrome浏览器查看本效果. html源代码: <!DOCTYPE HTML> <html> <head> <title>HTML5树叶飘落动画-柯乐义</title><base target="_blank" href="http://keleyi.com/keleyi/phtml/css3/"…
与MySQL传统复制相比,GTID有哪些独特的复制姿势? http://mp.weixin.qq.com/s/IF1Pld-wGW0q2NiBjMXwfg 陈华军,苏宁云商IT总部资深技术经理,从事数据库服务相关的开发和维护工作,之前曾长期从事富士通关系数据库的开发,PostgreSQL中国用户会核心成员,熟悉PostgreSQL和MySQL. GTID(Global Transaction ID)是MySQL5.6引入的功能,可以在集群全局范围标识事务,用于取代过去通过binlog文件偏移量定…