首页 > 其他分享 >luogu省选计划day1

luogu省选计划day1

时间:2022-12-11 00:33:05浏览次数:32  
标签:二分 省选 luogu 复杂度 分治 异或 day1 枚举 cdq

T1

过水已隐藏

T2

整体二分经典题,主席树上二分也可以
在二分时要算一个国家的每一个出现位置,看起来是不行的但是均摊一下没有问题
使用线段树辅助计算答案

T3

过水已隐藏

T4

裸的cdq分治三维偏序,但我现在还不会怎么cdq套cdq……
再高维的话就是二维数点的BIT了
可以用bitset并起来乱搞,复杂度\(O(\frac{n^2}{w})\)
xpp:四维往上就跑不过暴力了

T5

神奇妙妙题
我们用ST表先预处理一下区间流量最大的东西向道路和南北向道路
在分治之前,先处理出边界的最长距离为0,分治一开始的区间是整个矩阵
我们每一次先选出区间内流量最大的东西向或南北向道路,这代表如果其走入了这条路,不会拐弯,则这条路上的点的最大值就是其到边界两条路中大的那一条,边界的值都已经算出

然后这条线会把当前的区间分为两份,继续递归
主定理可得分治的复杂度为\(O(H+W)\)
总复杂度为\(O((H+W)Q)\)
代码细节较多

T6

直接二进制拆分,用ST表预处理

T7

这里我们可以暴力枚举子串的起点
利用字符串匹配的性质,其肯定有单调性,我们进行二分,不断的枚举下一个不同的位置
具体的实现等在研究研究再补

T8

水省

T9

我们可以建一颗后缀树和前缀树,分别跑匹配的前后缀
然后可以利用dfn序的性质,将一个点在前缀树上的dfn序作为横坐标,后缀树为纵坐标
则此题转化为了一个二维数点的问题,将两个子树dfn序的范围取个交,这点分类讨论就可以
然后再将询问离线下来,做扫描线即可
复杂度单log

T10

异或有自反性,这里可以维护一个节点到根的异或和f[i]
则节点 i 到 j 的异或路径和为f[i]^f[j]
将所有的f[i]一起建一颗 01trie,对于每个值贪心选取就行
复杂度线性带 30 的常数

T11

可以将柿子转化为\(\sum_{i=1}^{18} [f(a_{i}\, xor\, a_j)=i]*i\)
进一步可以推出\(\sum_{i=1}^{18} [f(a_{i}\, xor\, a_j)\geq i]\)
这里没乘系数,每一个数值会在小于它时多算,所以没有错
这样就可以在 01trie 上小DP一波了,我们枚举 \(10^i\) ,如果基准数当前位置上是 1 就只能走 1,若是 0 ,就把 1 部分的串个数加上,走 0

T12

kmp配合DP
我们定义f[i][j]为 s 走到了 i, t 走到了 j 的次数
如果 \(s_i=t_i\) 则直接转移,如果到了末尾,就答案加一
如果没有匹配,则我们与处理出来一个类似 fail 压缩的写法,找到当前 t 最长的有匹配的 border 进行处理
如果是问号,就枚举起边成哪个字符,用上方方法进行转移

标签:二分,省选,luogu,复杂度,分治,异或,day1,枚举,cdq
From: https://www.cnblogs.com/Benzenesir/p/16972711.html

相关文章

  • 省选互测1
    A.Delov的npy们题目来源AGC031E本来想直接用洛谷题面,但是\(Delov\)整了活,于是我也整了整活题面#Delov的npy们>你有喜欢的女孩子嘛有温柔的女孩子在等......
  • javascript-代码随想录训练营day16
    104.二叉树的最大深度题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子......
  • day1:node安装+项目创建
    一、安装node1、http://nodejs.cn/download/中文网下载node工具,直接下一步式的安装。二、验证安装1、win+r 输入cmd,分别运行一下,node-v  npm-v ......
  • 代码随想录算法训练营Day17|110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之
    代码随想录算法训练营Day17|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和110.平衡二叉树110.平衡二叉树本题要比较左右子树的高度,首先明确高度和深度的......
  • javascript-代码随想录训练营day15
    226.翻转二叉树题目链接:https://leetcode.cn/problems/invert-binary-tree/题目描述:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。输入:root=[4,2,7,......
  • javascript-代码随想录训练营day14
    递归的三要素:递归函数的参数和返回值单层递归的逻辑终止条件144.二叉树的先序遍历题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/题目描......
  • CTT2022总结 DAY1
    感觉vscode不太舒服。时间规划8.30~8.50看了一遍题,T1T3是常规题,T2很怪异。先交了个T1的暴力20pts8.50~9.20先想了想T2的前两档,画了画图发现可以用最远点对算。求了......
  • Day1 JAVASE
    构造器:1.和类名相同2.没有返回值作用:1.new本质在调用构造方法2.初始化对象的值注意点:1.在创建类的时候就会有一个构造器去初始化对象的值,因此new才能创建一个实例......
  • 代码随想录算法训练营Day16| 104. 二叉树的最大深度、559.n叉树的最大深度、111. 二叉
    代码随想录算法训练营Day16|104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数104.二叉树的最大深度104.二叉树的最大......
  • 计算机组成原理(day1)
    1.二进制转换小数部分采用拼凑法(按下表)2.BCD码目的:方便机器语言与十进制快速转换2.18421码六个冗余表示十进制,运算结果落入1010(10)~1111(15)则无定义,需补0110(6)后储存。如果......