题目大意: 给你一棵树,要从编号为a[1]的节点走到编号为a[2]的节点再走到编号为a[3]的节点……一直走到编号为a[n]的节点。问每个节点最少访问多少次。 思路: 将其进行轻重链剖分,则从a[i]走到a[i+1]实际上就是在几段重链的节点上+1,于是就用线段树来维护一下即可。 代码: ...
分类:
其他好文 时间:
2016-08-03 19:54:41
阅读次数:
170
求n次lca后树上差分。 每次移动时在起始点和终点各打一个start标记,在LCA和LCA的父节点处各上打一个end标记,然后深搜,start标记一直上传,遇到end标记就停止,最后再处理一下就行 % PoPoQQQ大爷 #include<bits/stdc++.h> #define rep(i,l ...
分类:
其他好文 时间:
2016-04-03 11:45:11
阅读次数:
251
【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3629 【题意】 给定S,找出所有约数和为S的数。 【思路】 若n=p1^a1*p2^a2*...*pk^ak 则约数和f(n)为(p1^0+p1+p1^2+...+p1^a1)*(p2^ ...
分类:
其他好文 时间:
2016-03-30 19:45:44
阅读次数:
179
裸树链剖分...-------------------------------------------------------------------#includeusing namespace std;const int maxn = 300009;struct edge { int to; e...
分类:
其他好文 时间:
2015-08-10 17:31:04
阅读次数:
103
裸的树链剖分~但是我用欧拉序+lca+线段树代替了他~...
分类:
其他好文 时间:
2015-04-20 09:25:59
阅读次数:
194
题解:
我们发现把一个数分解质因数以后然后可以根据每种质因数的个数算出这个数的约数和。所以我们可以暴力拆解每个数,根号时间复杂度分解。
就是枚举每种质数它用了多少,然后这个数除一下再往下一层深搜。
代码:
#include
#include
#include
#include
#define N 50100
using namespace std;
int prime[N],cnt...
分类:
其他好文 时间:
2015-03-28 10:14:14
阅读次数:
160
裸题,树状数组区间修改+单点查询。当然要稍微讨论一下链的左右端点是否修改的情况咯。#include#include#includeusing namespace std;#define N 300001int en,v[Nsiz[son[U]]) son[U]=v[i]; ...
分类:
编程语言 时间:
2015-03-09 14:26:55
阅读次数:
142
题意:求期望红绿灯时间下,途径若干加油站,经过最多若干个红绿灯,起点与终点的最短路。
思路:每个有红绿灯的节点通过时间怎么算呢?事实上t=red*red/2/(red+green),然后把这个时间附加到节点的出边上。
随后我们建立分层图,第i层表示经过了i个红绿灯时,从源点到该点的最短路径长度。
如果没有油量限制,那么我们直接跑最短路就行了。
注意到加油站很少,于是我们枚举以每个加...
分类:
其他好文 时间:
2014-10-17 12:08:14
阅读次数:
226
题目大意:N个点M条无向边,每个点有可能有红绿灯,或者是加油站,或者单单是一个点。红绿灯太多会让人烦,太久不加油车子就会开不动,问最多通过K次红绿灯,从“start”点到“end”点的最少花费是多少。
思路:只能最多通过K次红绿灯,可以依据这个建分层图。f[ i ][ j ]为在已经通过i次红绿灯后,在j点时的最小花费。这只是总体的思路,具体是实现起来还是有其他一些小问题。
题目中有一...
分类:
其他好文 时间:
2014-09-11 17:23:12
阅读次数:
220