关闭
当前搜索:

[树的直径] Codeforces 804D Round #411 (Div. 1) D. Expected diameter of a tree

这个只要知道两个子树连在一起的直径端点必然是各自直径的端点就好了 然后瞎枚举一通 只要知道∑i∑jmin{sizei,sizej},∑isizei=n\sum_i\sum_j min\{size_i,size_j\} ,\sum_i size_i=n是O(nn√)O(n\sqrt n)的就好了#include #include #include<algorith...
阅读(167) 评论(0)

[树的直径 树形DP] UOJ #11【UTR #1】ydc的大树

题解链接大意是我们求出直径的中心 那么到最远点必然经过中心 把它提到根 就可以在枚举删的白点时很快统计出能够使多少个黑点不高兴#include #include #include using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf;...
阅读(242) 评论(0)

[树的直径] BZOJ 1999 [Noip2007]Core树网的核

做这个题 主要是复习几个性质 对于树中的任意一点,距离其最远的点一定是树的直径的某一端点 所有直径的中心相同,这个中心可以是一个顶点,也可以在一条边上。所有点到他的最远点都要通过这个中心 所有的直径所能求出的该最小偏心距相等 然后我们就直接找出一条直径 在上面two-pointers扫一下就好了 每次我们用 当前区间内不经过直径上的点抵达的其他点的最大深度和到两端的距离的最大值 更新下答案#inc...
阅读(264) 评论(0)

[环套树 bfs序] ICPC 2016 Shenyang J & HDU5957 Query on a graph

按层建线段树,或者说是bfs序。 然后修改的一定是不超过5层里面的连续的段,可以在线段树上直接修改。 对于环+树,把环抠出来之后按树的方法做。代码丑#include #include #include using namespace std; typedef long long ll;inline char nc(){ static c...
阅读(383) 评论(0)

[树形DP] HihoCoder #1471 Challenge 27 拥堵的城市

大概就是f[i][j]f[i][j]表示ii子树中还有jj条链伸出来 子树合并进来转移一下 转移的时候枚举kk对边要配对 也就是不伸出去了 比赛的时候复杂度分析错 搞得自己一开始否定了这个转移 最后几十秒钟查出错还把代码给交错了 真的是整场比赛智商无下限 感谢整场带我的rxd大爷#include #include #include...
阅读(270) 评论(0)

[容斥 状压DP 树形DP] BZOJ 4455 [Zjoi2016]小星星 & UOJ #185 【ZJOI2016】小星星

杜老师说的哦 UOJ上需要卡常 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p...
阅读(231) 评论(0)

[树形DP 费用流手动增广] Codeforces Gym 101190 NEERC 16 M. Mole Tunnels

因为这个图增广来增广去不会有负环 那么一条增广链必然是树上一条简单路径 那么考虑用树形DP找最短路增广 dls是这么说的 考虑费用流,每一次要找一条最短的增广路。 枚举LCA,然后维护一下每个子树往下走的最短路即可。 增广的时候加一下反向边。 可以直接树形dp,不需要数据结构维护。 #include #include #include using namespa...
阅读(425) 评论(0)

[边双连通分量 缩点 虚树 欧拉序列LCA] Codeforces 639F VK Cup 2016 - Round 1 F. Bear and Chemistry

这道题就是缩缩缩! 先把原图缩成一个双连通树 然后查询的时候把所有关键点缩成一颗虚树 加完询问里的边 在缩一次双连通 #include #include #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline ch...
阅读(225) 评论(0)

[树形DP] POJ 2152 Fire

论文:陈启峰--一张一弛,解题之道 详见论文 篇幅过长 不摘录了 放宽 “每个城市在不超过距离的前提下,可以选择任意一个消防站作为负责站” 制约“假设城市p1选取城市pm的上消防站作为负责站,令p1到pm的路径为p1p2p3……pm,那么对于任意pi都有的负责站为pm。” #include #include #include #include #define...
阅读(171) 评论(0)

[二分 贪心 || 树的划分] NOI2003 Day 2 Berry Test6~Test9

