BZOJ3251 : 树上三角形
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[N],g[N],nxt[N],v[N],ed,b[N],t;
inline void read(int&a){char ch;while(!(((ch=getchar())>='0')&&(ch<='9')));a=ch-'0';while(((ch=getchar())>='0')&&(ch<='9'))(a*=10)+=ch-'0';}
inline void add(int x,int y){f[v[++ed]=y]=x;nxt[ed]=g[x];g[x]=ed;}
void dfs(int x){d[x]=d[f[x]]+1;for(int i=g[x];i;i=nxt[i])dfs(v[i]);}
inline bool ask(int x,int y){
for(t=0;x!=y;){
if(d[x]<d[y])swap(x,y);
b[++t]=a[x],x=f[x];
if(t>48)return 1;
}
for(b[++t]=a[x],sort(b+1,b+t+1),i=2;i<t;i++)if((long long)b[i-1]+b[i]>b[i+1])return 1;
return 0;
}
int main(){
read(n),read(q);
for(i=1;i<=n;i++)read(a[i]);
for(i=1;i<n;i++)read(x),read(y),add(x,y);
dfs(1);
while(q--){
read(op),read(x);
if(op)read(a[x]);else read(y),puts(ask(x,y)?"Y":"N");
}
return 0;
}
BZOJ3251 : 树上三角形的更多相关文章
- BZOJ3251:树上三角形(乱搞)
Description 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改. Input 第一行两个整数n ...
- bzoj3251: 树上三角形(思维题)
神tmWA了8发调了20min才发现输出没回车T T... 首先考虑一段什么样的序列才会是N... 显然最长的形式就是斐波那契,前两数之和等于第三数之和,这样就无法组成三角形并且序列最长.可以发现在i ...
- 【BZOJ3251】树上三角形 暴力
[BZOJ3251]树上三角形 Description 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改 ...
- 树上三角形 BZOJ3251
分析: 模拟赛T3,其实很水,当时出于某些原因,没有去写这道题... len>46必定有解 为了满足不是三角形,那么斐波那契数列是最优选择,而斐波那契数列的第46项超过了2^31-1,所以超过4 ...
- 【bzoj3251】树上三角形 朴素LCA+暴力
题目描述 给定一大小为n的有点权树,每次询问一对点(u,v),问是否能在u到v的简单路径上取三个点权,以这三个权值为边长构成一个三角形.同时还支持单点修改. 输入 第一行两个整数n.q表示树的点数和操 ...
- BZOJ 3251 树上三角形:LCA【构成三角形的结论】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3251 题意: 给你一棵树,n个节点,每个点的权值为w[i]. 接下来有m个形如(p,a,b ...
- BZOJ 3251 树上三角形
NOIP的东西回成都再说吧... 这题暴力. #include<iostream> #include<cstdio> #include<cstring> #incl ...
- bzoj3251
3251: 树上三角形 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 637 Solved: 262[Submit][Status][Discuss ...
- NOIP2014-10-30模拟赛
T1:逗比三角形 [题目描述] 小J是一名OI退役滚粗文化课选手,他十分喜欢做题,尤其是裸题.他现在有一个二维盒子和一些二维三角形,这个盒子拥有无限的高度和L的宽度.而且他的三角形也都是一些锐角三角形 ...
随机推荐
- vim中的查找和替换
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 查找: Gsearch -F 'aa' -R --include=*rb 替换: (1)在查找结果 ...
- MotionEvent常见值
常见的动作常量: public static final int ACTION_DOWN = 0;单点触摸动作 public static final int ACTION_UP ...
- Python 脚本之获取CPU信息
#!/usr/bin/env Python from __future__ import print_function from collections import OrderedDict impo ...
- ubuntu12.04 Daemon的简单实现
使用命令 start-stop-daemon 官方文档:http://manpages.ubuntu.com/manpages/lucid/en/man8/start-stop-daemon.8.ht ...
- xenomai安装
一.Linux内核打实时补丁 1.将下载的Linux和xenomai安装包放在/usr/src目录下,并解压文件包,命令如下 tar xjf Linux-3.8.13.tar.bz2 tar x ...
- jstl数字转日期
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <jsp: ...
- Objective-C 和 C++中指针的格式和.方法 和内存分配
最近在看cocos2d-x,于是打算复习一下C++,在这里简单对比下,留个念想. 先看看oc中指针的用法 @interface ViewController : UIViewController { ...
- MFC 相关文件夹、文件操作
//关于文件(夹)操作,可以参考下SHFileOperation这个外壳函数,貌似可以显示进度条.以下没有使用SHFileOperation//删除一个文件夹下的所有内容void myDeleteDi ...
- linux常见问题集锦-1
http://www.cnblogs.com/itech/archive/2011/02/12/1952857.html 感谢作者分享 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 . ...
- php 面向对象之继承、多态和静态方法
<?php //继承:子类可以继承父类的一切 //特点:单继承 //父类 class Ren { public $name; public $sex; public $yuyan; functi ...