USACO
zhaofukai
行有不得,反求诸己
展开
-
Transformations
<br />#include<iostream><br /> #include<fstream><br /> using namespace std;<br /><br /> char arry[11][11], trans[11][11], transs[11][11], des[11][11];<br /> int n;<br /><br /> void ver(char a[][11], char b[][11])<br /> {<br /> int i, j;<br />原创 2010-09-14 19:55:00 · 310 阅读 · 0 评论 -
Contact
<br />这道题用trie树来做。我做的真是太悲剧了,在建树的时候,上界我用的strlen(ss),结果光建树就花了8秒。刚开始我以为是因为指针建树花时间太多,全改成数组后,还是一样,我才改的strlen(ss),结果速度一下子就提上来了,真是无语……<br /> 注意输出格式,每行最多输出6个。<br />程序代码:<br />/* ID:zhaofuk1 PROG: contact LANG: C++ */ #include <iostream> #include <cstring> #原创 2011-04-21 16:57:00 · 1224 阅读 · 0 评论 -
Electric Fence
这道题求三角形内有多少个格点,应用pick定理。 pick定理:以整点为顶点的简单多边形(任两边不交叉),它内部整点数为i,它的边上(包括顶点)的整点数为b,则它的面积S=i+b/2-1。本题中我们只需求出面积和边上的整点即可。一条线段((m, n)、(p, q))上整点的个数为:gcd(m-p, n-q) + 1,其中,gcd()为最大公约数。相关题目:http://poj.org/p原创 2011-06-11 10:19:00 · 701 阅读 · 0 评论 -
Fractions to Decimals
这道题题意比较简单,给你一个被除数和除数,求出小数的表示形式,若循环,则把循环节用括号括起来。 用试除法来做,难点在于如何判循环节。若果判商的话,会比较麻烦,但如果判余数则会很简单。因为只要余数相同,则一定会出现循环节。刚开始没想到判余数,就一直没做,后来查了些资料,恍然大悟。在查资料时发现关于循环节许多有意思的结论: 1、循环节的位数一定小于除数,最多也要比除数小1。 这一点很容易理解。因为余数总是比除数小,如果除数是ɑ,余数只能是1,2,3,…,ɑ-1,原创 2011-04-20 23:11:00 · 899 阅读 · 0 评论 -
The Longest Prefix
<br />这道题给出一些单词,然后再给出一个要求的串,求用这些单词组成的串的前缀最长长度。<br />刚开始想了想,感觉可用trie树来做,然后就写了,结果根节点没有初始化,调了半天,最后还是雪哥帮忙找出错误。然后他又给了我一个新的模板,我照他的重新写的。写完后提交出错,刚开始因为节点开多了,后来便是实在的错误了:在trie树的一条支路上,可能包含许多个单词,而这些单词可以构成串的前缀,现在的问题:选择哪个单词,能够使总长度最长?所以这有个选择,而单纯的trie树是不能够选择的。我们选择哪一个单词呢?这里原创 2011-04-14 14:09:00 · 704 阅读 · 0 评论 -
The Castle
<br />这是一道搜索题。求连通的的房间的个数,最大的房间有几个room,以及拆完那堵墙后连通的房间有最多的room。<br />这道题的输入比较怪,1表示西边有墙,2是北边,4是东边,8是南边。然后给一个数表示这个room四周墙的情况,实际就是这个数的二进制表示,若i位为1,则2i 代表的数就是那个方向有墙。我用二维矩阵存的这个图,然后dfs(),求连通的房间,并记录各个房间的room,最后再枚举墙,求最大的连通房间。<br />最后拆墙时,先拆最西边,其次最南边。他是面向东和南的,拆面前的墙时,他所在原创 2011-04-10 20:50:00 · 424 阅读 · 0 评论 -
Milking Cows
<br />//用到stl中的pair,也可换成其他结构<br />#include<iostream><br /> #include<fstream><br /> #include<algorithm><br /> using namespace std;<br /> const int MAXN = 5010;<br /> typedef pair<int, int> pill;<br /> pill tim[MAXN];<br /><br /> int cmp(const pill a,原创 2010-09-14 15:55:00 · 422 阅读 · 0 评论 -
Broken Necklace
//数据量不大,暴力枚举#include #include using namespace std; int n; char str[400], instr[400], sstr[400]; void find(char * s, int &cou) { int j; for(j = 0; j if(s[j] == s[j + 1]){ j++; cou++; }else if(s[j]原创 2010-09-14 09:26:00 · 337 阅读 · 0 评论 -
Dual Palindromes
<br />//与Palindromic Squares 大同小异<br />#include<iostream><br /> #include<fstream><br /> #include<cstring><br /> using namespace std;<br /> char hash[20] ={'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', '原创 2010-09-15 22:37:00 · 529 阅读 · 0 评论 -
usaco - Raucous Rockers
用动态规划求解,设w[i][j]表示从i到j用一张光盘最多刻多少首歌,可用0-1背包求出;f[i][j]表示前j首歌用i个光盘最多刻多少首歌,状态转移方程:f[i][j] = max(f[i - 1][l] + w[l + 1][j]) (i - 1 662-Fast Food非原创 2011-07-24 14:05:28 · 1151 阅读 · 1 评论