维护前缀和sum[i]=a[0]-a[1]+a[2]-a[3]+…+(-1)^i*a[i]枚举结尾i,然后在hash表中查询是否存在sum[i]-K的值。如果当前i为奇数,则将sum[i]插入到hash表中。上面考虑的是从i为偶数为开头的情况。然后再考虑以奇数开头的情况,按照上述方法再做一次即可。不...
分类:
其他好文 时间:
2015-03-08 20:00:05
阅读次数:
175
题意:
给定1~n的一个排列 用A[]数组保存,问有多少下标(a,b,c,d)四元组满足:
a解析:
题目中n的范围是50000,O(n^2) 复杂度肯定超时。那么这题明显考察的是log2(n)的算法,对于这题可以用线段树或者树状数组,同时要用到输入外挂,不然会超时。
思路(参考别人做法)
枚举c的位置,那么每一次枚举中的方法数为 1~c-1 中(a,b)的个数 乘以 c~n中(c...
分类:
其他好文 时间:
2015-03-08 18:52:27
阅读次数:
121
呃。。其实挺水的一题,不说了。。伤心。。这题应该是要分开奇偶性的,因为如果不分开,当a0+...+ai=0,a(i+1)+....+aj=K时,求出来会出错。维护两种前缀和,sum=a0-a1+a2......aisum=-a0+a1-a2.....ai维护两个HASH,第一种前缀和当i为奇数时加入...
分类:
其他好文 时间:
2015-03-08 18:33:52
阅读次数:
111
代码引用kuangbin大神的,膜拜第一次见到hashmap和外挂,看来还有很多东西要学维护前缀和sum[i]=a[0]-a[1]+a[2]-a[3]+…+(-1)^i*a[i]枚举结尾i,然后在hash表中查询是否存在sum[i]-K的值。如果当前i为奇数,则将sum[i]插入到hash表中。上面...
DP/单调队列优化 呃……环形链求最大k子段和。 首先拆环为链求前缀和…… 然后单调队列吧 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #define rep(i,n) for(i...
分类:
其他好文 时间:
2015-03-07 13:37:44
阅读次数:
138
1.题目描述:点击打开链接
2.解题思路:本题是一道组合数学题,一开始用递归的思想做,但结果错误。学习了别人的解法后,豁然开朗。正确的解法是关注每一位数对整体的贡献值。比如输入的n位数是D1D2D3...D(n-1)D(n),那么当D(i)作为个位数时,它的前面必然有一个‘+’。剩下的k-1个‘+’被安置在剩下的n-2个空隙中,因此一共有C(n-2,k-1)种情况,D(i)的总贡献值是D(i)*...
分类:
其他好文 时间:
2015-03-07 08:33:50
阅读次数:
138
题目链接:点击打开链接
题意:
给定一个n层书架,一共取m本书。
下面n行给出每层书的价值。
每次可以取任意一层的最左端或最右端的一本书。
问能获得的最大价值。
思路:
1、显然是先求出对于每层任取任意本书能获得的最大价值。
2、然后背包一下。
1:
对于一层书任意j本,那么一定是从左端取k本,右端取 j-k本,求个前缀和然后枚举 j和k即可。每层n^2的dp
2:
分组背...
分类:
其他好文 时间:
2015-03-05 21:04:00
阅读次数:
177
这题可以这样想:
对于当前第i位来说,该位若在个位上出现,那么第i位和第i+1位中间肯定有一个“+”,剩下的k-1个“+”分布在剩下的n-2个空隙中,所以出现的总次数是C(n-2,k)。同理,在十位上出现的总次数是C(n-3,k)。于是每个数字的贡献值就可以求出来了,累加即可。
所以大体思路是遍历所有可能出现的位数,从个位开始,分成两部分计算,一部分用前缀和计算出前面所...
分类:
其他好文 时间:
2015-03-05 21:00:48
阅读次数:
201
题目大意:给定一个字符串S,求一个最长的L(L*2
一开始我的想法是枚举L,判断长度为L的前缀和长度为L的后缀的所有循环同构的哈希值之和是否相等
但是很快我发现这做法是扯淡- - 因为一个字符串所有循环同构的哈希值之和等于这个字符串所有字符ASCII码之和乘上(BASE^len+BASE^(len-1)+...+BASE^2+BASE+1)
然后我在想能不能考虑修改一下哈希函数呢?
比如给...
分类:
其他好文 时间:
2015-03-04 14:45:29
阅读次数:
141
题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少。由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j)与(i,j - 1), dp 值代表以该点为右下角的最大矩阵和,同时记录下这个矩阵的左上角坐标,状态转...
分类:
编程语言 时间:
2015-03-02 20:52:37
阅读次数:
223