07 2015 档案
摘要:做法是求逆拓扑序中字典序最大的将其反转则得到答案,粗略理解为对于每个数,把能把比大的能够放在他右边的都放在了右边,所以答案最优。留坑在此数据太水第一次du没清零都过了? 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include...
阅读全文
摘要:昨天讲课的时候突然想起来LIS还有一个东西没搞懂。又去研究了下。LIS问题就是要求一个序列中最长不下降或上升子序列,而此问题应用较广,例如很多题会有这样的条件对于i,j如果他们可以同时选取,则必有|a[i]-a[j]| = a[j]-b[j]…………①,a[i]+b[i] s[ans])s[++an...
阅读全文
摘要:为了彻底理解树状数组,试着用树状数组做了下普通平衡树而树状数组只能离线做,或者保证值的大小在数组可承受的范围内也是可以的,因为要求离线是因为必须事前对所有数离散化。然后我们看刘汝佳蓝书上的图利用如下代码,可以找到所有前缀和中第一个大于等于k的1 int kth(int k) {2 int a...
阅读全文
摘要:hzwer上少有的几道需要建一下模的 要不是有这么几道题 我都觉得lct只会考裸题了呢题解看hzwer吧http://hzwer.com/4358.html唯一蛋疼的就是为了处理0这个呵呵的位置,和严格小于,我把ntr数组全部+2,然后l+1,这样建树的时候就要写m+2了= =好蛋疼 1 #inc...
阅读全文
摘要:又是lct裸题(据说暴力能过?)写着略蛋疼 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int Maxn=200010; 10 11 int...
阅读全文
摘要:lct裸题QuQ 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int Maxn=30010; 10 11 int ch[Maxn][2],w...
阅读全文
摘要:Problem DescriptionWe have met so many problems on the tree, so today we will have a query problem on a set of trees.There are N nodes, each node will...
阅读全文
摘要:真是神题当时调了几天没调出来 后来没管了当时把fread去掉就TLE,加上就RE一直在底下跟网上的程序拍,尝试各种优化常数都没用拍出几组不一样的,发现我是对的,醉了,网上那个是怎么过的记一下这蛋疼的代码 1 #include 2 #include 3 #include 4 #include ...
阅读全文
摘要:显然链剖 然而只询问到根的信息,不用管lca,要好些很多(虽然我没那么写)对于安装 查询和维护到根路径对于卸载 查询和维护子树信息因为链剖本身是用dfs序建的线段树,所以使得查询和修改子树非常方便。 1 #include 2 #include 3 #include 4 #include 5...
阅读全文
摘要:何等水题某神犇仿关押罪犯的写法 却写挂了 然而实际上并不需要补集之类的 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int Maxn=100010;10 in...
阅读全文
摘要:看了下noi的水题 然后第一次自己YY出dfs序这个东西(当然以前听别人讲过没写过)然后做了一道dfs序的水题做法:统计出一个点的dfs序,成为pos[i]和以该节点为子树的所有点中pos[i]的最大值en[i]然后用树状数组单点修改区间询问处理可以把询问的过程想象为一次dfs,走到一条边ans++...
阅读全文
摘要:最近学了下点分治说道点分治就得先说到树的重心树的重心的定义是:最大的子树最小的节点。为什么要找树的重心呢因为找到树的重心把他变成根以后,最大的子树的大小不超过n/2,否则如果超过n/2将该子树的根作为重心将会更优。这样可以保证递归的层数不超过logn层,同时保证每个点最多被计算logn次。那么如何找...
阅读全文