【算法】树状数组||线段树 【题解】括号法,对于每个K=1的操作标记左右括号的位置,即在left和right的位置分别+1(不同标记)。 对于每个K=2的操作,答案就是right前面的左括号数量-(left-1)前面的右括号数量、 用树状数组或线段树优化。 注意数组在传递给函数时是传递地址,即在函数 ...
分类:
其他好文 时间:
2016-08-18 21:25:19
阅读次数:
152
【算法】线段树 【题解】将所有坐标按x(第一)和y(第二)从小到大排序,再按顺序插入线段树,即在线段树中将y坐标位置+1,这样就能保证每个坐标能包含的点一定先被处理了,每次询问查询1...a[i].y区间的和。 #include<cstdio> #include<algorithm> using n ...
分类:
其他好文 时间:
2016-08-18 11:17:30
阅读次数:
259
题目链接: https://vijos.org/p/1493 题目大意: 二取方格数,从(1,1)向下或向右走到(n,m)走两次,每个走到的格子值只能被取一次所能取到的最大值。 (n,m<=50) 题目思路: 【动态规划】 f[i][j][k][l]表示第一次走到(i,j)第二次走到(k,l)的最大 ...
分类:
其他好文 时间:
2016-08-18 00:52:18
阅读次数:
142
题目链接: https://vijos.org/p/1143 题目大意: NxN的矩阵,每个值只能取一次,从(1,1)走到(n,n)走三次能取得的最大值。 题目思路: 【动态规划】 f[x1][y1][x2][x3]表示第一次走x1,y1,相同步数下第二次走x2,y2,第三次走x3,y3的最大值。 ...
分类:
其他好文 时间:
2016-08-16 21:33:17
阅读次数:
217
题目链接: https://vijos.org/p/1616 题目大意: 卒从(0,0)走到(n,m),只能向下或向右,不能被马一步碰到或走到马,有几种走法。 题目思路: 【动态规划】 把马控制的地方全部标记,接下来DP,f[i][j]=f[i-1][j]+f[i][j-1]; 1 // 2 //b ...
分类:
其他好文 时间:
2016-08-16 20:01:08
阅读次数:
188
题目链接: https://vijos.org/p/1616 题目大意: 长度为N的字符串,只含‘j’和‘z’,可以将任意两个字符调换K次,求能够拥有的最多的'jz'串。 题目思路: 【动态规划】 首先相同字符是不用调换的,一个字符最多被调换一次(a<—>b,b<—>c等价于a<—>c) f[i][ ...
分类:
其他好文 时间:
2016-08-16 19:52:57
阅读次数:
142
题目链接: https://vijos.org/p/1111 题目大意: 多组数据,给两个字符串s1,s2,求把s1,s2拆开从前往后合并后最短是多少 apple + peach = appleach ananas + banana = bananas pear + peach = pearch 题 ...
分类:
其他好文 时间:
2016-08-16 01:49:05
阅读次数:
125
题目链接: https://vijos.org/p/1028 题目大意: 给N个字符串(N<=2000),求能组成词链的单词最多有几个。 如果在一个由一个词或多个词组成的表中,除了最后一个以外,每个单词都被其后的一个单词所包含 即前一个单词是后一个单词的前缀,则称词表为一个词链。例如下面单词组成了一 ...
分类:
其他好文 时间:
2016-08-16 00:36:08
阅读次数:
175
题目链接: https://vijos.org/p/1412 题目大意: 求01背包的前K优解,要求必须装满(1<=K<=50 0<=V<=5000 1<=N<=200) 题目思路: 【动态规划】 f[j][k]表示花费为j的第k优解。 合并的过程用归并。 1 // 2 //by coolxxx 3 ...
分类:
其他好文 时间:
2016-08-15 20:33:01
阅读次数:
127
【算法】求逆序对(树状数组)(也可以用归并排序等) 【题解】 学自:http://blog.csdn.net/greatwjj/article/details/16808243 https://vijos.org/p/1842/solution(从下往上第三个回答) 因此要使结果最小,只要最大化ai ...
分类:
其他好文 时间:
2016-08-13 22:19:36
阅读次数:
118