题目: 这是一道很神奇的题目,做法非常巧妙。巧妙在题目要求n个数字,而且正好要求和为n的倍数。 思路:用sum[i]表示前i个数字的和%n。得到sum[ 1-N ]共N个数字。 N个数字对N取模,每个数字都在0-( N-1 )之间。 可能出现两种情况 1:有一个数字等于0。(都不相等) 2:至少有两 ...
分类:
其他好文 时间:
2017-08-23 10:15:22
阅读次数:
128
设第i个字母的权值为1<<i,则一个可重集合可以重排为回文串,当且仅当这个集合的异或和x满足x==x&-x,用莫队维护区间内有多少对异或前缀和,异或后满足x==x&-x,这样端点移动的代价为字符集大小+1=27,因此时间复杂度为$O(27n\sqrt{m})$ ...
分类:
其他好文 时间:
2017-08-23 10:15:11
阅读次数:
130
题目描述 方格纸与草稿纸一样,都是算法竞赛中不可或缺的重要工具。身经百战的小Q自然也会随身带着方格纸。小Q的方格纸有n行m列,一共n*m个方格,从上到下依次标记为第1,2,...,n行,从左到右依次标记为第1,2,...,m列,方便起见,小Q称第i行第j列的方格为(i,j)。小Q在方格纸中填满了数字 ...
分类:
其他好文 时间:
2017-08-22 20:56:21
阅读次数:
204
题目: 思路:把'0'当成数字-1,'1'当成数字1,求前缀和,用map更新当前前缀和最早出现的位置。(用map而不用数组是因为可能会出现负数) 当前缀和的值之前出现过,比如i = 10时,sum = 0;j = 50时,sum = 0; 更新ans = max(ans,j-i); 代码: ...
分类:
其他好文 时间:
2017-08-22 20:50:24
阅读次数:
118
题目大意:在数组中找出一些数,使它们的和能被n整除 这题标签是数学,那我就标题就写数论好了... 显然如果数组中有n的倍数直接取就行。 那假设数组中没有n的倍数,把数组中的数求前缀和后全部%n,会得到一堆1~n-1的数(注意没有0,因为数组中没有n的倍数),那根据抽屉原理一定有两个相同的数,设这两个 ...
分类:
其他好文 时间:
2017-08-22 00:40:44
阅读次数:
171
一原理: 部分转自:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDAB ...
分类:
编程语言 时间:
2017-08-21 15:43:27
阅读次数:
187
51nod 1682 中位数计数 思路: sum[i]表示到i为止的前缀和(比a[i]小的记为-1,相等的记为0,比a[i]大的记为1,然后求这些-1,0,1的前缀和); hash[sum[i]+N](由于sum[i]会小于0,所以要加N)记录在j<i的情况下sum[i]是否出现过,如果在j>=i的 ...
分类:
其他好文 时间:
2017-08-21 12:40:14
阅读次数:
139
题意:很多询问,求每个询问下,有多少个区间,异或=k。 分析:异或也有前缀和。[L,R] = pre[R] ^ pre[L-1]; 莫队算法:是莫涛队长发明的,一种改良版的暴力离线算法。 首先将问题重新排序,有生成树的,有简单版的分块,然后通过一个区间去递推另个一区间的值。 这里需要记录一下flag ...
分类:
其他好文 时间:
2017-08-21 09:54:34
阅读次数:
309
题目链接:http://www.spoj.com/problems/CRAN02/ 题目大意:N个数字组成的序列,和为0的连续子序列的个数。N<1e6 解题思路:计算前缀和,统计每个数字出现的次数,那么对于数字sum[i], 如果存在k个sum[i],则代表有C(k, 2)个序列和为0,而如果sum ...
分类:
其他好文 时间:
2017-08-19 23:43:26
阅读次数:
180
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6134 题意: 解法: 那么g(n)怎么求,我们尝试打表发现g(n)是有规律的,g(n)=g(n-1)+d(n-1)+1,其中d(i)表示i的因子个数,这个我们是可以通过线性筛O(n)处理出来的,之后再O ...
分类:
其他好文 时间:
2017-08-19 12:52:08
阅读次数:
131