BZOJ 3251 树上三角形】的更多相关文章

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3251 题意: 给你一棵树,n个节点,每个点的权值为w[i]. 接下来有m个形如(p,a,b)的操作: (1)p == 0: 问你在从a到b的路径上,有没有三个点满足:它们的权值大小可以构成三角形. 如果有,输出'Y',否则输出'N'. (2)p == 1: 将点a的权值w[a]改为b. 题解: 首先考虑一个结论: 因为构成三角形的充要条件是:对于三个数a < b < c,满足a + b…
NOIP的东西回成都再说吧... 这题暴力. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxv 100500 #define maxe 200500 using namespace std; ],dis[maxv],g[maxv],nume=; ; struct edge { int v,nxt; }e[maxe]; void adde…
BZOJ 2458 最小三角形 题面 一个平面上有很多点,求他们中的点组成的周长最小的三角形的周长. 题解 跟平面最近点对差不多,也是先把区间内的点按x坐标从中间分开,递归处理,然后再处理横跨中线的三角形. 如何缩小范围?设左右两个子区间发现的最小周长是d,则与中线距离超过d / 2都没有用了,对于一个点,所有与它距离超过d / 2的点也都没有用. #include <cstdio> #include <cstring> #include <cmath> #includ…
[BZOJ3251]树上三角形 Description 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改. Input 第一行两个整数n.q表示树的点数和操作数 第二行n个整数表示n个点的点权 以下n-1行,每行2个整数a.b,表示a是b的父亲(以1为根的情况下) 以下q行,每行3个整数t.a.b 若t=0,则询问(a,b) 若t=1,则将点a的点权修改为b Output 对每个询问输出一行表示答案,…
BZOJ \(Description\) 给定一棵\(n\)个点的带权树,求树上\(\frac{n\times(n-1)}{2}\)条路径中,长度最大的\(m\)条路径的长度. \(n\leq50000,\ m\leq\min(3\times10^5,\frac{n\times(n-1)}{2})\). \(Solution\) 利用 点分治可以处理出树上所有路径 的性质,在每次点分治处理子树时,我们把当前根\(root\)和访问到的点\(x\)依次存到同一个数组里,把存下来的\(dis(x,r…
给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Input 输入一行,包含两个空格分隔的正整数m和n. Output 输出一个正整数,为所求三角形数量. Sample Input 2 2 Sample Output 76 Hint 数据范围 1<=m,n<=1000 不难得到一个思路.最终的答案 = 任选3点的方案数 - 三点共线的方案数. 前者很好求直接组合数就好了.后者可以枚举线段两端点,然后计算第三个点在这个线…
http://www.lydsy.com/JudgeOnline/problem.php?id=3251 这道题在北京八十中的时候有人讲过.. 不过由于自己continue 写掉了一个所以调了很久. 做法是如果整个序列没有合法三角形的话,那么整个链长不超过50个(最大的情况是斐波那契数列) 所以大于50个一定成立, 小于50个排序扫一遍就好了 #include <iostream> #include <cstdio> #include <cstring> #includ…
Description 问一棵树上前 \(k\) 大路径的边权. Sol 边分治. 非常感谢数据没有菊花图. 为了写写边分治试试然后就开了这道题. 边分治非常好想,选一条重边,分成两部分,然后分别求最大值,对每个重边建一个堆维护一下,全局堆里存答案. rebuild好像写的有问题啊qwq...疯狂RE不止...最后不管了,直接不重建树也能A... rebuild我就是想的将他建成二叉树的样子,每个点的度数不超过3或4差不多就可以了. Code /*************************…
BZOJ AC1000题纪念~~~ 将x到y路径上的点权从小到大排序 如果不存在b[i]使得b[i]+b[i+1]>b[i+2]则无解 此时b数列增长速度快于斐波那契数列,当达到50项时就会超过int的范围 所以暴力查询,如果路径长度达到50就肯定有解,否则暴力排序检验 #include<cstdio> #include<algorithm> #define N 100010 using namespace std; int n,q,i,x,y,op,a[N],d[N],f[…
1845: [Cqoi2005] 三角形面积并 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 848  Solved: 206[Submit][Status][Discuss] Description 给出n个三角形,求它们并的面积. Input 第一行为n(N < = 100), 即三角形的个数 以下n行,每行6个整数x1, y1, x2, y2, x3, y3,代表三角形的顶点坐标.坐标均为不超过10 ^ 6的实数,输入数据保留1位小数 Outp…