T4: 求逆序对A[I]为前缀和推导 (A[J]-A[I])/(J-I)>=MA[j]-A[I]>=M(J-I)A[J]-M*J>=A[I]-M*I设B[]=A[]-M*();B[J]>=B[I]也就是求逆序对;求逆序对的方法主要有两种: 归并排序; 树状数组;这里两种方法都学习一下:1.之前对于树...
分类:
其他好文 时间:
2014-09-09 11:56:48
阅读次数:
262
T4: 用树状数组求逆序对A[I]为前缀和推导 (A[J]-A[I])/(J-I)>=MA[j]-A[I]>=M(J-I)A[J]-M*J>=A[I]-M*IB[J]>=B[I]之后就是求逆序对的事情了然后这里学一下用树状数组的方法原理是:树状数组是用来求区间和的是吧就是按权值的区间统计那么可以BI...
分类:
其他好文 时间:
2014-09-07 12:09:35
阅读次数:
251
一、前缀和(Prefix Sum)定义:
给定一个数组A[1..n],前缀和数组PrefixSum[1..n]定义为:PrefixSum[i] = A[0]+A[1]+...+A[i-1];
例如:A[5,6,7,8] --> PrefixSum[5,11,18,26]
PrefixSum[0] =A[0] ;
PrefixSum[1] =A[0] + A[1] ;
PrefixSum...
分类:
编程语言 时间:
2014-09-06 21:20:23
阅读次数:
897
dfs+剪枝*4(通过得很勉强):1、只枚举一半的比赛,另一半直接得出。2、处理前缀和,若大于目标得分则剪枝3、前缀和加上若接下来全胜的得分 仍小于 目标得分,则剪枝。4、枚举到每个人的最后一场比赛时直接用 目标得分-前缀和 计算出最后一场的应得分。Code还是很简单的:#includeusing ...
分类:
其他好文 时间:
2014-09-06 16:05:33
阅读次数:
220
首先需要了解一下BF暴力匹配算法,这个算法为每一个串设置一个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针回到开始后移之前的位置的下一位,模式串指针回到最开始。
对比一下KMP算法,同样是设置两个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针不变,模式串指针回溯一定的距离。具体模式串指针回溯多少,是第一次看KMP算法的人比较难以理解的,其实仔细想想,模式串的前缀和后缀其实也是...
分类:
其他好文 时间:
2014-09-03 11:21:16
阅读次数:
136
题目链接:uva 1519 - Dictionary Size
题目大意:给出n个字符串组成的字典,现在要添加新的单词,从已有单词中选出非空前缀和非空后缀,组成新单词。问说能组成多少个单词。
解题思路:建立一棵前缀树和一棵后缀树,有多少节点即为有多少个前缀,扣除中间的部分即可加上长度为1的字符串即可。
#include
#include
#include
using name...
分类:
其他好文 时间:
2014-09-01 22:46:13
阅读次数:
261
题意一开始不是很明确, 后来发现是每一种特征出现的次数相同这样一来就变成简单hash问题了,如果把每个特征看看做是一个(n+1)进制数的话,对奶牛序列求一下前缀和,如果i - j这一段每一种特征出现的次数相同的话,把i - 1点和j点的每一位减去所有位中的最小值之后,必然相等,所以hash判断一下就...
分类:
其他好文 时间:
2014-09-01 21:10:03
阅读次数:
227
题目链接:点击打开链接
题意:
给定n*m的矩阵
# 是墙 . 和字母是平地
最多有26个字母(不重复出现)
下面k个指令,
每个指令代表移动的方向和步数。
若以某个字母为起点,依次执行所有的指令,任何过程都不会撞到墙或走出地图,则这个字母合法。
按字典序输出所有合法的字母。若没有字母合法则输出' no solution'
预处理一下前缀和然后暴力。
#include ...
分类:
其他好文 时间:
2014-09-01 19:39:13
阅读次数:
239
题目链接:点击打开链接
当转移[l,r] 区间时, 若[0, r-1] 这里的区间都已经转移完毕时是最优的,所以按右端点升序,同理右端点相同时左端点升序,然后树状数组维护一下前缀和。
#include
#include
#include
#include
#include
using namespace std;
#define N 100005
#define mod 100000...
分类:
其他好文 时间:
2014-08-31 18:43:51
阅读次数:
340
题意:
给出一串括号
给出一些询问,问某个区间[l,r]内的能合法匹配的括号数有多少个
分析:
我们可以实现处理两个数组
sum[i] 1....i中已经能匹配的右括号的数目
left[i] 1....i中还不能匹配的左括号数目
这两个数组可以很简单的扫描一遍动态维护得出来
我们可以先求前缀和,即
1...m中有多少能匹配的右括号sum[m]
则,我们可以得到s...
分类:
其他好文 时间:
2014-08-31 15:54:31
阅读次数:
262