poj 1987 树的分治
思路:1741的A1送 1.
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
#define Maxn 40010
#define Maxm 80010
#define inf 0x7fffffff
using namespace std;
int head[Maxn],vi[Maxn],e,ans,num,k,n,m;
int mx[Maxn],mi,dis[Maxn],root,size[Maxn];
struct Edge{
int u,v,val,next;
}edge[Maxm];
void init()
{
memset(vi,,sizeof(vi));
memset(head,-,sizeof(head));
memset(mx,,sizeof(mx));
memset(dis,,sizeof(dis));
e=ans=;
}
void add(int u,int v,int val)
{
edge[e].u=u,edge[e].v=v,edge[e].val=val,edge[e].next=head[u],head[u]=e++;
edge[e].u=v,edge[e].v=u,edge[e].val=val,edge[e].next=head[v],head[v]=e++;
}
void dfssize(int u,int fa)
{
int i,v;
size[u]=;
mx[u]=;
for(i=head[u];i!=-;i=edge[i].next)
{
v=edge[i].v;
if(v!=fa&&!vi[v])
{
dfssize(v,u);
size[u]+=size[v];
if(size[v]>mx[u]) mx[u]=size[v];
}
}
}
void dfsroot(int r,int u,int fa)
{
int v,i;
if(size[r]-size[u]>mx[u]) mx[u]=size[r]-size[u];
if(mx[u]<mi) mi=mx[u],root=u;
for(i=head[u];i!=-;i=edge[i].next)
{
v=edge[i].v;
if(v!=fa&&!vi[v])
{
dfsroot(r,v,u);
}
}
}
void dfsdis(int u,int d,int fa)
{
int i,v;
dis[++num]=d;
for(i=head[u];i!=-;i=edge[i].next)
{
v=edge[i].v;
if(v!=fa&&!vi[v])
{
dfsdis(v,d+edge[i].val,u);
}
}
}
int calc(int u,int d)
{
int i,j,ret=;
num=;
dfsdis(u,d,);
sort(dis+,dis++num);
i=;j=num;
while(i<j)//单调求点对
{
while(dis[i]+dis[j]>k&&i<j)
j--;
ret+=j-i;
i++;
}
return ret;
}
void dfs(int u)
{
int i,v;
mi=n;
dfssize(u,);
dfsroot(u,u,);
ans+=calc(root,);
vi[root]=;
for(i=head[root];i!=-;i=edge[i].next)
{
v=edge[i].v;
if(!vi[v])
{
ans-=calc(v,edge[i].val);
dfs(v);
}
}
}
int main()
{
int i,j,u,v,val;
char cc;
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
for(i=;i<=m;i++)
{
scanf("%d%d%d %c",&u,&v,&val,&cc);
add(u,v,val);
}
scanf("%d",&k);
dfs();
printf("%d\n",ans);
}
return ;
}
poj 1987 树的分治的更多相关文章
- poj 1741 树的分治
思路:这题我是看 漆子超<分治算法在树的路径问题中的应用>写的. 附代码: #include<iostream> #include<cstring> #includ ...
- poj 2114 树的分治 可作模板
/* 啊啊啊啊啊啊啊本题证明一个问题,在实际应用中sort比qsort块 还有memset这类初始化能不加尽量别加,很浪费时间 原来的程序把qsort该成sort,去掉一个无用memset就a了时间不 ...
- POJ 1987 Distance Statistics(树的点分治)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 上场CF的C题是一个树的分治... 今天刚好又 ...
- poj 1741 树的点分治(入门)
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 18205 Accepted: 5951 Description ...
- POJ 1741 Tree 树的分治
原题链接:http://poj.org/problem?id=1741 题意: 给你棵树,询问有多少点对,使得这条路径上的权值和小于K 题解: 就..大约就是树的分治 代码: #include< ...
- [poj1741][tree] (树/点分治)
Description Give a tree with n vertices,each edge has a length(positive integer less than 1001). Def ...
- hdu 5469 Antonidas(树的分治+字符串hashOR搜索+剪枝)
题目链接:hdu 5469 Antonidas 题意: 给你一颗树,每个节点有一个字符,现在给你一个字符串S,问你是否能在树上找到两个节点u,v,使得u到v的最短路径构成的字符串恰好为S. 题解: 这 ...
- 洛谷P3248 树 [HNOI2016] 主席树+倍增+分治
正解:主席树+倍增+分治 解题报告: 传送门! 首先看到这题会想到之前考过的这题 但是那题其实简单一些,,,因为那题只要用个分治+预处理就好,只是有点儿思维难度而已 这题就不一样,因为它说了是按照原树 ...
- 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...
随机推荐
- 高版本myeclipse破解以及优化
1.破解图 破解myeclipse但是在默认安装目录没有发现common文件夹,该怎么办? 打开myeclipse: Myclipse-->Installation Summary..., ...
- JDBC学习笔记(7)——事务的隔离级别&批量处理
数据库事务的隔离级别 对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:脏读: 对于两个事务 T1, T2, T1 读取了已经被 T2 ...
- eclipse 安装scons
http://www.sconsolidator.com/update Installation To use SConsolidator, you first have to install SC ...
- Oracle-11g 数据库启动时,报错"ORA-01092"及"ORA-18008: cannot find OUTLN schema"
适用情形: Oracle-11g 数据库启动时,出现类似如下错误. ORA-01092: ORACLE instance terminated. Disconnection forced ORA-18 ...
- linux下为php添加mongodb扩展
基于本博客yum安装的lamp环境,phpize 位于 /usr/bin,php-config 位于/usr/bin,php.ini 位于/etc/ 1.首先从http://pecl.php.net/ ...
- Select模型原理
Select模型原理 利用select函数,推断套接字上是否存在数据,或者是否能向一个套接字写入数据.目的是防止应用程序在套接字处于锁定模式时,调用recv(或send)从没有数据的套接字上接收数据, ...
- POJ 3074 Sudoku (Dancing Links)
传送门:http://poj.org/problem?id=3074 DLX 数独的9*9的模板题. 具体建模详见下面这篇论文.其中9*9的数独怎么转化到精确覆盖问题,以及相关矩阵行列的定义都在下文中 ...
- 分享一个jQuery动态网格布局插件:Masonry(转)
在线演示 Masonry是 一款非常强大的jQuery动态网格布局插件,可以帮助开发人员快速开发类似剪贴画的界面效果.和CSS中float的效果不太一样的地方在 于,float先水平排列,然后再垂直排 ...
- 文献阅读笔记——group sparsity and geometry constrained dictionary
周五实验室有同学报告了ICCV2013的一篇论文group sparsity and geometry constrained dictionary learning for action recog ...
- focuskye 学习及下载
学习:http://www.focusky.com.cn/tutorials/ 下载:http://www.focusky.com.cn/download/