
usaco
demo
这个作者很懒,什么都没留下…
展开
-
Checker Challenge
<br /> 经典的八皇后问题。思路很明确,搜索,每次决策一行中的一个皇后,因此只需对列,正逆对角线进行标识即可。可这样做最后一个案例会超时。其实我们还没有完全挖掘出题目中的隐含信息,注意到解是具有对称性的,所以我们只需搜索一半,当n为奇数时,第一行的最中间的一个皇后单独搜。<br />//diag(a[i][j])=i-j+n-1 rdiag(a[i][j])=i+j;#include<iostream>#include<string.h>#include<fstream>using原创 2010-12-22 16:47:00 · 448 阅读 · 0 评论 -
Calf Flac
枚举每一个回文的中间位置,当循环到原文的第i个位置时有两种情况 ,一种是奇数长度的回文,中间位置为i。别一种是偶数长度的回文 ,中位置为i 和i+1。利用回文数的特点(pal[i]=pal[n-1-i])去判断即可。回文数在ACM题中出现还挺多的,一定要牢牢地抓住这条性质。#include#include#include#include#includeusing namespace std;#define ischar(i) ( str[i]>='A' && str[i]='a原创 2010-12-22 09:33:00 · 449 阅读 · 0 评论 -
Barn Repair
这题乍看之下怎么像DP,于是用DP做了,有个陷阱,题目没说输入牛的编号是有序的,所以要排序。设dp[i][j]为木板数为i的条件下前j头 牛所需最少的木板数,dji]为第j头牛的编号。由前后两头牛的关系可知dp[i][j]=min{dp[i][j-1]+d[j]-d[j-1],dp[i-1][j-1]+1}后来才知道这题的经典解法是贪心,囧,被我想复杂了。#include#include#includeusing namespace std;#define N 220 #define原创 2010-12-22 09:03:00 · 388 阅读 · 0 评论 -
Milking Cows
这题要注意sort排序之后 相邻区间有三种情况:相离,相交,包含。设empty,full分别为连续挤奶和空闲时间段,则第i个区间与i-1区间相离时:full=max( full, e-s ) ,empty=max(empty,t[i].s-t[i-1].e) 相交时e=t[i].e被包含时:contiue;#include#include#includeusing namespace std;#define N 5050struct Node{ int s,e;}t[N];原创 2010-12-21 22:24:00 · 359 阅读 · 0 评论 -
Broken Necklace
<br /> 这题注意向前和向后判断的边界就没问题了,个人觉得统计数量来判断要简单一些。原创 2010-12-21 22:00:00 · 364 阅读 · 0 评论 -
The Clocks
<br /> 这道题应该算是比较经典的一道Brute force method(暴力法),至少我是碰到好多次了。<br />思路:每一个钟都只有4种状态(3,6,9,12)--->(0,1,2,3),所以每一种操作的数目都会少于4<br />因此我们需要枚举所有的操作的组合情况就可以了,时间复杂度(4^9)<br />开始时用一个x【】数组记录每一种操作的步数,对于每一个时钟只有其中的一部分操作对其有影响,所有有影响的加起来应该等于3,这样做效率是高一些,不过太容易出错了,后来参考了别人的代码,重写了一下原创 2010-12-22 13:58:00 · 542 阅读 · 0 评论 -
Packing Rectangles
这题应该算是chapter里最难的一题了,个人是看了之后表示一点想法都没有,告诉我是搜索的我都不知道怎么去搜,后面终于下决心要A掉它,终于有了思路。/*让我卡的第十七组数据!!!就一个小小的错误让我纠结了差不多一天。纪念一下。4 45 53 4 6 3ans:728 9*/#include#include#include#include#includeusing namespace std;#define max(x,y) (x>y?x:y原创 2010-12-22 09:39:00 · 511 阅读 · 0 评论 -
Prime Cryptarithm
<br /> 这题思路不难,用给定的数进行组合,再判断部分积的每一 位是不是在给定数中即可,有 个小小的剪枝,先排序,乘数和被乘数的最高位的记做i,j,则i*j<=num[n-1]; n为给定数的个数。<br />#include<cstdio>#include<string.h>#include<iostream>#include<algorithm>using namespace std;#define N 10int num[N];bool flag[N];int ma原创 2010-12-22 09:17:00 · 386 阅读 · 0 评论 -
friday
之前把1900当成1990死活做不出,第 一章的最后才发现了这个问题,还是在队友的指导下发现的,囧!!! 这题的考查的是7以内的模运算,第i个月的星期数和天数记为week[i],month[i]则week[i]=(week[i-1]+month[i-1])%7。#include#include#includeusing namespace std;int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int ans[7];int原创 2010-12-21 21:52:00 · 389 阅读 · 0 评论 -
Ordered Fractions
贪心,从小到大依次考虑每一个分母nu,对每一个分母再考虑每一个分子,若gcd(nu,d)=1,则是真分数,输出。否则continue.#include#include#include#include#include#include#includeusing namespace std;#define N 161int n;struct frac{ int nu,d;}f[13041];int cnt;bool cmp(frac const &a,f原创 2010-12-22 17:29:00 · 439 阅读 · 0 评论 -
Hamming Codes
<br /> 对于题目中最后一句话不是怎么理解:<br />if interpreted as a base 2^B integer, would have the least value. <br />是把什么转换成2^B进制?<br />最小值指的是谁?<br />还有为什么答案第一个数是0<br />假设序列为A=(x1,x2,……,xn-1)<br />A-x1=(0 , x2-x1,……,xn-1 -x1 ) <br />约减去一个相同的数它们的海明码不变?<br /><br />请求大牛解答.<原创 2011-01-01 11:38:00 · 458 阅读 · 0 评论