bzoj 2599(点分治)
2016-06-23 19:52
211 查看
2599: [IOI2011]Race
Time Limit: 70 Sec Memory Limit: 128 MBSubmit: 2586 Solved: 768
[Submit][Status][Discuss]
Description
给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000Input
第一行 两个整数 n, k第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始)
Output
一个整数 表示最小边数量 如果不存在这样的路径 输出-1Sample Input
4 30 1 1
1 2 2
1 3 4
Sample Output
2解题思路:数据范围是N:20w,
K100w. 点分治, 我们只需考虑经过当前树根的方案. K最大只有100w, 直接开个数组CNT[x]表示与当前树根距离为x的最少边数, 然后就可以对根的子树依次dfs并更新CNT数组和答案. 复杂度是O(NlogN)
相关文章推荐
- B.打击判定 几何水题
- 一次简单的面向对象抽象
- ACM/ICPC竞赛之STL简介
- MyEclipse中Source Folder,package,folder的区别
- servlet入门学习之API
- 关于: No Hibernate Session bound to thread, and configuration does not allow creation of non-transacti
- 必知必会sql SELECT语句
- c++io
- 简书牛人
- 模2运算
- [FrameBuffer驱动]利用Libjpeg库通过C语言向tiny4412开发板刷一幅jpg图片
- A. 小辉辉130 2.0 普通循环就可AC
- 初次接受C语言游戏程序感受
- ajax无刷新上传
- Find the Spy
- PAT(乙级)1007. 素数对猜想
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- escape(),encodeURI()和encodeURIComponent()区别
- android studio2.0无法关联源码
- Anti-Goldbach's Conjecture