BESTCODER 68

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yutianhuan/article/details/51076244

这次比赛还没结束我就开始写解题报告了。心情不错,至少上次的目标达到了,A了两道,挺爽的,而且第二题是写完过了个样例一交就直接AC了,这种快感还是第一次体验。

第一题 geometry

在平面直角坐标系上有一个点PP, 他的坐标是(x, y) 有一条直线y = kx + b经过了PP, 且分别交x, yx,y正半轴于A, B 求|PA| * |PB|的最小值.
输入描述
第一行一个TT, 表示数据组数.
接下来TT行每行两个正整数x,yx,y, 表示PP的坐标.

T=500, 0 < X, Y \leq 10000T=500,0

第二题 tree


 Time Limit: 2000/1000 MS (Java/Others)

 Memory Limit: 65536/65536 K (Java/Others)
问题描述
有一个树(nn个点, n-1n−1条边的联通图),点标号从11~nn,树的边权是00或11.求离每个点最近的点个数(包括自己).
输入描述
第一行一个数字TT,表示TT组数据.
对于每组数据,第一行是一个nn,表示点个数,接下来n-1n−1,每行三个整数u,v,wu,v,w,表示一条边连接的两个点和边权.
T = 50,1 \leq n \leq 100000, 1 \leq u,v \leq n,0 \leq w \leq 1T=50,1≤n≤100000,1≤u,v≤n,0≤w≤1.
输出描述
对于每组数据,输出答案.
考虑到输出规模过大,设ans_ians​i​​表示第ii个点的答案.你只需输出ans_1 \ xor \ ans_2 \ xor \ ans_3.. \ xor \ ans_nans​1​​ xor ans​2​​ xor ans​3​​.. xor ans​n​​即可.
输入样例
1
3
1 2 0
2 3 1
输出样例
1
Hint
ans_1 = 2ans​1​​=2
ans_2 = 2ans​2​​=2
ans_3 = 1ans​3​​=1
2 \ xor \ 2 \ xor \ 1=12 xor 2 xor 1=1, 因此输出11.

此题就是一个裸的并查集,既然如此明显,就赶紧去AC他把。可以多思考一下优化,最后对于边的合并处理完后,再进行一次getfather这个效率显然会低一点,可以考虑在第一次merge的时候对于getfather中做处理,使得相同父亲点的ans值同时更新。然后最后只需要扫一遍就行了。

展开阅读全文

没有更多推荐了,返回首页