摘要: P1903 [国家集训队]数颜色 / 维护队列 区间数颜色和单点修改。 可以树套树,但是不太会。 也可以考虑带修莫队,相当于就是多维护了一个时间轴。 排序方法变成先按块排序 \(l,r\) ,再按照 \(t\) 来排序即可。 单点修改里的 \(swap\) 很妙。 代码: #include<bits 阅读全文
posted @ 2021-04-21 20:54 __Anchor 阅读(58) 评论(0) 推荐(0) 编辑
摘要: SP3267 DQUERY - D-query 区间数颜色。 直接莫队就行了。 代码: #include<bits/stdc++.h> using namespace std; const int N=10000005,M=10000005; int read(){ int x=0,f=1;char 阅读全文
posted @ 2021-04-21 20:50 __Anchor 阅读(25) 评论(0) 推荐(0) 编辑
摘要: P1972 [SDOI2009]HH的项链 经典区间数颜色问题。 离线做法有树状数组和莫队,在线做法有主席树。 莫队做法十分暴力,直接维护每个数当前的 cnt 再在单点更新的时候更新答案即可。 树状数组做法: 对于每一个位置维护一个前缀位置 \(pre\),那么询问就相当于是询问区间多少个位置的 \ 阅读全文
posted @ 2021-04-21 20:49 __Anchor 阅读(47) 评论(0) 推荐(0) 编辑
摘要: P3901 数列找不同 询问一个区间的数是否互不相同。 直接莫队区间数颜色。 代码: #include<bits/stdc++.h> using namespace std; const int N=10000005,M=10000005; int read(){ int x=0,f=1;char 阅读全文
posted @ 2021-04-21 20:41 __Anchor 阅读(46) 评论(0) 推荐(0) 编辑
摘要: P5546 [POI2000]公共串 询问多个串的最长公共子串。 利用 SAM 的 ACAM 的性质,先把每个串拿来匹配,然后沿途打标记,每次更新完一个串再更新一下对于全局的答案。 最后求出每个节点匹配的最大长度即可。 代码: #include<bits/stdc++.h> using namesp 阅读全文
posted @ 2021-04-21 20:05 __Anchor 阅读(80) 评论(0) 推荐(0) 编辑
摘要: SC Oier,现在高二。 upd:已 AFO ,现在高三,正在 whk /hsh lg账号:[_Anchor](https://www.luogu.com.cn/user/130387) qq:3090199692,欢迎大家来加/kel 大概就用博客园写博客,因为自己搭博客搭了半天失败了。 需要密 阅读全文
posted @ 2021-04-21 19:55 __Anchor 阅读(193) 评论(2) 推荐(2) 编辑
摘要: CF940F Machine Learning 首先显然可以直接树套树做,在权值线段树上二分即可。 但是这里数据 1e5 并且可以离线,我们可以想到直接莫队/值域分块来做。 那么直接带修莫队暴力维护即可。 代码: #include<bits/stdc++.h> const int M=1e5+5; 阅读全文
posted @ 2021-04-21 19:48 __Anchor 阅读(37) 评论(0) 推荐(0) 编辑
摘要: CF1514D Cut and Stick 找一下规律会发现答案就是 \(1\) 或者 \(2x-(r-l+1)\) 。 然后问题转化成为求区间众数个数。 可以直接用 P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III 在线做或者用莫队离线做。 然 阅读全文
posted @ 2021-04-21 19:43 __Anchor 阅读(34) 评论(0) 推荐(0) 编辑
摘要: SP30906 ADAUNIQ - Ada and Unique Vegetable 带修莫队。 首先观察题面,然后数据范围一看带修莫队过不了,但这并不妨碍我们玄学起来。 于是这道题特征是“某一个值的出现次数”,再加上单点修改,显然可以使用带修莫队维护。 然后就没有了。 代码: #include<b 阅读全文
posted @ 2021-04-21 19:40 __Anchor 阅读(42) 评论(0) 推荐(0) 编辑
摘要: P5268 [SNOI2017]一个简单的询问 莫队+差分。 首先这里是两个区间,显然不好直接做,于是可以考虑差分,我们维护前缀区间,把柿子改写成四个答案组合起来。 这样改写出来的四个小答案都可以使用莫队来求,然后拼起来就行了。 代码: #include <bits/stdc++.h> using 阅读全文
posted @ 2021-04-21 19:37 __Anchor 阅读(51) 评论(0) 推荐(0) 编辑
摘要: P3604 美好的每一天 给定一个字符串,每次询问其一个子区间有多少个子区间重排后可以构成回文串。 我们思考“重排后构成回文串”的性质,即:所有字符的出现次数至多有一个奇数。 观察到“出现次数”以及可以离线以及数据范围,我们可以想到使用莫队来解决这个问题。 我们可以通过状压来表示每一个字符当前这个可 阅读全文
posted @ 2021-04-21 09:03 __Anchor 阅读(31) 评论(0) 推荐(0) 编辑
摘要: SP744 LPERMUT - Longest Permutation 找到一个最长的子段,满足其重排后是 \(1,2,3,4...k\) ,其中 \(k\) 是子段长度。 一道思维题。 首先我们考虑找到这样的段的性质:序列长度为 \(k\) 且互不相同。 然后我们可以推出一个结论:这个序列中一定只 阅读全文
posted @ 2021-04-21 08:27 __Anchor 阅读(45) 评论(0) 推荐(0) 编辑