BZOJ2599.

放板子。利用agc009-D 代码简洁了很多

  1. #include <bits/stdc++.h>
  2. #define N 200005
  3. using namespace std;
  4. int n,m,K,F[N][],H[N],x,y,z,h[N],f[],T,O,e[N],ans,d[N],g[N],t;
  5. vector <int> a[N],b[N];
  6. void QH(int x,int fa){
  7. int y,z=-;
  8. for (int i=;i<a[x].size();++i)
  9. if (a[x][i]!=fa){
  10. QH(y=a[x][i],x);
  11. for (int j=;j<;++j){
  12. if (F[y][j]&F[x][j]) z=max(z,j);
  13. F[x][j]|=F[y][j];
  14. }
  15. }
  16. for (++z;F[x][z];++z);
  17. F[x][z]=; H[x]=z;
  18. for (--z;~z;--z) F[x][z]=;
  19. }
  20. void dfs(int x,int y,int o){
  21. if (h[x]>K) return;
  22. d[++t]=h[x]; g[t]=o; e[++T]=x;
  23. ans=min(ans,f[K-h[x]]+o);
  24. for (int i=;i<a[x].size();++i)
  25. if (H[a[x][i]]<O&&a[x][i]!=y){
  26. h[a[x][i]]=h[x]+b[x][i];
  27. dfs(a[x][i],x,o+);
  28. }
  29. }
  30. void go(int x){
  31. O=H[x]; h[x]=T=;
  32. for (int i=;i<a[x].size();++i)
  33. if (H[a[x][i]]<O){
  34. h[a[x][i]]=h[x]+b[x][i];
  35. t=; dfs(a[x][i],x,);
  36. for (int j=;j<=t;++j) f[d[j]]=min(f[d[j]],g[j]);
  37. }
  38. for (int i=;i<=T;++i) f[h[e[i]]]=n+;
  39. }
  40. int main(){
  41. scanf("%d%d",&n,&K);
  42. for (int i=;i<n;++i){
  43. scanf("%d%d%d",&x,&y,&z);
  44. ++x; ++y;
  45. a[x].push_back(y);
  46. b[x].push_back(z);
  47. a[y].push_back(x);
  48. b[y].push_back(z);
  49. }
  50. QH(,); ans=n+;
  51. for (int i=;i<=K;++i) f[i]=n+;
  52. for (int i=;i<=n;++i) go(i);
  53. printf("%d\n",ans>n?-:ans);
  54. return ;
  55. }

云流

点分治 [IOI2011]Race的更多相关文章

  1. BZOJ 2599: [IOI2011]Race( 点分治 )

    数据范围是N:20w, K100w. 点分治, 我们只需考虑经过当前树根的方案. K最大只有100w, 直接开个数组CNT[x]表示与当前树根距离为x的最少边数, 然后就可以对根的子树依次dfs并更新 ...

  2. [IOI2011]Race 点分治

    [IOI2011]Race LG传送门 点分治板子题. 直接点分治统计,统计的时候开个桶维护下就好了. 注(tiao)意(le)细(hen)节(jiu). #include<cstdio> ...

  3. [bzoj2599][IOI2011]Race——点分治

    Brief Description 给定一棵带权树,你需要找到一个点对,他们之间的距离为k,且路径中间的边的个数最少. Algorithm Analyse 我们考虑点分治. 对于子树,我们递归处理,所 ...

  4. 模板—点分治B(合并子树)(洛谷P4149 [IOI2011]Race)

    洛谷P4149 [IOI2011]Race 点分治作用(目前只知道这个): 求一棵树上满足条件的节点二元组(u,v)个数,比较典型的是求dis(u,v)(dis表示距离)满足条件的(u,v)个数. 算 ...

  5. 【BZOJ2599】[IOI2011]Race 树的点分治

    [BZOJ2599][IOI2011]Race Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 100000 ...

  6. [IOI2011]Race

    2599: [IOI2011]Race Time Limit: 70 Sec  Memory Limit: 128 MBhttp://www.lydsy.com/JudgeOnline/problem ...

  7. bzoj 2599 [IOI2011]Race 点分

    [IOI2011]Race Time Limit: 70 Sec  Memory Limit: 128 MBSubmit: 4768  Solved: 1393[Submit][Status][Dis ...

  8. 2599: [IOI2011]Race

    2599: [IOI2011]Race 链接 分析 被memset卡... 点分治,对于重心,遍历子树,记录一个数组T[i],表示以重心为起点的长度为i的路径中最少的边数是多少.然后先遍历子树,更新答 ...

  9. bzoj2599: [IOI2011]Race(点分治)

    写了四五道点分治的题目了,算是比较理解点分治是什么东西了吧= = 点分治主要用来解决点对之间的问题的,比如距离为不大于K的点有多少对. 这道题要求距离等于K的点对中连接两点的最小边数. 那么其实道理是 ...

随机推荐

  1. 《从0到1》读书笔记第一章&quot;未来的挑战&quot;第2记:做老子还是做孙子

    从1到N VS 从0到1 - 别让自己的小鸡鸡抓在别人的手上 近几年国内互联网创业上非常流行一种C2C(也就是Copy to China - 复制到中国)的创业模式,打的就是一个时间差和地域差.将在国 ...

  2. hdu 5389 Zero Escape (dp)

    题目:http://acm.hdu.edu.cn/showproblem.php? pid=5389 题意:定义数根:①把每一位上的数字加起来得到一个新的数,②反复①直到得到的数仅仅有1位.给定n,A ...

  3. hdoj 4828 卡特兰数取模

    Grids Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Sub ...

  4. Android摄像头採集的视频数据流怎样通过Socket实时发送到目标服务端

    分两块: 1.取得摄像头採集的视频流 2.发送到server端 protected MediaRecorder mMediaRecorder; private LocalServerSocket mL ...

  5. 笔记04 WPF对象引用

    转自:http://www.fx114.net/qa-261-90254.aspx 我们应该都知道,XAML是一种声明式语言,XAML的标签声明的就是对象.一个XAML标签会对应着一个对象,这个对象一 ...

  6. 前端UI框架整理

    JQuery Jquery官网:http://jquery.com/ jQuery是一个快速,小巧,且功能丰富的JavaScript库. Jquery-1.11.3.min.js 压缩版:http:/ ...

  7. 6.6.1 F# 中函数调用的类型判断

    6.6.1 F# 中函数调用的类型判断 尽管,在 F# 中能够用尖括号指定类型參数值.与 C# 中的方式同样.但这样的方法非常少使用. 原因是,当编译器无法判断出全部的信息,须要程序猿的帮助时.我们仅 ...

  8. 文件I/O相关函数

    open()和openat()函数: #include <fcntl.h> // 成功返回文件描述符,出错返回-1 int open(const char *path, int oflag ...

  9. Html调用 QQ接口

    <A href="tencent://message/?uin=1805843351&Site=有事Q我&Menu=yes"> <img styl ...

  10. FFmpeg解码详细流程

    FFmpeg在解码一个视频的时候的函数调用流程.为了保证结构清晰,其中仅列出了最关键的函数,剔除了其它不是特别重要的函数. 下面解释一下图中关键标记的含义. 函数背景色 函数在图中以方框的形式表现出来 ...