随笔分类 -  USACO

发布一些USACO的做题情况以及代码。
USACO 3.4
摘要:3.4开始的TEXT介绍的是比较常用的计算几何知识,没有细看。计算几何就是把平时的几何学问题用编程解决的技术,例如给两点坐标求过两点的直线方程等。现实中很容易写出一些式子,但是在计算机中因为分母为0(这样如果用y = kx+b表示直线的话,垂直的直线斜率是无穷大)之类的问题所以会显得稍微复杂一点。计算几何也是ACM中代码量相当大的一类。这节题目比较少,只有4题,而且除了第一题计算几何以外代码量都不大。因此只要过了第一题,就算是过了一半了。Closed Fences:不愧是计算几何,本节最难搞的题。感谢可可帮我拍代码,教我判断点在线段上和给两个线段的端点求交点的技巧。题目分成2部分,第一部分判断 阅读全文

posted @ 2013-09-20 04:35 Seraph2012 阅读(286) 评论(0) 推荐(0)

USACO 3.3
摘要:3.3开始的文字介绍是欧拉通路和欧拉回路。类似于小时候学过的一笔画问题。介绍里伪代码写的很清晰,几乎照着拍就可以A题。Riding The Fences:TEXT里的例题,欧拉路径。TEXT里说因为递归的层数比较深,所以要自己定义栈。我这里就用循环写了。其实递归也可以过。 1 # include 2 # include 3 4 5 int g[510][510], stack[110], top ; 6 int degree[510] ; 7 int EulerCircuit[1100] ; 8 9 10 void FindEuler(int s)11 {12 int i, ... 阅读全文

posted @ 2013-07-09 17:55 Seraph2012 阅读(226) 评论(0) 推荐(0)

USACO 3.2
摘要:3.2开始是背包的介绍,然后六个题目,没有一题和背包有关系!Factorials:比较经典的一个题。求n阶乘最右边第一个不为0的数字。因为0肯定是有一个因子2和一个因子5组合成的,而在n!中因数2的个数显然远多于5的个数。所以for一遍n,碰到因数2就加1,碰到因数5就减1。剩下的乘起来对10取mod,最后再乘一下剩下的2的个数。 1 # include 2 3 4 int main () 5 { 6 int n, ans, i, two, ii ; 7 freopen ("fact4.in", "r", stdin) ; 8 freopen (&quo 阅读全文

posted @ 2013-07-05 15:16 Seraph2012 阅读(196) 评论(0) 推荐(0)

USACO 3.1
摘要:终于做到第三章了。3.1开始是最小生成树的介绍文章,给出了Prim算法的伪代码(写的挺好)。之后有6个题目,其实只有第一个题目和最小生成树有关- -。Agri-Net:裸最小生成树。 1 # include 2 3 4 int ans, n, INF = 0x0f0f0f0f ; 5 int g[110][110] ; 6 int intree[110], d[110] ; 7 8 9 void mst()10 {11 int ts, pos, i, treecost ;12 ans = -1 ;13 for (i = 0 ; i d[i]) pos = i... 阅读全文

posted @ 2013-07-04 19:56 Seraph2012 阅读(241) 评论(0) 推荐(0)

USACO 2.4 Fractions to Decimals
摘要:mark:题意很简单。。。输出小数形式,要标记循环节。不难就是写起来挺麻烦,开辟一个数组来标记余数是否出现过可以找到循环节。而且要记录循环节起始出现的位置。写的比较恶心。还有76个字符一行,要注意换行。最长的是1/9991,循环周期是1632位。。。代码写的比较恶心。。。代码:# include # include int vis[1000010], ans[1000010] ;char str[1000000] ;int main (){ int cnt, cc, n, d, i; freopen ("fracdec.in", "r", stdin) 阅读全文

posted @ 2013-07-04 02:15 Seraph2012 阅读(341) 评论(0) 推荐(1)

USACO 2.4 Bessie Come Home
摘要:mark:就是个最短路。。。错了2次,一次是题目没读清楚,一次是自己犯2。。。代码: 1 # include 2 3 4 int graph[210][210] ; 5 int INF = 0x0f0f0f0f ; 6 7 8 int min(int a, int b){return a<b?a:b;} 9 10 11 int main ()12 {13 char ch1, ch2 ;14 int num, p, pos, i, j, k ;15 16 freopen ("comehome.in", "r", stdin) ;17 freope.. 阅读全文

posted @ 2013-07-04 01:41 Seraph2012 阅读(229) 评论(0) 推荐(0)

USACO 2.4 CowTours
摘要:mark:题意不是很好懂的样子。先用floyd求最短路,再枚举两个块的每条边。。。细节要注意,另外要用double。。。2A,图论我果然很弱啊。代码: 1 # include 2 # include 3 # include 4 5 6 int n ; 7 int x[200], y[200] ; 8 double dp[200], g[200][200], INF = 1e9, ans ; 9 char gra[200][200] ;10 11 12 double dist(double a, double b, double c, double d){return sqrt((a-... 阅读全文

posted @ 2013-07-04 01:05 Seraph2012 阅读(254) 评论(0) 推荐(0)