摘要: Link 阅读全文
posted @ 2021-08-23 10:22 棉被sunlie 阅读(59) 评论(0) 推荐(0)
摘要: 题目链接 题链 题解 区间众数的个数 \(>\) 区间长度一半 称这个区间有主元素,主元素就是这个众数; 题意:求数组中有多少个区间有主元素; 考虑一个子问题:每一种数作为主元素的贡献; 例如给定数组 \(p = [3,2,1,3,3,2]\),并考虑 \(3\) 作为主元素的贡献; 我们可以将是数 阅读全文
posted @ 2021-08-05 00:55 棉被sunlie 阅读(112) 评论(0) 推荐(0)
摘要: 题链 这里用树状数组写法; 考虑求[1,x]的区间和 \(sum_x\),于是将原数组差分后,相当于求一个二阶前缀和; 设原数组为 \(a_i\), 差分后的数组为 \(b_i = a_i - a_{i-1}\); 于是 \(a_i = \sum_{j=1}^{i}{b_j}\); 那么[1,x]的 阅读全文
posted @ 2021-08-04 16:18 棉被sunlie 阅读(69) 评论(0) 推荐(0)
摘要: 题链 #include <bits/stdc++.h> using namespace std; #define LL long long #define ls rt<<1 #define rs rt<<1|1 #define eps 1e-9 #define mod 998244353 #defi 阅读全文
posted @ 2021-08-01 22:03 棉被sunlie 阅读(117) 评论(0) 推荐(0)
摘要: E Boring Segments 双指针加线段树; 线段树维护区间覆盖问题,具体来说每个节点维护区间被完整覆盖的最小次数; 先将线段按照权值从小到大排序,seg[i]指下标i所对应的线段; 对于双指针l,r来说,r向右移的同时将seg[r]对应的线段覆盖,直到覆盖掉整个区间[1,m],此时再右移l 阅读全文
posted @ 2021-08-01 12:41 棉被sunlie 阅读(41) 评论(0) 推荐(0)
摘要: #include <iostream> #include <cmath> #define M_PI acos(-1.0) using namespace std; /* get angle ACB, point C is the center point A(x1,y1) B(x2,y2) C(x3 阅读全文
posted @ 2021-08-01 10:47 棉被sunlie 阅读(346) 评论(0) 推荐(0)
摘要: 史上最易懂的后缀自动机讲解!独创理解思路还有例题讲解~ O(nlogn) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=100010; int wa[N],wb[N],wv[N],wss[ 阅读全文
posted @ 2021-07-30 15:28 棉被sunlie 阅读(32) 评论(0) 推荐(0)
摘要: 题链 通俗易懂 这份代码O2优化才能过 #include <bits/stdc++.h> using namespace std; #define eps 1e-6 #define MS 300009 #define LL long long // 洛谷 P3803 【模板】多项式乘法(FFT) / 阅读全文
posted @ 2021-07-28 16:46 棉被sunlie 阅读(29) 评论(0) 推荐(0)
摘要: 题链 套了题解区的板子 #include <bits/stdc++.h> using namespace std; #define LL long long #define MS 1000009 int n,m; int p1[MS], p2[MS]; double ac[MS<<1]; // 洛谷 阅读全文
posted @ 2021-07-28 14:10 棉被sunlie 阅读(68) 评论(0) 推荐(0)
摘要: 题链 对于一个区间有如下数字{5,6,7,8},他们的二进制表示分别为: 5:0101 6:0110 7:0111 8:1000 那么这区间数的总和可以这么计算: 1*(23) + 3*(22) + 2*(21) + 2*(20); 其中(2^i)次方前的系数就是第i位的1的个数之和 将他们异或上一 阅读全文
posted @ 2021-07-27 19:19 棉被sunlie 阅读(494) 评论(0) 推荐(0)