SPOJ
OMRailgun
这个作者很懒,什么都没留下…
展开
-
SPOJ_STC02:Antisymmetry(Manacher)
题目大意是给你一个长度为n的01串,问其中有多少个"反对称串",其中一个01串成为"反对称串",当前仅当将它前后倒置再01互换后的字符串等于它本身,例如0101,000111,10是反对称串,而111,110,1011就不是反对称串. 这题可以套用稍稍更改cmp规则的Manacher算法,其中规则更改为沿某两个字符中间位置,左右相应对称位置的字符0=1,0≠0,1≠1,#=#. 然后关于这题,原创 2016-12-29 19:43:10 · 541 阅读 · 0 评论 -
SPOJ_MINSUB:Largest_Submatrix(二分+单调栈)
题目大意是说给定一个R*C的非负矩阵,试求出一个包含数字数>=K的子矩阵,使得这个子矩阵中最小的数字最大. 解题思路主要是二分答案,即二分那个最小的数字,然后针对每次二分的值mid,可以将原矩阵根据是否满足A[i][j]>=mid,而转成一个R*C的01矩阵a[][],然后问题求变成了给定一个二维01矩阵,求最大的满1矩阵,可以用单调栈的思想来处理这个子问题,设b[i][j]表示从a[i][j]原创 2016-12-29 23:10:49 · 551 阅读 · 0 评论 -
SPOJ_TBATTLE:Thor_vs_Frost_Giants(数论+二分)
题目大意是有n个数字,要求求出最短的区间使得这个区间内的数字之和是n的倍数,若有解,则输出区间两端位置(数字从0标号),若无解则输出一个-1.其中1 由数字的大小只有1e5,很容易想到解法,因为最小的几个质数2*3*5*7*11*13*17>1e5,所以1e5以内的数字至多有6个质因子,且若x是y的倍数,y=a1^b1*a2^b2...*ak^bk,其中ai为素数,x=a1^c1*a2^c2..原创 2016-12-30 13:23:18 · 454 阅读 · 0 评论