摘要:我的代码仿照参考参考文献1写出,关于线段树的详细说明见薛矛的论文1.线段树线段树的每个节点设一个表示线段起点和终点的域(start,end),若该节点的线段长度大于1,则以(start+end)/2为中点将其扩展为两颗子树。线段树的叶子节点长度是1。2.离散化我查到的资料中,这道题的离散化一般是这样实现的:设每个矩形的左右两条边投影到x轴且去除重复点后个数位x_num,则创建一颗根节点长度位x_num的线段树,并另设一个数组表示各个点的实际坐标。y轴也用一个数组表示y轴各个点的实际坐标。然后分别统计y轴各个相邻点之间的染色情况,每次统计前要恢复x轴的线段树,重新染色为0。去除重复点时可以用标记
阅读全文
摘要:参考[1]写了详细的解题过程。另外,浮点数要用double参考:[1]http://qxavier.info/2011/01/25/usaco-section-2-4-cow-tours/[2]http://www.cppblog.com/yuziyu/archive/2009/06/27/88662.html
阅读全文
摘要:1.用三维数组maze[][][]表示迷宫的通路状况,maze[i][j][0]为0表示点(i,j)向上没有通路,为1表示点(i,j)向上有通路;maze[i][j][1]为0表示点(i,j)向右没有通路,为1表示点(i,j)向右有通路,以此类推至四个方向[1]2.用一个二维数组flag表示经过的点,初始为-1,用广度优先搜索,初始队列为出口点(一个或两个),flag的出口点赋值为1,与其相邻且有通路的点赋值加1,扩展至整个图,最大值即为所求。[2]参考:[1]http://blogold.chinaunix.net/u3/94157/showart_2037662.html[2]http:/
阅读全文
摘要:把数组开大一点。[1]参考文献:[1]http://zhidao.baidu.com/question/155507541.html?push=ql
阅读全文
摘要:1 题目英文http://ace.delos.com/usacoprob2?a=62K39FVtmdz&S=subset中文http://www.nocow.cn/index.php/Translate:USACO/subset2 分析用数组dp[i][j]表示前i个数和为j的个数,则有if(i>j) dp[i][j] = dp[i-1][j];else if(i==j) dp[i][j] = dp[i-1][j] + 1;else dp[i][j] = dp[i-1][j] + dp[i-1][j-i];
阅读全文
摘要:1题目描述http://ace.delos.com/usacoprob2?a=lnS75jP5keh&S=pprime21)个位数为奇数2)所有偶数位的回文数都能被11整除 [1]3)判断是否质数是只需试除到sqrt(i) [2]4)我的程序用的是递归函数生成数据参考资料[1]http://greenmoon55.com/usaco-prime-palindromes/[2]http://blog.sina.com.cn/s/blog_5ed6a69f0100dym7.html
阅读全文
摘要:1题目描述http://ace.delos.com/usacoprob2?a=bDgbfJDh5Pw&S=milk32解题思路广度优先搜索,具体如下:1)搜索状态保存在一个队列中结构体queue中,已经存在的状态保存在一个二维数组statelist中2)在一个二重循环中产生下一个状态3)加入队列的条件是下一状态在statelist中不存在。3代码/*ID: wangsiy1LANG: CTASK: milk3*/#include <stdio.h>#include <stdlib.h>#include <string.h>#define QL
阅读全文
摘要:1题目描述英文:http://ace.delos.com/usacoprob2?a=2dcMjFnNl7S&S=clocks中文翻译:http://www.nocow.cn/index.php/Translate:USACO/clocks2深度优先搜索解法2.1 思路:用二进制的三位保存一个时钟的状态。低两位表示四种状态,第三位用作进位,每次操作后置零[1][2]2.2 代码:/*ID: wangsiy1LANG: CTASK: clocks*/#include <stdio.h>#include <stdlib.h>#include <string.h&
阅读全文