算法进阶
文章平均质量分 86
更高阶的算法
Happig丶
我的孤独,虽败犹荣
展开
-
牛客月赛31 C - 图像存储 && AcWing156. 矩阵(二维哈希)
AcWing156.矩阵 传送门 题目大意 给出一个n∗mn*mn∗m的矩阵,然后给出QQQ个A∗BA*BA∗B的矩阵,问该矩阵是否在n∗mn*mn∗m的矩阵中出现过。 解题思路 如果暴力的做法,我们需要考虑n∗mn*mn∗m矩阵中每个A∗BA*BA∗B的矩阵,如果暴力比较显然会TLETLETLE到飞起,这个时候需要用二维哈希: 在如下图的二维字符串矩阵,对他二维哈希实际上就是按照行从小到大,列从小到大的顺序转化成一维字符串"abcdefghiabcdefghiabcdefghi",然后对这个一维字符串哈原创 2021-01-11 21:28:02 · 197 阅读 · 0 评论 -
CF 617 - E. XOR and Favorite Number(异或性质+莫队)
传送门 题目给出若干查询,需要询问一个区间内有多少对i,ji,ji,j满足ai⊕ai+1...⊕aj=ka_i \oplus a_{i+1}...\oplus a_j=kai⊕ai+1...⊕aj=k,因为是区间异或,考虑前缀异或的性质,完全可以根据前缀异或pre[r]⊕pre[l−1]pre[r] \oplus pre[l-1]pre[r]⊕pre[l−1]求出区间[l,r][l,r][l,r]的异或值 然后问题就变成了在一个区间内,有多少对(l,r) .st. &原创 2020-08-25 11:48:38 · 124 阅读 · 0 评论 -
HDU4699 Editor(双栈对弹)
题目链接 1.题目大意:文本编译光标。有如下操作:(1)每次在光标后插入一个元素,光标随即移动到序列尾部(2)在光标前面有元素的情况下删除光标的前一个元素(三)如果光标不在序列头部就将光标左移(四)如果光标不在序列尾部就将光标右移(五)查询当前光标前的最大前缀和 2.第一眼想到,用数组维护所有元素的前缀和和最大前缀和,使用双向链表维护光标。但是头疼的是光标并不指向元素,而是在元素中间,类似电脑鼠...原创 2020-03-18 22:21:43 · 158 阅读 · 0 评论 -
洛谷 P1494 [国家集训队]小Z的袜子(经典莫队)
传送门 听说本题是莫队(提莫队长!?)创始人曾经出过的原版莫队题,在简单了解莫队后这题确实经典 题目大意 给出一个序列,然后有若干次查询,每次查询输出从一个区间[l,r][l,r][l,r]内选出相同的两个数的概率是多少? 分析 假设区间内不同的数的个数分别为al,al+1,al+2,...,ara_l,a_{l+1},a_{l+2},...,a_ral,al+1,al+2,...,ar,根据排列组合的思想,设区间长度为lenlenlen(实际上就是袜子的总数),答案很显然:∑i=lrCai2Cl原创 2020-08-24 18:59:39 · 144 阅读 · 0 评论 -
莫队算法
前言 莫队算法是对于区间(高级的有树上莫队等)离线维护的暴力优化算法,主要是采用双指针和分块的思想优化了暴力 问题引入 给出一个长度为nnn序列以及mmm次查询,每次查询区间[l,r][l,r][l,r]内数字种类的个数并输出 暴力做法显然是对于每次询问直接遍历这个区间统计种类数然后输出,时间复杂度妥妥的O(nm)O(nm)O(nm),一定TLETLETLE 莫队 暴力形式的转换 首先做一个事情,因为区间是不断输入的,那么我们维护两个指针代表区间。一开始指针维护的是空区间,在不断输入区间的过程中不断移动双指原创 2020-08-23 20:27:08 · 2593 阅读 · 0 评论 -
HDU - 6768 The Oculus(哈希)
传送门 看到斐波那契数列,以为是矩阵或者公式那种题,但是本题给出的位数太大,一时间没想到怎么写,赛后题解说是哈希才恍然大悟,看来还是自己对哈希不太熟练(还有一个重要原因是这个复杂度遍历竟然不超时,这是无论如何都想不到的) 正解: 令修改的那一位为kkk,则要找到这个kkk满足 A×B=C+F(k)A×B = C+F(k)A×B=C+F(k),因为斐波那契数列第几十项以后就爆long long long~~long~long long 了,那么原创 2020-07-26 20:12:44 · 223 阅读 · 0 评论