裸点分,点分树每层维护有序表,查询二分,复杂度$O(nlog^3n)$。

#include<bits/stdc++.h>
#define M (u+v>>1)
#define pb push_back
#define FOR(i,v)\
for(int i=0;i!=v.size();++i)
using namespace std;
void eq2(int&x,int y){x=x<y?y:x;}
const int N=1e5+5;
typedef int arr[N];
arr r,z,p,d,c[18];
typedef vector<int>lis;
typedef lis arc[N];
arc e1,e2,e3,f1,f2;
#define j e1[u][i]
void dfs1(int u,int v){
r[u]=1;
FOR(i,e1[u])
if(j^v&&!z[j])
dfs1(j,u),r[u]+=r[j];
}
int dfs2(int u,int v,int k){
int s=k-r[u];
FOR(i,e1[u])
if(j^v&&!z[j]){
if(int l=dfs2(j,u,k))return l;
eq2(s,r[j]);
}
return s*2<=k?u:0;
}
int dfs3(int u){
dfs1(u,0),u=dfs2(u,0,r[u]);
z[u]=1;
FOR(i,e1[u])
if(!z[j])e3[u].pb(dfs3(j));
return u;
}
void dfs4(int u,int v,int*f){
FOR(i,e1[u])
if(j^v&&z[j])
f[j]=f[u]+e2[u][i],dfs4(j,u,f);
}
void dfs5(int u,int v,int*f,lis&s){
s.pb(f[u]);
FOR(i,e1[u])
if(j^v&&z[j])dfs5(j,u,f,s);
}
#undef j
#define j e3[u][i]
void pre(lis&s){sort(s.begin(),s.end());}
void dfs6(int u){
int*s=c[d[u]];
dfs4(u,0,s),dfs5(u,0,s,f1[u]),pre(f1[u]),z[u]=0;
FOR(i,e3[u])
dfs5(j,0,s,f2[j]),pre(f2[j]),d[j]=d[p[j]=u]+1,dfs6(j);
}
#undef j
int ask(lis&s,int v){return upper_bound(s.begin(),s.end(),v)-s.begin();}
int ask(int s,int t){
int i=s,j=d[s],k=ask(f1[s],t)-1;
for(;j--;i=p[i])
k+=ask(f1[p[i]],t-c[j][s])-ask(f2[i],t-c[j][s]);
return k;
}
int main(){
int n,k,u,v,w;
scanf("%*s%d%d",&n,&k);
for(int i=2;i<=n;++i){
scanf("%d%d%d",&u,&v,&w);
e1[u].pb(v),e1[v].pb(u);
e2[u].pb(w),e2[v].pb(w);
}
dfs6(dfs3(1));
for(int i=1;i<=n;++i){
u=0,v=1e9;
while(u^v)ask(i,M)<k?u=M+1:v=M;
printf("%d\n",v);
}
}

BZOJ2117: [2010国家集训队]Crash的旅游计划的更多相关文章

  1. BZOJ4317Atm的树&BZOJ2051A Problem For Fun&BZOJ2117[2010国家集训队]Crash的旅游计划——二分答案+动态点分治(点分树套线段树/点分树+vector)

    题目描述 Atm有一段时间在虐qtree的题目,于是,他满脑子都是tree,tree,tree…… 于是,一天晚上他梦到自己被关在了一个有根树中,每条路径都有边权,一个神秘的声音告诉他,每个点到其他的 ...

  2. 【BZOJ2117】 [2010国家集训队]Crash的旅游计划

    [BZOJ2117] [2010国家集训队]Crash的旅游计划 Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Cra ...

  3. [2010国家集训队]Crash的旅游计划

    Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Crash和陶陶所要去的城市里有N (N > 1) 个景点,Cra ...

  4. BZOJ 2117: [2010国家集训队]Crash的旅游计划 动态点分治+二分

    感觉现在写点分治可快了~ 二分答案,就可以将求第 $k$ 大转换成一个判断问题,直接拿点分树判断一下就行了. #include <cstdio> #include <vector&g ...

  5. [BZOJ2051]A Problem For Fun/[BZOJ2117]Crash的旅游计划/[BZOJ4317]Atm的树

    [BZOJ2051]A Problem For Fun/[BZOJ2117]Crash的旅游计划/[BZOJ4317]Atm的树 题目大意: 给出一个\(n(n\le10^5)\)个结点的树,每条边有 ...

  6. [国家集训队] Crash 的文明世界(第二类斯特林数)

    题目 [国家集训队] Crash 的文明世界 前置 斯特林数\(\Longrightarrow\)斯特林数及反演总结 做法 \[\begin{aligned} ans_x&=\sum\limi ...

  7. 洛谷 P1829 [国家集训队]Crash的数字表格 / JZPTAB 解题报告

    [国家集训队]Crash的数字表格 / JZPTAB 题意 求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^mlcm(i,j)\),\(n,m\le 10^7\) 鉴于 ...

  8. [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)

    题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...

  9. 题解-[国家集训队]Crash的数字表格 / JZPTAB

    题解-[国家集训队]Crash的数字表格 / JZPTAB 前置知识: 莫比乌斯反演 </> [国家集训队]Crash的数字表格 / JZPTAB 单组测试数据,给定 \(n,m\) ,求 ...

随机推荐

  1. VBA 格式化字符串 - Format大全

    VBA 格式化字符串 VBA 的 Format 函数与工作表函数 TEXT 用法基本相同,但功能更加强大,许多格式只能用于VBA 的 Format 函数,而不能用于工作表函数 TEXT ,以下是本人归 ...

  2. SSIS 实例——将SQL获取的信息传递到Email中

    最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...

  3. 烂泥:python2.7和python3.5源码安装

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...

  4. Windows 10不能拨L2TP协议的VPN

    之前是Windows 10版本1607版本14393.102升级14393.187过后,突然出现不能拨公司防火墙的L2TPVPN了. 网上众说纷纭,原来遇到这个问题的人真不少,不过我是第一次遇到.结合 ...

  5. eclipse 启动到loading workbench... 自动关闭

    是由于项目没有正常关闭运行而导致"workbench.xmi"中的"persistedState"标签还保持在运行时的配置造成的. 解决方法: 找到<wo ...

  6. C# 多线程之Task资料

    博客 Stephen Toub From MicroSoft Crop. Stephen Cleary Parallelism in .NET   文章 It's All About the Sync ...

  7. 威佐夫博弈(Wythoff Game)

    有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后把石子全部取完者为胜者. ...

  8. ubuntu-Linux系统读取USB摄像头数据(gspca)

    将摄像头图像保存为jpg格式.摄像头需要是gspca免驱的.uvc若用uvc格式的需要在图像中插入Huffman表.否则无法正常显示. 程序代码: #include <stdio.h> # ...

  9. dubbox 的各种管理和监管

    dubbo官方自带了dubbo-admin及dubbo-simple/dubbo-monitor-simple二个子项目用于服务治理及服务监控. 一.dubbo-admin的部署 这个比较简单,编译打 ...

  10. [LeetCode] House Robber III 打家劫舍之三

    The thief has found himself a new place for his thievery again. There is only one entrance to this a ...