论文:鬲融--浅谈特殊穷举思想的应用 论文:贝小辉--浅析树的划分问题 并不会打树的划分算法 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline char nc(){ static char buf[100000...
阅读(108) 评论(0)

[并查集 || 点分治 树重心] 2015 计蒜之道 复赛 京东的物流路径

官方题解: 本题有多种解法。首先是点分治的思想,在点分治的时候,我们每一次选取一个中心,先统计过中心的路径最大值,然后删掉中心,递归处理其它子树。统计过中心的路径最大值,我们以中心为根深度搜索一遍,一个需要注意的地方是路径的两个端点不能在同一子树内,因为这样可能会重复统计。所以我们把路径按子树分类,然后点权排序以后更新路径按子树分类的最大值和次大值,之和与当前点权的乘积就是答案。 本题还可...
阅读(171) 评论(0)

[树形DP 双指针扫描] 2016 计蒜之道 初赛 第六场 微软的员工福利

n3的做法可以对每个点枚举最小值最大值 我们发现极差/1000最多只有101种取值 那我们枚举极差 枚举最大值 同时顺便维护在这个取值区间内的最优决策 较大提升的显示器不在区间内的话,就一定要把较小显示器选上;如果来自同一子树的两个显示器都在区间内,贪心选 dpdp 值较大的那个 可以用尺取法双指针扫过 复杂度(101n+nlogn) log的复杂度来自排序 #inc...
阅读(336) 评论(0)

[缩树 主席树] BZOJ 4539 [Hnoi2016]树

hnoi的大数据结构题 把每一个残基缩一下 变成一颗大树  每次新增 查询一下是在哪个残基上 这里要用主席树求子树第k大 然后记一下到fat的权值 然后就各种细节搞lca #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char b...
阅读(188) 评论(0)

[构造] Codeforces 717E Bubble Cup 9 - Finals E. Paint it really, really dark gray

这是一道递归构造的题 先构造完子树,然后可以通过走father来调整自己 因为1没有father 需要特判 走一个儿子来调整 #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2){ p2=(p...
阅读(263) 评论(0)

[分块 暴力 树] BZOJ 4381 [POI2015]Odwiedziny

大概就是步数小的预处理前缀和 步数大的直接倍增跳 各种细节搞得欲仙欲死 #include #include #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p...
阅读(210) 评论(0)

[欧拉序列 LCA 鬼畜暴枚] BZOJ 1906 树上的蚂蚁 && BZOJ 3700 发展城市

搬运题解:http://blog.sina.com.cn/s/blog_ab8386bc0101i146.html 首先求出这颗树的欧拉序列,方便做LCA。。 因为蚂蚁是10^3级别 完全可以枚举两只蚂蚁 那么剩下的问题就是 在很短的时间内判断两只蚂蚁是否会相遇 对于两只蚂蚁 设他们的路径是a→b c→d 我们先找到他们的路径中相同的部分 路径中相同的部分可能是一个点,也可能...
阅读(542) 评论(0)

[树形DP || 贪心] BZOJ 1907 树的路径覆盖

DP #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,10...
阅读(213) 评论(0)

[第二类斯特林数 树形DP] HDU 4625 JZPTREE && BZOJ 2159 Crash 的文明世界

%%%jiry_2 也可以这样:http://blog.csdn.net/dwylkz/article/details/9749827 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; inline char nc(){ s...
阅读(349) 评论(0)

[AC自动机 fail树 树链的并] BZOJ 3881 [Coci2015]Divljak

建出AC自动机和fail树 然后每一个串在自动机上跑一遍 然后就是对应的节点到fail树根的路径的并都加一 路径的并有一个很好地idea  可以用两种dfs序 入栈序和出栈序 入栈序小于等于子树的last 减去 出栈序小于自己的 就是到根的路径 #include #include #include //#define dprintf(...) fprintf(stderr,__V...
阅读(281) 评论(0)

[树形DP] IOI 2012 Ideal city

#include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p...
阅读(184) 评论(0)
34条 共2页1 2 下一页 尾页
    个人资料
    • 访问:309224次
    • 积分:12399
    • 等级:
    • 排名:第1311名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:54条
    最新评论