CodeForces - 1004E Sonya and Ice Cream
题面在这里!
挺智障的一个二分。。。我还写了好久QWQ,退役算啦
题解见注释。。。
/*先对每个点记录 向子树外的最长路 和 向子树内最长路,然后二分。二分的时候枚举链的LCA直接做就好啦。
*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
#define pb push_back
const int N=100005,B=2333333;inline int read(){int x=0; char ch=getchar();for(;!isdigit(ch);ch=getchar());for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';return x;
}int to[N*2],ne[N*2],val[N*2],num,mid,d[N];
int hd[N],n,m,f[N],dn[N],dw[N],k,ans;
bool flag;inline void add(int x,int y,int z){to[++num]=y,ne[num]=hd[x],hd[x]=num,val[num]=z;
}void fdfs(int x,int fa){for(int i=hd[x];i;i=ne[i]) if(to[i]!=fa)fdfs(to[i],x),dn[x]=max(dn[x],dn[to[i]]+val[i]);
}void sdfs(int x,int fa,int L){int D=d[x],qz[D+1],hz[D+1];dw[x]=qz[0]=hz[0]=L;for(int i=hd[x],j=0;i;i=ne[i]) if(to[i]!=fa){j++,qz[j]=hz[j]=dn[to[i]]+val[i];}for(int i=1;i<D;i++) qz[i]=max(qz[i],qz[i-1]);hz[D]=0;for(int i=D-1;i;i--) hz[i]=max(hz[i],hz[i+1]);for(int i=hd[x],j=0;i;i=ne[i]) if(to[i]!=fa){j++,sdfs(to[i],x,max(qz[j-1],hz[j+1])+val[i]);}
}void dfs(int x,int fa){int M=0,C=0;for(int i=hd[x];i;i=ne[i]) if(to[i]!=fa){dfs(to[i],x);if(dn[to[i]]+val[i]>mid){if(!M) M=f[to[i]];else if(!C) C=f[to[i]];else{ M=C=k; break;}}}f[x]=C?k:M+1;flag|=(dw[x]<=mid&&M+C<k);
}inline bool solve(){memset(f,0,sizeof(f)),flag=0;dfs(1,0); return flag;
}int main(){n=read(),k=read();for(int i=1,uu,vv,ww;i<n;i++){uu=read(),vv=read(),ww=read();add(uu,vv,ww),add(vv,uu,ww);d[uu]++,d[vv]++;}fdfs(1,0),d[1]++,sdfs(1,0,0);int L=0,R=1e9;while(L<=R){mid=L+R>>1;if(solve()) ans=mid,R=mid-1;else L=mid+1;}printf("%d\n",ans);return 0;
}
转载于:https://www.cnblogs.com/JYYHH/p/9280904.html
CodeForces - 1004E Sonya and Ice Cream相关推荐
- 【dfs+理解题意+构造】【待重做】codeforces E. Ice cream coloring
http://codeforces.com/contest/805/problem/E [题意] 染色数是很好确定,最少染色数是max(si)(最小为1,即使所有的si都为0,这样是单节点树形成的森林 ...
- CodeForces - 805E - Ice cream coloring dfs+贪心
题意:有一棵具有 n 个节点的树,每个节点代表一个集合,表示集合内两两元素的颜色不同,同时保证集合中拥有某个元素的所有的节点附带着边提取出来,能够形成一个连通图,即不可能出现有三个节点 v1,v2,v ...
- Gym 101194D Ice Cream Tower
被一道数位DP折磨得欲仙欲死之后,再做这道题真是如同吃了ice cream一样舒畅啊 #include<bits/stdc++.h> using namespace std; #defin ...
- Android P (2)---Android 9.0 “Pistachio Ice Cream”新功能和特性
据有关消息报道,下一版本安卓(9.0)的初步代号已经确定为"Pistachio Ice Cream"(开心果冰淇淋),并将带来极大的功能变化. 当然了按照Google的惯例,如此长 ...
- Codeforces 1080E - Sonya and Matrix Beauty - Manacher
Codeforces 1080E - Sonya and Matrix Beauty - Manacher 题解链接 https://lucien.ink 题目链接 https://codeforce ...
- Android 9.0 “Pistachio Ice Cream”新功能和特性
热文导读 | 点击标题阅读 一份年薪30万的Android面试宝典,附答案 吊炸天!74款APP完整源码! 一个 IT 青年北漂四年的感悟 来自:开源中国 内容整理自 快科技:http://news. ...
- Android 4.0(Ice Cream Sandwich, 简称ICS,冰激凌三明治)
Android 系统4.0 命名为 Ice Cream Sandwich(简称ICS,冰淇淋三明治),是谷歌发布新一代操作系统.Android4.0 拥有十大重点新特性.集成谷歌电视和Chrome O ...
- CodeForces - 1004B - Sonya and Exhibition(纯思维题)
题目链接: http://codeforces.com/problemset/problem/1004/B 题目: Sonya decided to organize an exhibition of ...
- Codeforces 1004F Sonya and Bitwise OR (线段树)
题目链接 https://codeforces.com/contest/1004/problem/F 题解 这种水题都不会做了怎么.. 考虑一个序列的前缀 \(\text{or}\) 值只会变化 \( ...
最新文章
- python爬取哔哩哔哩视频_荐爬取哔哩哔哩中的cosplay小视频
- AI换脸在电竞圈火了!大司马PDD大秀肌肉辣舞,网友:上头,流鼻血了
- 调度流程图_Flink 实现Locality 模式调度
- 项目开发中常用JS表单取值方法
- 深入理解 Ribbon-Hystrix-Feign 三者之间的关系(一)
- Android图片加载框架之(Glide和Picasso的区别,Glide的简单使用)
- 《重返人类演化现场》阅读笔记
- php中的空格键,使用PHP使用数组键中的空格解析Json响应
- windows下用C/C++访问MySQL数据库
- python中列表、元组、字符串都属于有序序列_列表、元组、字符串是Python的有序序列。...
- 美国参议院紧急通过关键基础设施网络安全法案
- 火狐 firefox proxy moz=proxy:// 407错误 解决办法
- nginx虚拟机无法访问解决
- 车牌识别用php算法,车牌识别算法实现及其代码实现之一:车牌区域检测
- i5插了电信卡显示无服务器,黑解iphone用5g电信卡为什么没有信号?
- 解决Ctrl+鼠标左键点击后怎么返回
- java mpp转图片,Java使用mpxj导入.mpp格式的Project文件(甘特图)
- matlab马赫带,学习实现马赫带效果
- 1.2 电流和电压的参考方向
- c++实验2:6-4 求余弦函数近似值