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\) 的最大值。离散化再加一个线段树可求
浙公网安备 33010602011771号