bzoj 500题纪念
总结一发题目吧,挑几道题整理一下,(方便拖板子)
1039:每条线段与前一条线段之间的长度的比例和夹角不会因平移、旋转、放缩而改变,所以将每条轨迹改为比例和夹角的序列,复制一份翻转后的序列,直接上AC自动机即可。注意特判
1125:hash+splay
1183:digit-product只可能是2,3,5,7的积,枚举digit-product进行dp即可
1301:每个点和每个边只能被删除一次,随便搞
1313:上下界最大流
1471:考虑容斥,枚举两条路径相交的位置
1512:tarjan缩点+dp
1519:考虑最后一次耕的地是长,那么可以发现确定左右边界时上下边界是一定的,于是就可以\(O(n^2)\) dp了
1533:单调队列
1535:字符串相关——
1733:k短路
2090:记录到某位置的最长序列长度,用线段树优化
2093:倍增
2103:考虑枚举控制范围的分割线,两边都可以\(O(L)\)计算重心——向最大的孩子方向移动
2213:求任意两个字母前缀差的最小值、最大值
2288:选的肯定是整段的正数或者负数
2289:二分相交区域的横坐标,如果当前\(x=x0\)的直线与所有圆有交点,且交集非空,则输出yes,否则由于相交区域连续,通过圆的位置、斜率它确定在哪一侧
2398:这种题明显就是把两个子问题拧在了一起,splay+位运算LCP
2614:因为只有当碟子上的数与k的gcd不为一时,才对乘积有贡献,注意到k的约数个数很少,所以可以把相同gcd的碟子压在一起。似乎要离散化。
2969:分别计算每一个位置的期望,加起来即可
2704:裸插头dp
2794:考虑离线,枚举a,m,f[i]表示用b尽可能大的物品能否凑出i
2916:考虑求答案的补集
2928:考虑分治
2945:一道结论题
2949:尝试\(O(n^2)\)模拟,每次暴力尝试将某一只蚂蚁向上移动即可
2951:扫描线+线段树
2979:有下界最小流
2085:hash求重叠长度,然后上倍增floyd
3007:转化为最小边问题
3029:暴力上dp
3060:先加入大于k的点之间的边,然后再去加其他的边,贪心即可
3188:标记技巧
3283:快速幂,扩展bsgs,扩展lucas 三合一
3325:用类似mancacher的方法求出相同的字符,并查集维护
3337:块状链表模板题
3347:容斥,分别考虑每种高度的贡献,该贡献由:高度为该高度的行数、列数,高度大于该高度的行数、列数
3702:线段树合并
3834:考虑枚举答案,推一下式子就会发现可以分块了
3907:统计越过\(y=x\)的路径,将这些路径第一次越过该线的部分按\(y=x\)翻转
3429:后缀数组
4269:线性基
4305:枚举公约数,容斥出解
4407:什么时候再去推发式子
4491:线段树维护
4499:线性函数套线性函数还是线性函数
4578:枚举分界线
4589:裸异或FWT
4612:分成两段进行枚举:枚举l,枚举b
4621:最终一定是连续的,所以就可以dp了
4668:并查集奇技淫巧
4688:矩阵快速幂
4691:搜索+压位
4698:对查分序列建后缀自动机
这些都是AC人数不超过185的题
感觉随便挑一道题就是省选模拟呢~
接下来干什么呢~继续刷bzoj?刷codeforces?
不造&