博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hiho11周树的直径
阅读量:5255 次
发布时间:2019-06-14

本文共 1934 字,大约阅读时间需要 6 分钟。

 

任意找一个点做根, 然后找到距离这个根最远的点,然后以这个点做根,再找距离这个根最远的点,两个距离和就是 树的直径。

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1const int maxn = 1000000 + 1000;int sum[maxn << 2];const int INF = 1<<30;int ncnt;int val[maxn];int pos[maxn];void up(int rt){ sum[rt] = min(sum[rt << 1], sum[rt << 1 | 1]);}void build(int l, int r, int rt){ sum[rt] = INF; if (l == r){ return; } int mid = (l + r) >> 1; build(lson); build(rson); up(rt);}void update(int key, int l, int r, int rt){ if (l == r){ sum[rt] = key; return; } int mid = (l + r) >> 1; if (key <= mid) update(key, lson); else update(key, rson); up(rt);}int ask(int L, int R, int l, int r, int rt){ if (L <= l&&r <= R) return sum[rt]; int ans = INF; int mid = (l + r) >> 1; if (L <= mid) ans = min(ans, ask(L, R, lson)); if (R > mid) ans = min(ans, ask(L, R, rson)); return ans;}void gao(int x){ int Min = INF; int ans=INF; for (int i = ncnt - 1; i >= 1; i--){ if (val[i] % x == 0) { printf("%d\n", i); return ; } if (val[i] % x < Min){ Min = val[i] % x; ans = i; } } printf("%d\n", ans);}void gao1(int x){ int l = 0; int r = x - 1; int ans = -1; while (l <= maxn){ if (r > maxn) r = maxn; int temp = ask(l, r, 0, maxn, 1); if(temp!=INF){ if (ans==-1||temp%x < ans%x) ans = temp; else if (temp%x == ans%x&&pos[temp]>pos[ans]) ans = temp; } l += x; r += x; } printf("%d\n", pos[ans]);}int main(){ char str[100]; int k; int cnt = 0; int T; while (scanf("%d",&T),T){ if(cnt) puts(""); ncnt = 1; build(0, maxn, 1); printf("Case %d:\n", ++cnt); while (T--){ scanf("%s%d", str, &k); if (str[0] == 'B'){ val[ncnt] = k; pos[k] = ncnt++; update(k, 0, maxn, 1); } else{ if(ncnt==1){ printf("-1\n"); } else if (k < 10000) gao(k); else gao1(k); } } } return 0;}

 

转载于:https://www.cnblogs.com/yigexigua/p/4072671.html

你可能感兴趣的文章
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
湖南多校对抗赛(2015.03.28) H SG Value
查看>>
REST Web 服务(二)----JAX-RS 介绍
查看>>
hdu1255扫描线计算覆盖两次面积
查看>>
hdu1565 用搜索代替枚举找可能状态或者轮廓线解(较优),参考poj2411
查看>>
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>