Codeforces Round 900 (Div. 3)

发布时间 2023-09-27 12:54:46作者: yl_neo

昨天晚上生病,没比(血亏)

A: 就是看k有没有在序列里

B: 随便放一个大的号码然后加 i,应该就可以过了

C: 就是我们最少要拿 k*(k+1)/2, 最多可以拿 k*(n+n-k+1)/2。 啊,你问我怎么证明在这两个值里就一定可以拿到(当然是猜的!!)

D: 让f[x]表示当前出了多少次。然后就没个k看l[i],r[i]和j有没有符合题目所说的。然后就算过了。

E: 啊怎么线段树在这里(手打了十分钟),简单二分(因为他是非严格递减的)就可以了。

F: 我自己做的好乱,就不解释了(jiangly大佬做的方法好帅 https://codeforces.com/contest/1878/submission/225309795)

G: 啊好题! 就是用last[i][x]来表示x上一个有bit i的节点是在哪儿。那么我们可以看的出就是最多有32个节点我们需要考虑。

那么就是找lca啊, 打表啊, 然后枚举那32个节点, 那个u和v的都要哦。程序好慢(1000ms左右)!!!!!