- 博客(23)
- 收藏
- 关注
原创 USACO Section 1.5.4 [Checker Challenge] Java题解
[b]题意分析:[/b]该题是需要深度优化的八皇后问题,首先看一下,经典八皇后问题的一般解法:[code="java"]public class Queens { private final static int MAX = 8; // site[i] = j => col:i row:j private static int[] site = new int[MAX];...
2011-07-15 23:16:16
177
原创 USACO Section 1.5.3 [Superprime Rib] Java题解
[b]题意分析:[/b]7331是素数,733是素数,73是素数,7也是素数。这样7331就是我们要的。给定位数N,就所有这样的数[b]解题思路:[/b]这题也是用递归。初始的数只可能为{2,3,5,7},递归时检查不是素数就退出,是的话for i = 0: 9 dfs(10*num+i)继续递归,如果位数到了N且是素数,则输出。[b]代码实现:[/b][url]htt...
2011-07-15 22:24:51
131
原创 USACO Section 1.5.2 [Prime Palindromes] Java题解
[b]题意分析:[/b]找出a和b间既对称既是素数的数。[b]解题思路:[/b]用递归去解这题。初始数据为单个的0-9和双数的00-99,扔进递归里每次在两边加0-9再递归,直到过长(大于b的长度)。这样每次递归的参数都可能是要的数值,所以递归方法首先要检查是否满足条件,除了要检查是否是素数、是否在[a,b]之间,还要注意有前导零的是不符合条件的。素数检查代码,一般不需要写到究...
2011-07-15 22:12:43
136
原创 USACO Section 1.5.1 [Number Triangles] Java题解
[b]题意分析:[/b]数字三角形,找到从顶到底的最大和的通路。[b]解题思路:[/b]DP题。newRow[j]+= max(oldRow[j-1], oldRow[j])。从上至下。边读边计算,状态只需保存当前行和上一行。每一行首尾补零,为了方便计算。[b]代码实现:[/b][url]https://github.com/leonlu/USACOJavaSoluti...
2011-07-15 21:21:58
160
原创 USACO Section 1.4.4 [Mother's Milk] Java题解
[b]题意分析:[/b]有容量为A,B,C的三个牛奶桶,容量范围为1-20。开始时,A,B为空C为满。三个桶之间一个桶倒入另一个桶来回倒(要么倒满,要么倒光)。给定A,B,C。求A桶为空时C的可能值。[b]解题思路:[/b]用DFS解。用searched[x][y]数组记录搜索过的状态,不使用三维数组是因为前2维决定了第三维。用amount[z]的布尔值记录当x=0时z的值。[...
2011-07-15 18:57:10
118
原创 USACO Section 1.4.3 [Arithmetic Progressions] Java题解
[b]题意分析:[/b]定义算术级数:一种序列a, a+b, a+2b, …,a+nb,a是非负整数,b是正整数定义双平方:能表示成p方+q方的数,p和q为非负整数给定N (3
2011-07-15 16:38:16
153
原创 USACO Section 1.4.2 [The Clocks] Java题解
[b]题意分析:[/b]有编号为A-I的9个时钟,时钟只有指向3、6、9、12四种状态,一次转动只能顺时针转90度,已知9种转动方式,每种转动方式指定不同的几个钟顺时针转90度,要使所有钟都回到12点,根据不同的输入,要如何组合这9种转动方式呢?找出最短序列,同样长度的情况下以序列编号小为先。[b]解题思路1:[/b]某一种转动方式若使用4次即没使用。因此1-9每一种转动方式至多使...
2011-07-15 15:50:31
211
原创 USACO Section 1.4.1 [Packing Rectangles] Java题解
[b]题意分析:[/b]给出4个长方形的高和长,以及给出6种基本布局,求合成无重叠的最小面积时的长和宽。[b]解题思路:[/b]这一题比较容易成为被卡住的第一题。【首先】使用贪心的念头不要有,必须老老实实地将所有情况列出,那到底有多少情况呢?1.六种基本布局中,第四种与第五种实则为一种,布局为5种。2.在每种布局中,由于长方形摆放的位置不同,有4的阶乘种。3.不...
2011-07-14 17:18:55
198
原创 USACO Section 1.3.4 [Prime Cryptarithm] Java题解
[b]题意分析:[/b]已知数字1-9组成集合的一个子集,求满足题意乘法步骤的情况有多少,注意乘数、被乘数、结果都不能超出位数,且每个数字都在题目给出的子集中。[b]代码实现:[/b][url]https://github.com/leonlu/USACOJavaSolution/blob/master/USACOSection1/src/crypt1.java[/url]...
2011-07-10 14:36:34
104
原创 USACO Section 1.3.3 [Calf Flac] Java题解
[b]题意分析:[/b]一眼看上去,又是找对称的,不过有一些明显的干扰因素,比如是从一堆很长的字符中(最长为20000个)找出对称的最长字符串(最长为2000个);找出的对称字符串中允许有其它干扰的字符whitespace以及其他符号;最长的长度是指不包含非字母的,而输出的对称字符串是包含非字母的等。[b]解题思路:[/b]输入的读取方式和之前的不一样,因为要读取所有字符,whil...
2011-07-10 14:35:04
112
原创 USACO Section 1.3.2 [Barn Repair] Java题解
[b]题意分析:[/b]C头奶牛在畜栏里(一个畜栏里最多只能有一头奶牛),畜栏共有S个,并告诉你哪些编号的畜栏里有奶牛。一共有M块板要将所有有奶牛的畜栏栏起来。因为奶牛分布的分散和板的数量的限制,势必有空着的畜栏也被栏起来。求所有被栏起来的畜栏的最小个数。[b]解题思路:[/b]比上一题稍难的贪心法。题目分析清楚后,S个畜栏这个条件实际上在计算中是没用的。为了使被栏起来畜栏数目最小...
2011-07-10 14:33:43
111
原创 USACO Section 1.3.1 [Mixing Milk] Java题解
[b]题意分析:[/b]牛奶收购站每天需要收购总量为N加仑牛奶,告诉你每天每个奶农生产的牛奶量和每加仑价格,求收购站至少要付多少钱才能满足每天的收购量。[b]解题思路:[/b]典型的贪心法。按每加仑价格排序,然后循环直到满足需求量[b]代码实现:[/b][url]https://github.com/leonlu/USACOJavaSolution/blob/maste...
2011-07-10 14:30:10
118
原创 USACO Section 1.2.5 [Dual Palindromes] Java题解
[b]题意分析:[/b]这题和上一题基本是一样的,输出N个大于S的Dual Palindromes。其中N (1
2011-07-08 21:49:37
111
原创 USACO Section 1.2.4 [Palindromic Squares] Java题解
[b]题意分析:[/b]N固定为10进制的1-300,N的平方表示成B进制时若左右对称则为Palindromic Squares。输入为B(B为2-20),输出B进制的PalSquare及其对应的N。[b]解题思路:[/b]十进制数与B进制数的转换。[b]代码实现:[/b][url]https://github.com/leonlu/USACOJavaSolution/...
2011-07-08 21:43:20
139
原创 USACO Section 1.2.3 [Name That Number] Java题解
[b]题意分析:[/b]奶牛们原来只有由四个数字组成的编号,例如4734,现在要给奶牛起名字。题目给出固定的数字和字母的对应方式,如:3对应D,E,F;4对应G,H,I; 7对应P,R,S。显然4734这样的数字可以对应到很多奶牛的名字,但只有名字在dict.txt中也存在的,才可能成为奶牛名字的候选,按字母升序输出该编号奶牛可以使用的名字候选。[b]解题思路:[/b]题目叙述的时...
2011-07-08 21:40:32
130
原创 USACO Section 1.2.2 [Transformations] Java题解
[b]题意分析:[/b]给定N*N的二维数组的变化前和变化后的情况,思考如何通过90度翻转和左右对称使得该变化成立。题中给出标号为1-7共7种翻转及对称的组合方式,求最小标号。[b]解题思路:[/b]这题非常容易解,按照给出的可能情况一种种去试即可。注意代码写得尽量精简的技巧。[b]代码实现:[/b][url]https://github.com/leonlu/USAC...
2011-07-08 21:37:52
98
原创 USACO Section 1.2.1 [Milking Cows] Java题解
[b]题意分析:[/b]输入为N组 [900,1800],[1200,2200] 这样的[开始,结束]时间段。要求计算最长连续时间长度,以及最长中断的时间长度。[b]解题思路:[/b]首先:将输入中的时间段按开始时间排序。然后:处理重叠的时间段,为后续计算做准备。[b]if[/b](a.end b.start && a.end < b.end) [b]then[/b] a...
2011-07-07 15:39:48
139
USACO Section 1.1.4 [Broken Necklace] Java题解
[b]题意分析:[/b]一串项链,由红蓝白三种颜色的珠子串成。在某一点拆开项链,从这一点左端开始数连续相同颜色的最长长度,右端也做同样的计算(可以是与左端不同的颜色),求长度之和为最大时的值。(其中白色既可以认为是红色,也可以认为是蓝色。)输入为wwwbbrwrb样式的字符串表示一串项链。由于项链是事实上首尾相连的,为了方便计算,将字符串乘以2拼接起来,即wwwbbrwrbwwwbbr...
2011-07-06 20:41:22
190
USACO Section 1.1.3 [Friday the Thirteenth] Java题解
[b]题意分析:[/b]已知1900年1月1日是周一(即1900年1月13日是周六),求1900年1月1日开始,N年间每月13号这一天分别落在周一,周二……到周日的次数。[b]解题思路:[/b]从1900年1月起枚举N年间的每一个月份:由该月13号为周几,算出下个月13号为周几,注意考虑闰年。[b]代码实现:[/b][url]https://github.com/leo...
2011-07-04 20:22:55
148
USACO Section 1.1.2 [Greedy Gift Givers] Java题解
[b]解题思路:[/b]直接用String[]保持名字的顺序,Map保持名字和钱的对应关系。然后边读入边处理,一遍即可。[b]代码实现:[/b][url]https://github.com/leonlu/USACOJavaSolution/blob/master/USACOSection1/src/gift1.java[/url]...
2011-07-04 12:31:49
224
原创 USACO Section 1.1.1 [Your Ride Is Here] Java题解
众所周知,Java的运行效率大约比C/C++慢3倍左右。大多数支持多语言的Online Judge虽然支持Java语言递交代码,但是对于时间要求很高的题目,在用与C/C++相同算法的情况下,Java的提交常常被卡住TLE。而USACO给予Java的提交宽裕的时间。USACO要求的代码结构和输入输出格式如下:包装一层BufferedReader/BufferedWriter可以大大提高读...
2011-07-04 11:23:02
177
原创 Windows中使用Git笔记
首先安装Git的Window版本。 Git for Windows http://code.google.com/p/msysgit/ 使用Git之前先用Git Bash生成SSH Key ssh-keygen -t rsa -C "your_email@youremail.com",进入.ssh文件夹所在的目录(Win7下是C:\Users\<User Name>\.ssh)...
2011-06-30 21:55:35
82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人