随笔分类 - USACO
摘要:毕设的东西做不下了,做点其他东西调节一下,翻出USACO Trainning继续做,到Contact这道题了,光荣地挂在了第7组数据了,写的稍微有点暴力,过段时间再把它过掉吧。 题意是这样的,有一个01串,长度200,000,有1<=A,B<=12,1<=N<=50,求的是串中长度在A,B之间的子串出现次数的统计问题。 想了个最糟糕情况为12*200000=2.4*10^6的算法,最暴力的方法,遍...
阅读全文
摘要:这次用了矩形分割的方法实现了下,参考了这的代码,用了上浮+矩形分割的思想,个人觉得递归的写法更形象,且方便,于是,看了04年薛矛大牛论文后,实现了这个方法,觉得很赞,先从X方向上割掉,再割掉Y方向上。不过最糟糕复杂度是O(N^3),这个还是很可怕的,但一般是达不到的,这里的11个数据,都在0.1s以下,这种方法是解决一类统计类问题的利器~下面是薛大牛论文中的伪码:下面是用矩形分割实现该题的代码:/*ID: litstrongPROG: rect1LANG: C++*/#include <iostream>#include <string>#include <vec
阅读全文
摘要:卡这题卡了一天左右,不会做额,找了不少的代码和解说,发现NOCOW这里很不错,有大牛在这里写方法,可以拓宽思路,这几个1,2,3还不错,看懂了,和HDU1543是同一道题,就说说题意和方法吧。 给定一个A*B的矩形,A<10^4,B<10^4,然后可以往这个矩形上涂矩形状的颜色,矩形和X,Y轴平行,如果涂到同一个地方,则覆盖原来的颜色,颜色C<2500,有N<1000个矩形,求最后剩下的各个颜色的...
阅读全文
摘要:上道Score Inflation已经是去年10月的事情了,之前卡在了Humble Numbers这道题了,其实这道在很早之前就做过了,在POJ上,不过给忘了,也不知道怎么做了。先说下题意,给定K个素数,求出第N个丑数,丑数的定义是,若干个数的乘积,而这些数都来自于之前给定的K个素数的集合。想了个很暴力的方法,用一个最小堆来维护当前的最小的丑数,然后POP出去,用这个数和那K个素数相乘,判定是否唯一,然后放进最小堆,早就知道不行,还很弱的去写了一下,用STL实现,更加超时了,复杂度是O(K*N)。参考了这,这,官方的做法是用一个表,有序放丑数,假设有m个,第m+1个丑数,用素数集合中的数去和m
阅读全文
摘要:一道更新 图 传递性的题。复杂度是O(n^3*m)的复杂度。大意是如果A控制B,B控制C,则A控制C。A控制B可能是(a,b,p)p>50,也可能是A控制B1,B2,,,Bn,然后p1+p2+,,,+pn>50(Bi,C,pi),则A控制C。准备两个矩阵,一个记录i是否控制j,一个记录i控制j的多少。然后每加入一条有权边,就去更新这两个矩阵,即考虑加的这条边对两个矩阵造成了什么的影响。
阅读全文
摘要:这题算是整死了,大大的Debug了一番。大意是一个二叉树,点的度数只能为0或2,给出节点数和数的高度,问有多少种树,即树的计数问题。用的是DP,f(i,j)表示i个节点构成j高度的树的个数,其中在转移的时候还需要small(i,j),表示i个节点的高度小于等于j的树的个数。然后f(i,j)=f(left,j-1)*small(right,j-2)+small(left,j-2)*f(right,j...
阅读全文
摘要:大意是用N个灯,有4种操作,然后有些限制条件,操作C次后,可能出现的灯的状态。刚开始直接用N个灯来BFS,对状态数的数目不太了解,而且还不是一层一层的扩展,还跨过层,也就是说状态数就变成C*(<2^N)了,而且还没判重,弄晕掉。后来,仔细观察状态,发现对于N个灯泡,4种操作时有循环节的,为6,就是说状态数只有2^6,然后用BFS一层一层扩展,扩展到C层,复杂度就是2^6 * C,BFS的过程...
阅读全文
摘要:一道囧的模拟题,可以这样做,赞。大意是求出从1~n的罗马数字的各个字母的统计。I, II, III, IV, V, VI, VII, VIII, IX 1~9X, XX, XXX, XL, L, LX, LXX, LXXX, XC 10~90C, CC, CCC, CD, D, DC, DCC, DCCC, CM 100~900M, MM, MMM 1000~3000然后用这些数字...
阅读全文
摘要:这题简单,但看到analysis里面的这个解法真是囧。We notice that we can start with 0/1 and 1/1 as our ``endpoints'' and recursively generate the middle points by adding numerators and denominators. Each fraction is created ...
阅读全文
摘要:给一个序列,求最少的交换次数使其有序。排序后求置换群的个数,然后每个置换群要交换的最少次数是该个数-1,所以总的交换次数就是n-置换群的个数了。置换群可以O(n)里求得,这里只有3个数值,我用这三个点,建了个图。然后环的总权和就是置换群的个数了,min(map[1][2], map[2][1]) + min(map[1][3], map[3][1]) + min(map[2][3], map[3]...
阅读全文
摘要:这个题有意思,刚开始由于不是很理解题意还以为是DP,后来清楚并发现给的Feed的数量很少2^15次方全部弄出来就行了。但关于去最先序列的答案,用位运算^h和&搞定。t&(-t),取最低位的1还真好使,还有^运算,神奇。[代码]
阅读全文
摘要:这道题花了很多的时间额。。。大意是九皇后。USACO给出的Hint很强大,但自己下还是TLE在最后一个数据上,时间消耗1.3s左右,方法就是普通的标记数组表示不能访问。弄反斜线的坐标和索引对应时掣肘了那么几下。。。后来看到有人说位运算,就把之前的标记数组改成了二进制状态表示,但效果一点都没有,左右是一样,代码里面还是要For那些点来判断。就按Hint里的把多次调用的小代码放到主体中,因为大量的Ca...
阅读全文
摘要:题目大意是给两个整数a,b,然后求出这之间的所有回文素数。枚举回文的数,其实枚举回文的数加上判断宿舍的时间不是很长的。[代码]
阅读全文
摘要:枚举题。[代码]
阅读全文
摘要:有九个Clock,只有4个点,然后有9种操作,可以推动某些Clock前进一个刻度,问说最少的操作数。然后算错了4^9还是蛮小的=2^10 * 2^8=1024 * 256。用4进制来表示闹钟完全可行的。然后我就用了3个4进制数来表示,消耗(4^3)*(4^3)*(4^3)空间,空间是一样的,囧。然后用Vector来BFS。[代码]
阅读全文
摘要:这道题蛮有意思的,大意是有三个水桶ABC,只有C水桶放满水,从一个水桶倒到另一个水桶,要么一个桶空,要么一个桶满为止,问说当A桶空时,C桶可能出现的所有的可能状态。比较容易想到的是讲(a,b,c)表示为状态,然后暴力搜索出所有的可能性,因为一共就3个桶,操作也不复杂,对使用过的状态进行标记,这样可以在O(N3)完成,因为USACO的数据很小,<=20,所以就直接AC掉了,看了ANALYSIS...
阅读全文
摘要:这道题确实是公认的USACO Tainning Section1中最BT的一道,题目大意是有4个矩形,问所需要的最小面积的盒子把这些矩形装起来。学习别人Blog上的方法后过的。就是枚举出所有的情况A(4, 4) * (2 ^ 4).[代码]感谢以下链接:http://sjtulibing.spaces.live.com/blog/cns!2F17193726A8CFC0!139.entry
阅读全文

浙公网安备 33010602011771号