12 2010 档案
摘要:求一个串中最长的串,使得该串中出现的不同的字母数最大为m,求该子串的最大长度。搞两个指针Pi,Pj,初始化Pi=0,Pj=1,然后每次Pj要移动的时候,看Pi到Pj之间的不同的字母数是否为m,如果为m的话,就移动Pi指针,直到不为m,然后把,Pj向右移动一下,这样的串是肯定存在的,即任意一个长度为1的子串都是符合条件的,所以PiPj,所以复杂度为O(n),然后统计Pi,Pj之间的不同的字母数,可以用数组来统计,做到复杂度为O(1)。总的复杂度就为O(n),用队列来维护这个过程。代码
阅读全文
摘要:数根的扩展版,把一个十进制的数,写成按b进制形式的十进制数,一直下去,直到在[0,10)之间。有a(n)*10^n+a(n-1)*10^(n-1)...+a(0) = a(n)*b^n+a(n-1)*b^(n-1)...+a(0) mod (10 - b)然后答案就是(n - 10) % (10 - b) + b了。代码
阅读全文
摘要:A. Painting水题,容斥原理,小心又可能有0高度的。B. WarCraft III暴力C(24,5)。C. Apple有意思的题,问说n个数中有多少种方法,使得连续的数的和与0模m同余。将前缀和按模m等价类划分。代码D. Bolts And Nuts将(i,j)看为状态,一边情况可向(i-1,j-1),(i-1,j),(i,j-1)扩展,然后结合SG原理,根据必胜必败态判断就可以了。E. A Card Game模拟后,求逆序数,又看了遍树状数组,很有意思。i+lowbit(i),其中lowbit(i)是以i为根的树的节点数,扩展扩展可以添加虚拟节点来证明。见http://fqq1167
阅读全文