LINK 题意:n个数进行m次前缀和异或和后的情况,其中$n,m(1\leq n\leq2\times10^5,1\leq m\leq10^9)$。 思路:看到m这么大,肯定要分解m的,又是异或和,二进制分解后,发现第i的位置上值为与i相距 [m分解后的各个值]位置上的异或,复杂度O(nlogm)。 ...
分类:
其他好文 时间:
2017-08-18 21:23:20
阅读次数:
107
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 枚举最大公约数,对于每一个质数p,只需要求出1<=x,y<=(n/p)范围内gcd(x,y)=1的对数,而这个对数就是类似欧拉函数的一个前缀和。 ...
分类:
其他好文 时间:
2017-08-17 22:09:38
阅读次数:
199
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6129 题意:求a序列后m次xor前缀和 解法: 手动对1位置对每个位置的贡献打表发现 第一次 贡献为 1 1 1 1 1 1 1 1 1 1 1 第二次 贡献为 1 0 1 0 1 0 1 0 1 0 ...
分类:
其他好文 时间:
2017-08-16 11:21:22
阅读次数:
113
我们可以考虑两种情况 区间之间不相重叠 和 重叠 f【i】【j】表示以当前最后一个区间以 i 结尾 并且选了 j 个区间 不相重叠的话 只要选 1-i-w 的max再加上 包含i在内的前四个数的和 相交的话 考虑因为可选的区间长度是固定的 所以我们可以考虑单调队列优化 sum维护的是前缀和 f【i】 ...
分类:
其他好文 时间:
2017-08-16 09:55:28
阅读次数:
197
题目链接:POJ 1195 题意: 给出一个S*S的矩阵(行、列号从1开始),每个元素初始值为0,有两种操作:一种是第X行第Y列元素值加A;另一种是查询给定范围矩阵的所有元素之和(L<=X<=R,B<=Y<=T)。 分析: 查询给定范围矩阵的所有元素之和是二维区间和,可以转换为二维前缀和求值。类比一 ...
分类:
编程语言 时间:
2017-08-15 00:32:37
阅读次数:
319
看样子2015的普及并不是很难 本人第四题做出来了,第三题居然不会做。。、、我果然弱(。??)ノ 后来看了一下题解恍然大悟、、 金币——简单模拟 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> usi ...
分类:
其他好文 时间:
2017-08-13 17:33:15
阅读次数:
168
传送门 f[i][j]表示前i个数,逆序对数为j的答案 则DP方程为: 但是会超时 所以搞个前缀和优化一下 ...
分类:
其他好文 时间:
2017-08-12 17:16:07
阅读次数:
114
虽然说这道题线段树很好做,但毕竟树状数组常数小又好写,所以还是写个模板吧。 区间加转为前缀加 区间和转为前缀和 我们讨论一个1~k的区间加x对于一个前缀和val【i】的影响 对于所有k<i的更新,对val[i]的贡献为val[i]+=k*x 对于所有k>=i的更新,对val[i]的贡献为val[i] ...
分类:
编程语言 时间:
2017-08-12 15:28:43
阅读次数:
203
T1 外星人 二维前缀和 #include<cstdio> #define N 1001 using namespace std; bool v[N][N]; int sum[N][N]; int main() { freopen("alien.in","r",stdin); freopen("al ...
分类:
其他好文 时间:
2017-08-12 10:33:08
阅读次数:
168
Day4整理的时候忘了这一块了。。我现在补上它。 并不难理解。 前缀和 其实可以把它理解为数学上的数列的前n项和(对于一个一维数组的前缀和)。 我们定义对于一个数组a的前缀和数组s,s[i] = a[1]+a[2]+...+a[i]. 二维前缀和 与一维前缀和类似,设s[i][j]表示所有a[i'] ...
分类:
其他好文 时间:
2017-08-11 22:02:50
阅读次数:
149