[51nod 1830] 路径交】的更多相关文章

问题描述 给定一棵n个点的树,以及m条路径,每次询问第L条到第R条路径的交集部分的长度(如果一条边同时出现在2条路径上,那么它属于路径的交集). 输入格式 第一行一个数n(n<=500,000) 接下来n-1行,每行三个数x,y,z,表示一条从x到y并且长度为z的边 第n+1行一个数m(m<=500,000) 接下来m行,每行两个数u,v,表示一条从u到v的路径 接下来一行一个数Q,表示询问次数(Q<=500,000) 接下来Q行,每行两个数L和R 输出格式 Q行,每行一个数表示答案 样…
傻逼题... 裸的树上路径交 两条树上的路径$[a,b]$和$[c,d]$有交,则有$lca(a,b)$在$[c,d]$上或$lca(c,d)$在$[a,b]$上. 其实只要深度大的$lca$在另一条链上就好了,所以设$x=lca(a,b)$深度较大. 充分性证明:$x$在$[c,d]$上,则$[a,b]$和$[c,d]$显然有交. 必要性证明:$x$不在$[c,d]$上,如果$[a,b]$上有点$y$与$[c,d]$有交,因为$lca(c,d)$深度较小,所以$y$的深度必定小于$x$,那么$…
hdu 6010 路径交(lca + 线段树) 题意: 给出一棵大小为\(n\)的树和\(m\)条路径,求第\(L\)条路径到第\(R\)条路径的交的路径的长度 思路: 本题的关键就是求路径交 假设存在两条路径(a,b),(c,d),那它们的交是怎样的呢 画图看看,分三种情况 1.路径不存在交集 2.(c,d)交(a,b)路径的一边(由lca(a,b)将路径划分成两部分,假设这里交在a的一侧) 3.(c,d)交(a,b)路径的两边 可以看出路径交若存在,这其两端点一定在lca(a,c),lca(…
[百度之星初赛A]路径交 Problem Description 给定一棵n个点的树,以及m条路径,每次询问第L条到第R条路径的交集部分的长度(如果一条边同时出现在2条路径上,那么它属于路径的交集). Input 第一行一个数n(n<=500,000) 接下来n-1行,每行三个数x,y,z,表示一条从x到y并且长度为z的边 第n+1行一个数m(m<=500,000) 接下来m行,每行两个数u,v,表示一条从u到v的路径 接下来一行一个数Q,表示询问次数(Q<=500,000) 接下来Q行…
$n \leq 500000$的树给$m \leq 500000$个路径,$q \leq 500000$个询问每次问一个区间的路径交. 路径交口诀:(前方高能) 判有交,此链有彼祖: 取其交,最深两两祖. 说成人话就是:判两条路径有没有交,只要一条链的lca在另一条链上就一定有交:取两条路径的交,把两条路径的端点两两求出四对lca,最深那两个就是路径交. 证明?我会还用口诀! 由于需要很多很多次查lca,这里用欧拉序+st表求.查区间路径交可以线段树也可以st表,毕竟重复的部分算两次没问题. /…
这套题体验极差. PROBLEM 1001 - 小C的倍数问题 题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6108 (2017"百度之星"程序设计大赛 - 初赛(A) - 1001) 解 10进制下,各位数和是9的倍数的数能被9整除是因为 10^k-1=能被9整除 实质上就是10-1的因数有9 #include <iostream> #include <cstring> #include <cstdio…
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1443 1443 路径和树 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题   给定一幅无向带权连通图G = (V, E) (这里V是点集,E是边集).从点u开始的最短路径树是这样一幅图G1 = (V, E1),其中E1是E的子集,并且在G1中,u到所有其它点的最短路径与他在G中是一样…
[题目]2017"百度之星"程序设计大赛 - 初赛(A) [题意]给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度.n<=500000. [算法]线段树+RMQ-LCA+树链的交 [题解]树链的交:记一条链为(a1,b1),LCA为c1.另一条链为(a2,b2),LCA为c2.记a1a2,a1b2,b1a2,b1b2的LCA为d1,d2,d3,d4,按深度排序后得deep[d1]<=deep[d2]<=deep[d3]<=…
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1967 显然是欧拉回路问题,度数为奇数的点之间连边,跑欧拉回路就可以得到方案: 想一想不会有奇数个奇度数的点,否则总度数就是奇数,但一条边增加两个度,所以总度数一定是偶数: 一定注意奇度数的点之间连边时要 deg++ !还是把这个写在连边函数里比较靠谱... 代码如下: #include<iostream> #include<cstdio> #incl…
题目链接:路径和树 题意:给定无向带权连通图,求从u开始边权和最小的最短路树,输出最小边权和. 题解:构造出最短路树,把存留下来的边权全部加起来.(跑dijkstra的时候松弛加上$ < $变成$ <= $,因为之后跑到该顶点说明是传递下来的,该情况边权和最小.) 以样例作说明:第一次从顶点3跑到顶点1,最短路为2:第二次从顶点3经过顶点2跑到顶点1,最短路也为2,但是第二次跑的方式可以把从顶点3跑到顶点2的包括进去,这样形成的最短路树边权和最小. #include <queue>…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1672 题意: 思路:其实这就是一个经典的区间贪心问题,只需要按照左端点排序,然后用优先队列维护,每次将右端点最小的点出队列. #include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<vector> #includ…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1967 题意: 思路: 出度=入度,这很容易想到欧拉回路,事实上,这道题目也确实是用欧拉回路来做的,之前一直觉得应该用网络流来做,可惜想不出,后来看官方题解说也是可以的,但是复杂度太高. 对于每条边,先假设它为无向边,奇点的个数肯定是偶数个,对于这些奇点,我们可以两两连条边,使它们变成偶点,这样一来就肯定存在欧拉回路了,跑一遍就可以了.新加的边是不会影响结果的. 这道题目…
1967 路径定向 基准时间限制:1.2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 给出一个有向图,要求给每条边重定向,使得定向后出度等于入度的点最多,输出答案和任意一种方案 Input 第一行两个正整数N,M,表示1-N号点与M条边 接下来M行,每行两个正整数Xi,Yi,表示存在一条有向边从Xi指向Yi N≤10^5,   M≤3*10^5,   Xi,Yi≤N Output 第一行一个整数Ans,表示定向后出度等于入度的最大点数 第二行一个长度为M的01字符串,第i位…
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1967 一共只会有偶数个奇数度的点.因为每多一条边,总度数加2. 把奇数度的点之间连一条边,然后走欧拉回路.回溯的时候加边的意思是真正走过的边,应该走的是它的反向边. printf 会超时?!用putchar 快很多! #include<iostream> #include<cstdio> #include<cstring> #includ…
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1443 不只是做一遍最短路.还要在可以选的边里选最短的才行. 以为是求一遍最短路,然后按边权对边排序,哪条边两边的dis正好吻合,就把该边的边权加到ans里,把两端加到并查集里. 但其实不对.因为忽略了方向.比如如果有多个点同样地可以更新一个点,算的时候可能这多个点都因为那个点而被合到了并查集里,但其实只能有一个被合进去. 其实只要松弛点的时候如果dis[v]==d…
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1443 首先要得到一个最短路树: 注意边权和最小,因为在最短路中,每个点的 dis 都是固定的,所以边权和最小... 边权和会不同是因为,虽然 dis 固定,但由于组成一棵树,所以有些边被很多点算入 dis ,而它的边权只应被算一次: 发现每个点对直接连向它的那条边的选择是相互独立的,所以直接在那些边中选最小的即可. 代码如下: #include<iostream>…
还是一道很简单的基础题,就是一个最短路径树的类型题目 我们首先可以发现这棵树必定满足从1出发到其它点的距离都是原图中的最短路 换句话说,这棵树上的每一条边都是原图从1出发到其它点的最短路上的边 那么直接跑最短路,SPFA,不存在的?我只信DJ,然后记录那些边在最短路上 然后直接跑MST即可.是不是很经典的水题 然后我又莫名拿了Rank1(没办法天生自带小常数) CODE #include<cstdio> #include<cctype> #include<cstring>…
二分答案 + two - pointer + 树状数组大法好ヽ(゚∀゚)メ(゚∀゚)ノ 我们可以直接二分一个答案,然后检验 是否存在一个值大于等于这个二分的答案的,且覆盖次数大于等于 \(k\) 的区间.这个过程我们用 two- pointer 来实现,当左右指针包含的区间权值大于等于二分的答案时,只要检查一下是否被 \(k\) 个区间覆盖并不断右移左端点即可.如何快速统计覆盖一段区间的区间有多少个呢?如果我们把区间按左端点排序之后依次加入树状数组,则当我们的两个指针中的左指针移动到 \(l\)…
题目大意:给出一个图,安排边的方向,使得入度等于出度的点数最多,并给出方案. 首先假设是个无向图,不妨认定偶点必定可以满足条件 我们还会发现,奇点的个数必定是偶数个 那么如果把奇点两两用辅助边连起来,对全图求一个欧拉回路,就可以得到这个方案 因为奇点肯定不会是答案点,所以奇点连起来不会有影响 这时的欧拉回路就可以保证所有偶点满足入度等于出度 这里为了简便,写的是dfs出欧拉道路,因为欧拉道路同样可以满足要求 #include <iostream> #include <cstring>…
题目描述 众所周知,Hzwer学长是一名高富帅,他打算投入巨资发展一些小城市. Hzwer打算在城市中开N个宾馆,由于Hzwer非常壕,所以宾馆必须建在空中,但是这样就必须建立宾馆之间的连接通道.机智的Hzwer在宾馆中修建了N-1条隧道,也就是说,宾馆和隧道形成了一个树形结构. Hzwer有时候会花一天时间去视察某个城市,当来到一个城市之后,Hzwer会分析这些宾馆的顾客情况.对于每个顾客,Hzwer用三个数值描述他:(S, T, V)表示该顾客这天想要从宾馆S走到宾馆T,他的速度是V. Hz…
胡小兔的 OI 日志 3 (2017.9.1 ~ 2017.10.11) 标签: 日记 查看最新 2017-09-02 51nod 1378 夹克老爷的愤怒 | 树形DP 夹克老爷逢三抽一之后,由于采用了新师爷的策略,乡民们叫苦不堪,开始组织起来暴力抗租. 夹克老爷很愤怒,他决定派家丁常驻村中进行镇压. 诺德县 有N个村庄,编号0 至 N-1,这些村庄之间用N - 1条道路连接起来. 家丁都是经过系统训练的暴力机器,每名家丁可以被派驻在一个村庄,并镇压当前村庄以及距离该村庄不超过K段道路的村庄.…
题目描述 公元 \(2044\) 年,人类进入了宇宙纪元. \(L\) 国有 \(n\) 个星球,还有 \(n-1\) 条双向航道,每条航道建立在两个星球之间,这 \(n-1\) 条航道连通了 \(L\) 国的所有星球. 小 \(P\) 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 \(u_i\) 号星球沿最快的宇航路径飞行到 $v_i$ 号星球去.显然,飞船驶过一条航道是需要时间的,对于航道 $j$,任意飞船驶过它所花费的时间为 $t_j$,并且任意两艘飞…
Description 公元2044年,人类进入了宇宙纪元. 国有个星球,还有条双向航道,每条航道建立在两个星球之间,这条航道连通了国的所有星球. 小掌管一家物流公司,该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从号星球沿最快的宇航路径飞行到号星球去.显然,飞船驶过一条航道是需要时间的,对于航道,任意飞船驶过它所花费的时间为,并且任意两艘飞船之间不会产生任何干扰. 为了鼓励科技创新,国国王同意小的物流公司参与国的航道建设,即允许小把某一条航道改造成虫洞,飞船驶过虫洞不消耗时间.在…
http://www.lydsy.com/JudgeOnline/problem.php?id=4326 题目描述 公元2044年,人类进入了宇宙纪元. 国有个星球,还有条双向航道,每条航道建立在两个星球之间,这条航道连通了国的所有星球. 小掌管一家物流公司,该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从号星球沿最快的宇航路径飞行到号星球去.显然,飞船驶过一条航道是需要时间的,对于航道,任意飞船驶过它所花费的时间为,并且任意两艘飞船之间不会产生任何干扰. 为了鼓励科技创新,国国王…
题意:给定两棵树T1,T2,求d1[x] + d1[y] - d1[lca1(x, y)] - d2[lca2(x, y)]的最大值. 解:考虑把上面这个毒瘤东西化一下.发现它就是T1中x,y到根的路径并 - T2中x,y到根的路径交. 也就是T1中的一个三叉状路径和T2中lca到根的路径. 根据情报中心的套路,把这个东西 * 2,发现就是d1[x] + d1[y] + dis1(x, y) - d2[x] - d2[y] + dis2(x, y) 令val[i] = d1[i] - d2[i]…
最近做到了一些有趣的散题,于是开个Blog记录一下吧… (如果有人想做这些题的话还是不要看题解吧…) 2017-03-16 PE 202 Laserbeam 题意:有一个正三角形的镜子屋,光线从$C$点射入,求恰好反射$12017639147$次后在$C$点射出的方案数. 题解:关于反射问题容易想到对称性,不断对称翻转正三角形,可以密铺整个平面,这样一条反射$k$次的路径对应平面上经过$k$条边的路径. 然后取$CB,CA$为基,把平面画正,就能得到一个带有平行的对角线的网格图,稍微观察一下就能…
[NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. 考虑如何求每一个的最早时间,同上述拓扑排序,该元素不入队,当无点可拓展时就是最早时间. [NOI2010]超级钢琴 对每一个左端点维护当前取出了前几大的右端点,用堆+主席树维护. [NOI2011] [NOI2011]兔农 不难发现数列模意义下的进程是:斐波那切数列,首项回归0(减一操作),斐波那…
A. Rikka with Minimum Spanning Trees 题意: 给出一个图,求最小生成树的个数和权值 思路: 因为数据随机,只有一个MST #include <bits/stdc++.h> using namespace std; #define ull unsigned long long ull k1, k2; ; int t, n, m; ull f() { ull k3 = k1, k4 = k2; k1 = k4; k3 ^= k3 << ; k2 =…
HN2018省队集训 Day1 今天的题目来自于雅礼的高二学长\(dy0607\). 压缩包下载 密码: 27n7 流水账 震惊!穿着该校校服竟然在四大名校畅通无阻?霸主地位已定? \(7:10\)从校门口出发,坐公交几站就到了雅礼了,一种比我们学校高到了不知道哪里去的既视感. 在门口咕咕咕了半个小时,进了一个比较破旧的机房. 一股我们学校\(4\)机房既视感.然而4机房暑假也要装修了 只有\(Win7\),我忽然觉得今天可能会有点小麻烦了. 还是好好看题为妙. 先看\(T1\),一眼感觉像\(…
HNOI2018省队集训 Day 1 流水账 T1 tree 换根+求\(lca\)+求子树和,一脸bzoj3083遥远的国度的既视感.子树和讨论一下就好了,\(lca\)?也是大力讨论一波. 先写了个线段树标记永久化,一发过了小样例,然后大样例...没几组询问就\(WA\)了.写了个暴力,每次输出求出来的\(lca\)(我怎么这么机智啊),发现\(WA\)了,然后就对着自己的大力讨论大力魔改.大概是\(10:00\)的时候大样例终于过了,没写拍(因为不会写\(win\)下的拍qaq). T2…