521做题总结

好吧,到了521了,我还是一个人做题,没有女生陪我qwq

导线问题:就是求一个最长上升子序列的个数,没啥好说的。直接扔到vector里二分就行了

数羊 : 简单容斥原理即可,用值域线段树或者树状数组都能搞。

账本核算:比较裸的差分约束了。没啥说的,把所有操作转换成不等式然后泡SPFA就行。

分组:题意概述:有 \(n\) 个人,每个人有两个属性 \(age\)\(fame\) , 存在常数 \(K\) 使得如果第 \(i\) 个人能成为一个小组的组长,当且仅当他的 \(fame\) 是组内的最大值并且所有组员和他的 \(age\) 之差的绝对值不大于 \(K\)\(q\) 次询问,每次给定两个数 \(x,y\) ,询问如果第 \(x\) 个人和第 \(y\) 个人被要求在同一组的话,该组最多有多少人。 \(n,q\le 10^5, fame,age\le 10^9\)

先对每个人求出他作为组长时组内最多有多少人(离散化树状数组 or 线段树都可以)。问题转化成:每次给定的 \(x\)\(y\) , 求 \(fame\)\([max(x.fame,y.fame), inf]\) ,\(age\) 在两个人交集部分的 \(size\) 的最大值。离散化再加一个线段树可求

posted @ 2021-05-21 14:36  Van-Helsing  阅读(47)  评论(0)    收藏  举报