摘要: 嘛,比较恶心.... 关键在于一个贪心思想.... 对 没错 是贪心思想... 直接根据lca的深度排序 然后发现lca深度大的对深度小的影响... 然后就没有了 #include<bits/stdc++.h> #define MAXN 100015 using namespace std; //希 阅读全文
posted @ 2020-02-14 16:51 After_rain 阅读(119) 评论(0) 推荐(0)
摘要: 直接缩点,然后跑一次树的直径就好了....至于跑树的直径简易推导可得,原图的答案其实等价与两个最原点....因为(得到答案)就像水流一样,...一层一层的...然后就结束了 #include<bits/stdc++.h> #define MAXN 200005 using namespace std 阅读全文
posted @ 2020-02-14 14:38 After_rain 阅读(139) 评论(0) 推荐(0)
摘要: 大毒瘤实现题...... #include<bits/stdc++.h> using namespace std; long long n,m,k,all; vector< pair< int , string > >v1,v2; void cal(){ for(int i=0;i<v2.size( 阅读全文
posted @ 2020-02-14 13:19 After_rain 阅读(143) 评论(0) 推荐(0)
摘要: 比较好的题... 考虑一下正着来....十分复杂 不如考虑一下补集转换 有1 全部-全0 考虑怎么可以把全0最小 发现全0最小时,0都是很小...(出现大的化一次增加很多) 于是保险一点,全0区间要尽可能的平均 于是就有了...答案 #include<bits/stdc++.h> using nam 阅读全文
posted @ 2020-02-14 11:08 After_rain 阅读(121) 评论(0) 推荐(0)
摘要: 点分治裸题......好像也可以用树形dp做...... 待更 阅读全文
posted @ 2020-02-13 19:56 After_rain 阅读(79) 评论(0) 推荐(0)
摘要: 嘛,可以发现,,,,,如果要全部走回来 单独一个走一定比多个一起走更优 于是只用考虑一个单独走回来和多个一起走不回来的情况就好了 #include<bits/stdc++.h> #define MAXN 10005 using namespace std; int n,s,k,tot,f[MAXN] 阅读全文
posted @ 2020-02-13 18:38 After_rain 阅读(91) 评论(0) 推荐(0)
摘要: 树形dp经典题 考虑只维护一个最长路会使得所选路径重复 因此可以再维护一个次长路来消除路径重复... 然后这题就结束了 #include<bits/stdc++.h> #define MAXN 10005 using namespace std; int n,tot; int h[MAXN],f[M 阅读全文
posted @ 2020-02-12 19:38 After_rain 阅读(90) 评论(0) 推荐(0)
摘要: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #define MAXN 105 using namespace std; int n,k,tot; int a[MAXN],h[MAXN]; int 阅读全文
posted @ 2020-02-12 16:17 After_rain 阅读(99) 评论(0) 推荐(0)
摘要: 没有上司的舞会....初一就做过了..... #include<bits/stdc++.h> #define MAXN 6005 using namespace std; int n,tot,ans; int a[MAXN],h[MAXN],in[MAXN],f[MAXN][3]; struct n 阅读全文
posted @ 2020-02-12 16:07 After_rain 阅读(127) 评论(0) 推荐(0)
摘要: 题意让你求每个子树的重心 直接求肯定不行对吧......然后又是在树上 考虑树的重心的性质 1.任意一个子树小于当前树的二分之一 (换句话 一棵树的重心一定是自己或者是重儿子子树上) 2.当两个子树连接的时候新接成的树的重心一定在 两个子树重心的路径上 然后发现.....这个题 可以直接分治 跑 然 阅读全文
posted @ 2020-02-11 23:00 After_rain 阅读(187) 评论(0) 推荐(0)