自增运算符++有前缀和后缀两种,在搭配间接访问运算符*时,因为顺序、括号和结合关系的影响,很容易让人产生误解,产生错误的结果,这篇文章来详细分析一下这几种运算符的不同搭配情况。 ++、--和*的优先级顺序 在C语言运算符的优先级顺序中,后缀的++和--运算符运算优先级16,结合关系是从左到右;简介访...
分类:
编程语言 时间:
2016-03-16 01:04:52
阅读次数:
368
本题就是求重复数最多的字典序最小的$runs$,如果重复数为1,那么做法显然,然后只考虑重复数大于1的情况。 从小到大枚举长度$len$,对于每个关键点$x=i\times len$,有且仅有一个长度为$len$的串经过它。 算出$x$与$x+len$的最长公共前缀$A$和最长公共后缀$B$后,贡献
分类:
其他好文 时间:
2016-03-15 00:21:15
阅读次数:
193
题意:有n个城市,给一个矩阵,表示m件事上,n个城市的看法(东方或者西方) 现在需要确定一个分界,使得差异最小 所谓的差异,可以理解为划分后西边的E和东边的W数量和最小 直接做一个前缀和以及一个后缀和,暴力枚举分界点就行了 但是有一个陷阱: 我是将E看作1,W看作0,所以前缀和后缀都是相当于统计了1
分类:
其他好文 时间:
2016-03-14 20:23:13
阅读次数:
252
身为魔法少女的一员,学姐(头还在哦)在最后一战之后便退隐了。她决定用她剩余的魔法去圈一块矩形花园。但是有一些土地会使学姐的魔法失效(即边不可以跨越这些土地)。现在学姐想知道在这块N*M的土地上她可以获得的最大花园面积。(单位格面积为1).在这块N*M的图中,”.”表示学姐可以施法,”X”表示会失效
分类:
其他好文 时间:
2016-03-14 00:16:11
阅读次数:
272
对于每种颜色,可以发现可以切的位置被分割成了若干段独立的区域。 给每个区域一个编号,将$m$种颜色的情况当成字符串来看,如果两个切口的字符串完全匹配,那么可以在这里切两刀。 可以构造hash函数,通过差分前缀和做到$O(n)$修改。 然后对于每一种相同的hash值,将切口按位置从小到大排序,通过组合
分类:
其他好文 时间:
2016-03-13 06:18:31
阅读次数:
248
求出前缀和$s$,设$f[i]=s[i+d-1]-s[i-1]$。 从左到右枚举的右端点$i$,左端点$j$满足单调性,若$s[i]-s[j-1]-\max(区间内最大的f)\leq p$,则可行。 用单调队列维护即可,时间复杂度$O(n)$。
分类:
其他好文 时间:
2016-03-13 06:11:25
阅读次数:
118
题目地址:Ural 1146 这题是求最大子矩阵和。方法是将二维转化一维。 首先用n*n的方法来确定矩阵的列。须要先进行预处理,仅仅对每行来说,转化成一维的前缀和,这样对列的确定仅仅须要前后两个指针来确定。仅仅须要用前缀和相减就可以得到。前后两个指针用n*n的枚举。 确定好了哪几列,那么再确定行的时
分类:
其他好文 时间:
2016-03-10 12:20:21
阅读次数:
164
每一棵线段树是维护每一个序列前缀的值在任意区间的个数,如果还是按照静态的来做的话,那么每一次修改都要遍历O(n)棵树,时间就是O(2*M*nlogn)->TLE考虑到前缀和,我们通过树状数组来优化,即树状数组套主席树,每个节点都对应一棵主席树,那么修改操作就只要修改logn棵树,o(nlognlog
分类:
其他好文 时间:
2016-03-02 19:56:05
阅读次数:
181
题目链接 每个子串都是一个后缀的前缀 每个后缀贡献的子串数目是len-sa[i]-height[i]; 因此可以二分找到一个子串的位置,要求某两个子串的最长公共前缀和最长公共后缀,把原串倒过再来一发就好,然后st表O(1)查询; 1 #include<algorithm> 2 #include<io
分类:
其他好文 时间:
2016-02-28 22:41:34
阅读次数:
341
题意:给一个非负整数序列,求哪一段区间的权值最大,区间的权值=区间所有数的和×区间最小的数。 用单调非递减栈在O(n)计算出序列每个数作为最小值能向左和向右延伸到的位置,然后O(n)枚举每个数利用前缀和O(1)计算出以这个数为最小值能得到的最大的区间权。 以前写的单调栈,三个if分支,写得繁繁杂杂的
分类:
其他好文 时间:
2016-02-28 19:57:26
阅读次数:
177