通道题意:给出1字母树,询问一字符串是否出现在该树中思路:直接搜索剪枝,有人点分治?写了几发都T了。。有人会了教我?代码:#include #include #include using namespace std;struct Edge { int v, nxt; Edge () { ...
分类:
其他好文 时间:
2015-09-26 22:36:32
阅读次数:
255
数据范围是N:20w, K100w. 点分治, 我们只需考虑经过当前树根的方案. K最大只有100w, 直接开个数组CNT[x]表示与当前树根距离为x的最少边数, 然后就可以对根的子树依次dfs并更新CNT数组和答案.-----------------------------------------...
分类:
其他好文 时间:
2015-09-12 23:35:20
阅读次数:
217
树的点分治,主要思想是每次找子树的重心,计算经过根节点的情况数,再减去点对属于同一子树的情况。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include...
分类:
其他好文 时间:
2015-09-12 16:05:25
阅读次数:
192
题意:
给出一颗n个结点的有根树,边有长度;
每个点有可以购票前往长度相差不超过li的它的祖先,票的花费为pi*长度+qi;
当然的,可以的选择多次倒车到达;
求每个点到根的最小花费;
n
题解:
这题真的好贴心,数据特殊情况都给你让你特判了2333;
首先一条链的情况都会吧,设f[i]为i到根的最小花费,dis为到根的距离;
转移方程为:f[i]=f[j]+p[i]*(...
分类:
其他好文 时间:
2015-08-31 19:45:24
阅读次数:
192
树上路径的f(u,v)=路径上所有点的乘积。树上每个点的权值都是由给定的k个素数组合而成的,如果f(u,v)是立方数,那么就说明f(u,v)是可行的方案。问有多少种可行的方案。f(u,v)可是用状态压缩来表示,因为最多只有30个素数, 第i位表示第i个素数的幂,那么每一位的状态只有0,1,2因为3和...
分类:
其他好文 时间:
2015-08-30 12:48:28
阅读次数:
205
和poj1747相比起来,只不过是限制条件多了一维。而多了这一维,所以需要用树状数组来维护,从而快速得到答案。因为没注意传进树状数组函数的参数可能是 4 #include 5 #include 6 #include 7 #include 8 #include 9 #includ...
分类:
编程语言 时间:
2015-08-29 21:34:01
阅读次数:
184
题意:
给出一颗n个结点的树,点上有权值;
求点对(x,y)满足x!=y且x到y的路径上最大值与最小值的差
n
题解:
来填一填当年挖下的坑;
这个数据范围真是恶意。。直接说五组数据不好吗!
考虑这题怎么做,在这场考试那天的前一天,我学习了树分治算法;
然后他就出了,然后我就写了,然后我就写不出来了;
当年的我实在naive;
我翻出了当时交上去的代码,改了好久好久。。...
分类:
移动开发 时间:
2015-08-28 17:35:07
阅读次数:
295
给定一棵树,边上有权值,要统计有多少对点路径的权值和 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #in...
分类:
其他好文 时间:
2015-08-28 15:08:29
阅读次数:
804
题目大意:树上找到有多少条路径的边权值和>=k这里在树上进行点分治,需要找到重心保证自己的不会出现过于长的链来降低复杂度 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 #...
分类:
其他好文 时间:
2015-08-27 18:17:17
阅读次数:
151
树上的点分治。首先为了避免超时预处理逆元,对于x( 2 #include 3 #include 4 #pragma comment(linker,"/STACK:102400000,102400000") 5 6 using namespace std; 7 typedef __i...
分类:
其他好文 时间:
2015-08-21 00:00:47
阅读次数:
473