首页 > TAG信息列表 > IOI2011
LG P4149 [IOI2011]Race
Description 给一棵树,每条边有权。求一条简单路径,权值和等于 $k$,且边的数量最小。 Solution 点分治,统计答案时只统计经过该节点的所有链(包括以该节点为端点) 每次用桶维护之前的子树中每个路径权值和所对应的最少边数 时间复杂度$O(n \log n)$ #include<iostream> #include<cstriP4149 [IOI2011]Race
Link 题目描述 给一棵树,每条边有权。求一条简单路径,权值和等于 \(k\) ,且边的数量最小。 输入格式 第一行包含两个整数 \(n,k\),表示树的大小与要求找到的路径的边权和。 接下来 \(n−1\) 行,每行三个整数 \(u_i\), \(v_i\) ,\(w_i\),代表有一条连接 \(u_i\) 与 \(v_i\),边权为 \(w_i\)P4149 [IOI2011]Race 点分治
题意:给定一棵有边权的树 和一个k 问最少多少边(连续)的长度和为k 解法一(也是我一开始的写法)遍历所有的边 并且给每个边设置一个标记属于某课子树 然后用lowerbound和upperbound找到满足的边 遍历一遍统计答案 用了4s 解法二(只用2s) 边数太多的时候上面bzoj 2599 [IOI2011]Race 未调完_点分治
Code: // luogu-judger-enable-o2// luogu-judger-enable-o2#include <bits/stdc++.h>#define setIO(s) freopen(s".in","r",stdin) #define maxn 1000000#define inf 0x7f7f7fusing namespace std; int hd[maxn],to[maxn],nex[maxn],val[maxn],fIOI2011 Race 点分治
题意: 给一棵树,每条边有权。求一条简单路径,权值和等于K,且边的数量最小。 分析: 对于这道题,和计算长度恰好为k的路径数量差不多,只不过那个所谓的桶里不装数量,装达到这个长度的最小的边数。 (感觉把这个桶应用好,能解决点分治的不少题目) 当然呢,为了进一步节约时间,我们