混进杭二训练——Day6

废话

the last day~

明天早上就回中山了。

正题

T1

【题目大意】

找出树上的一个点,使它到最远的点的距离尽可能小,输出它离最远的点的距离。

【样例输入】

3 2
1 2
2 3

【样例输出】

1

【数据规模】

1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105

【题解】

⌈ 树 的 直 径 2 ⌉ \lceil\frac {树的直径} 2\rceil 2

证明懒得写了。

T2

【题目大意】

给出n根木棒,第i根木棒的长度为 a i a_i ai,m次询问,每次询问 [ l , r ] [l,r] [l,r]区间内能组成的最大的三角形的周长是多少。若不能组合出三角形,输出-1。

【样例输入】

5 3
1 2 3 4 5
1 3
1 4
2 5

【样例输出】

-1
9
12

【数据规模】

1 ≤ n ≤ 1 0 5 1 \leq n \leq 10^5 1n105
1 ≤ m ≤ 1 0 6 1 \leq m \leq 10^6 1m106
1 ≤ a i ≤ 1 0 9 1 \leq a_i \leq 10^9 1ai109

【题解】

很容易发现一个性质,假如将 [ l , r ] [l,r] [l,r]区间内的木棒排序,组成周长最大的那个三角形的三根木棒的位置一定是连续的。

于是我就千辛万苦地造了个莫队+splay,可惜时间复杂度不够优秀—— O ( n × n × l o g ( n ) × 玄 学 常 数 ( 4 , 5 左 右 吧 ) ) O(n \times \sqrt n \times log(n) \times 玄学常数(4,5左右吧)) O(n×n ×log(n)×4,5)

正解还要用到一个性质:将序列排序后,取前49大的木棒一定可以组成三角形,因为木棒的极限情况是 1 , 1 , 2 , 3 , 5 , 8 , 13 , … 1,1,2,3,5,8,13,\dots 1,1,2,3,5,8,13,也就是斐波那契数列,而第49根木棒就远超 1 0 9 10^9 109了,所以肯定可以组成三角形,于是用主席树维护一下,然后每次暴力取出前49大的木棒用第一个性质暴力过一遍即可。

时间复杂度 O ( n l o g n + m l o g n + 49 m ) O(nlogn+mlogn+49m) O(nlogn+mlogn+49m)

T3

【题目大意】

给你一个长度为 n n n 01 01 01串和 m m m次询问,第 i i i次询问会给你 l i l_i li r i r_i ri,你需要输出以 l i l_i li r i r_i ri结尾的前缀中两两的最长公共后缀的最大值。

【样例输入】

4 2
0101
1 3
2 4

【样例输出】

1
2

【数据规模】

0 ≤ n , m ≤ 1 0 5 0 \leq n,m \leq 10^5 0n,m105

【题解】

题解用的算法我并不会,贴个题解在这就算了。
在这里插入图片描述


下午讲了模拟退火树上差分DLX,学过,不难。

六天过去,发现咕了好多博客,发现还有无穷无尽的算法要学。

我果然是个蒟蒻。

肝算法吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值