contest 0816 quad [倍增][找规律]

contest 0816 quad [倍增][找规律]

难得一遇的好题!

满足什么条件的四条边才能构成四边形?最大的一条边权小于另三条边边权之和。

30pts

暴力可过

直接暴力找出两个点之间的路径,把点权排序,看相邻的四个点的点权能否构成四边形

时间复杂度 O(qn) O ( q ∗ n )

50pts

这单独的20分设置很蹊跷,点权不大于3是什么操作?

我们会发现只有1 1 1 3这样的边权才不能构成一个四边形,于是就可以高效率地得到这20分。因为只要最大的一条边的边权小于等于另三条边之和,就一定够不成四边形。

100pts

回到50pts的解法,我们考虑构造一个尽可能长的、连续四个数恰好不能构成四边形的数列。根据贪心原则,第四个数应该恰好等于前三个数之和。于是我们得到了这样一个数列:1 1 1 3 5 9 17 … 再加上边权最大不超过 1e9 1 e 9 ,打表可得,数列的长度为36。也就是说,只要一条路径的长度(路径上边的数量)超过了36,那么这条路径的点权一定能够构成四边形;如果路径长度没有超过36,直接按照30pts的方法暴力判断。

时间复杂度 O(q36) O ( q ∗ 36 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值