USACO
文章平均质量分 72
neostar2008
这个作者很懒,什么都没留下…
展开
-
USACO Shopping Offers, DP
无语致死,使用的最原始的五维DP,参考 http://www.cppblog.com/Ylemzy/articles/100170.html注意count数组里除了要加入 捆绑打折的商品信息,也要加入商品的单价/* ID: wangxin12 PROG: shopping LANG: C++ */#include #include using namespace st原创 2012-09-26 08:01:09 · 290 阅读 · 0 评论 -
USACO Humble Number
参考:http://hi.baidu.com/ritchie_wang/item/34431c3ceb7d54bc134b1492思路:我们在数组hum中计算出前n个丑数。为了实现起来更简单,我们把1也作为一个丑数,算法也要因此略微调整一下。当我们已知前k个丑数,想得到第k+1个,我们可以这样做:对于每个质数p,寻找最小的丑数h,使得 h * p 比上一个丑数大。取我们原创 2012-08-18 02:47:46 · 298 阅读 · 0 评论 -
USACO Money System 背包9讲,动态规划,母函数
一、使用动态规划 (注意阅读dd大神的背包问题九讲)设dp[i,j]表示前i种货币构成j的方法数,用cc记录货币的面值,状态转移方程为: dp[i,j]=dp[i-1,j]; 不用第i种货币dp[i,j]=dp[i-1,j]+dp[i,j-cc[i]] 用第i种货币,j>=cc[i]二、构造母函数也许麻烦了点,但也是一种方法。 原问等价于求一个形如a1X原创 2012-07-30 21:15:25 · 495 阅读 · 0 评论 -
USACO Stamps, DP
思路:状态:设F[i]为组成面值为i所需要的最少的邮票数量初始:F[0]=0状态转移方程:F[i]=min{F[ i-value[j] ] (j=1..n and i-value[j]>=0) }+1最终答案:找到最小的F[i]>k,则答案为(i-1)解析:F[i]具有最有子策略,即F[i]由F[0..i-1]中特定的最优解决定。枚举每种邮票j,F[ i-val原创 2012-08-13 18:27:59 · 414 阅读 · 0 评论 -
USACO Zero Sum
没什么好说的,DFS,注意判断函数 eval()/* ID: wangxin12 PROG: zerosum LANG: C++ */ #include #include #include #include using namespace std;int N;ifstream fin("zerosum.in");ofstream fout("zerosum.out"原创 2012-07-28 02:23:31 · 363 阅读 · 0 评论 -
USACO Score Inflation,完全背包问题
很经典的完全背包问题我的代码/* ID: wangxin12 PROG: inflateLANG: C++ */ #include #include using namespace std;#define MAX 10000int M, N;int point[MAX + 1]; // points int miniute[MAX + 1]; // miniute原创 2012-08-12 16:25:23 · 517 阅读 · 0 评论 -
USACO Agri-Net, MST, Prim, Kruskal
最基本的最小生成树,可以用Prim和KruskalPrim算法的解答,参考http://blog.csdn.net/niushuai666/article/details/6689295/* ID: wangxin12 PROG: agrinetLANG: C++ */ #include #include #include #include using namespa原创 2012-08-11 22:59:30 · 346 阅读 · 0 评论 -
USACO Cow Tours, Floyed-Warshall, FloodFill(BFS)
参考思路:http://kaolausaco.blogbus.com/logs/62563337.htmlhttp://www.byvoid.com/blog/usaco-243-cow-tours/http://www.cppblog.com/yuziyu/archive/2009/06/27/88662.html我的思路:1. 根据最开始的联通图信息,求出原始的dist原创 2012-08-09 23:31:43 · 459 阅读 · 0 评论 -
USACO Fractions to Decimals,有重大疑问
有两种方法,参考http://jijiwaiwai163.blog.163.com/blog/static/186296211201262911916893/我用的笨办法,长除法题目真立马贱的要死,思路简单,数据诡异到爆,特别是他妈的最后要 76 个字符 一排输出,怎么控制,日~~借鉴的别人的代码,为什么在输入“(”的时候不需要k++,我百思不得其解,要烦死了,一道破题浪费原创 2012-08-07 22:53:13 · 235 阅读 · 0 评论 -
USACO Contact,难题,运算符重载,QuickSort,
我感觉是到目前为止最难的一题参考消逝者的代码:http://www.nocow.cn/index.php/Code:USACO/contact/C%2B%2B参考思路:http://www.nocow.cn/index.php/USACO/contact#.E7.AE.80.E6.98.93.E4.BD.86.E9.9D.9E.E5.B8.B8.E9.AB.98.E6.95.88.E7.9原创 2012-08-20 01:21:04 · 734 阅读 · 0 评论 -
USACO Sweet Butter, 难题,Bellman-Ford算法 + SPFA优化
这题碰到我头晕的时候,搞了几天没搞懂,参考了网上的代码nocow的解释:http://www.nocow.cn/index.php/USACO/butterBellman-Ford算法:http://zh.wikipedia.org/wiki/Bellman-Ford%E7%AE%97%E6%B3%95SPFA的讲解:http://www.cnblogs.com/zen_chou/原创 2012-08-30 23:24:43 · 552 阅读 · 0 评论 -
USACO Factorials,DP,因子分解
思路:先计算 n! 中有多少个 5 因子,并记录下来。然后从 1 到 n 把每个因数列出来,如果能去掉 2 和 5 (数量都是因子 5 的个数),就把 2 和 5 去掉。这样中间计算的数只用保留 1 位(mod 10) 就可以了。官方给的分析:The insight for this problem is that 0's at the end of a number come from原创 2012-08-22 14:56:49 · 443 阅读 · 0 评论 -
USACO Riding Fences 欧拉回路
参考: http://www.cppblog.com/Ylemzy/articles/100050.html注意path数组长度为1025(edge的个数),刚开始弄成501(vertex个数)结果test 8 爆栈了/* ID: wangxin12 PROG: fence LANG: C++ */#include #include #define MAX 505原创 2012-09-20 01:54:02 · 1851 阅读 · 0 评论 -
USACO Home on the Range
参考USACO,使用的动态规划 http://www.nocow.cn/index.php/USACO/range代码/* ID: wangxin12 PROG: rangeLANG: C++ */#include #include #define MAX 253using namespace std;ofstream fo("range.out"原创 2012-10-02 13:05:40 · 316 阅读 · 0 评论 -
USACO Camelot,难题
http://usacotraining.blogspot.com/2012/08/problem-333-camelot.htmlsomething about github http://blog.sina.com.cn/s/blog_4b55f6860100zzgp.html原创 2012-09-28 14:40:40 · 322 阅读 · 0 评论 -
USACO Spinning Wheels, bitset使用
bitset使用介绍:http://hi.baidu.com/xuanzhuanren/item/eee713f651165026753c4c5f/* ID: wangxin12 PROG: spinLANG: C++ */ #include #include #include using namespace std;ifstream fin("spin.in");原创 2012-08-25 15:52:44 · 428 阅读 · 0 评论 -
USACO Magic Squares, 难题,康托展开,位运算,BFS,哈希判重等……
康托展开:http://www.nocow.cn/index.php/%E5%BA%B7%E6%89%98%E5%B1%95%E5%BC%80这题太难了,花了几天看懂了别人的代码,牛掰到不行的位运算让我晕死参考的别人的代码:/* ID: wangxin12 PROG: msquare LANG: C++ */#include #include #define转载 2012-09-03 23:24:23 · 2210 阅读 · 0 评论 -
USACO Feed Ratios, 解线性方程组,克莱姆法则,0取余
C++里, 0 取余(%)任何数为0,比如 0 % 5 = 0 而不是5暴力枚举:因为因子最大为100,计算量最大100的立方,可以暴力枚举,参考:http://www.cppblog.com/Ylemzy/articles/99550.html (这个代码没有考虑0)或者 克莱姆法则:http://wenku.baidu.com/view/a50e676c1eb91a37f1115c49原创 2012-08-24 01:05:40 · 1149 阅读 · 0 评论 -
USACO Stringsobits, DP
参考:http://www.cppblog.com/Ylemzy/articles/99401.htmlhttp://blog.csdn.net/liveas/article/details/5794100/* ID: wangxin12 PROG: kimbitsLANG: C++ */ #include #include using namespace std;i原创 2012-08-23 14:59:33 · 332 阅读 · 0 评论 -
USACO Shaping Regions,难题,离散化,矩形切割,逆序染色
恶心死的题目,暴力法超时超空间。思路:从最上面一层(N)到第一层(0,白色层)开始分析着色的rect,使用cut函数思路是第i层的rect和他上面的所有rect进行对比, 如果本层的rect遇到有一部分被上层的rect覆盖,就把覆盖掉的部分给去掉;直到最后的部分是没有被覆盖的,就将其记载;/* ID: wangxin12 PROG: rect1LANG: C++ */原创 2012-08-22 02:44:52 · 390 阅读 · 0 评论 -
USACO Bessie Come Home,最短路径,Dijstra
这题就用最原始的Dijkstra算法/* ID: wangxin12 PROG: comehomeLANG: C++ */ #include #include #include #include using namespace std;int P;int map[52][52]; // A ~ Z 0 - 25, a ~ z 26- 51int dist[52];原创 2012-08-07 16:25:42 · 735 阅读 · 0 评论 -
USACO The Tamworth Two
我的思路很简单,建立一个类来模拟cow和farmer的行为,每一step这两个类行动一次probe,行动完后比较x,y坐标,如果一样说明走到一起,输出步数;如果步数大到一定程度(这里取的10000)还没相遇,说明永远不可能相遇,输出0行动函数probe是这样,如果前面一格可以走,forward一步;如果前面不能走,转向turn我的代码:一个小缺憾,x,y表示的横纵坐标和习惯相反,x是纵原创 2012-08-07 02:54:04 · 477 阅读 · 0 评论 -
USACO Preface Numbering
我很不争气的用了最简单的枚举,觉得自己在对照string数组分析字母的函数处理上还是不错滴/*ID: wangxin12PROG: prefaceLANG: C++*/#include #include #include #include using namespace std;int M, D, C, L, X, V, I;int N;static string原创 2012-07-20 01:58:03 · 462 阅读 · 0 评论 -
USACO Ordered Fractions
我的思路:枚举所有的分数,判断其是否是最简(分母分子最大公约数=1),用一个数列记录所有最简分数,然后用快排排序。/*ID: wangxin12PROG: frac1LANG: C++*/#include #include #include #include #include using namespace std;class Fraction {public:原创 2012-06-25 01:11:30 · 301 阅读 · 0 评论 -
USACO SuperPrime Rib
竟然第一次就通过了,难得啊~~~思路是这样的: 对每一个SuperPrime,最高位在{2,3,5,7}里挑,其他位在{1,3,7,9}里挑。所以在构造n位的SuperPrime数的时候,从高位(第一位)到低位(第N位),采用递归;并且分level == 1 , level > 1两种情况。 level == N + 1 的时候结束。见代码/*ID: wangxin12PR原创 2012-06-18 22:22:09 · 315 阅读 · 0 评论 -
USACO Prime Palindromes
两个double之间取余,要用到math.h里的函数取整与取余double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分double fmod (double, double); 返回两参数相除的余数两个double之间判断是否相等,不能用==,目前最优的方案是做差。 if (fabs(result1 - re原创 2012-06-17 16:02:04 · 292 阅读 · 0 评论 -
USACO Packing Rectangles [cheated]
不会做,枚举麻烦,这题看着烦,先cheat过去以后再写参考:http://zqynux.iteye.com/blog/616878http://www.cnblogs.com/sunzhenxing19860608/archive/2011/07/07/2100246.htmlhttp://blog.sina.com.cn/s/blog_4e4c6ca501000cpt原创 2012-06-16 16:38:33 · 316 阅读 · 0 评论 -
USACO 1.3 Calf Flac
代码很挫的,不过是自己借鉴大牛的思路后写的……/*ID: wangxin12PROG: calfflacLANG: C++*/#include #include #include #include #include #include #include using namespace std;#define MAX 20原创 2012-05-30 21:41:10 · 411 阅读 · 0 评论 -
USACO Number Triangles
动态规划。有个疑问,定义 两个数组int initNum[1005][1005];int sumNum[1005][1005] ;的时候,如果放在main()函数里,运行报错,放在文件开头,运行正常,不解……/*ID: wangxin12PROG: numtriLANG: C++*/#include #include #include using n原创 2012-06-17 00:56:53 · 255 阅读 · 0 评论 -
USACO Prime Cryptarithm
----------------------/*ID: wangxin12PROG: crypt1LANG: C++*/#include #include #include #include #include #include #include using namespace std;#define MAX 20001vector num; bo原创 2012-06-01 00:56:52 · 219 阅读 · 0 评论 -
USACO the clocks
在摸索这个是枚举 还是 DFS……/*ID: wangxin12PROG: clocksLANG: C++*/#include #include #include #include #include #include #include #include #include #include #include #include using n转载 2012-06-14 16:37:19 · 386 阅读 · 0 评论 -
USACO Sorting A Three-Valued Sequence (sort3)
我的思路是:记录下1,2,3的个数one, two, three,在前one个数里查,查到不是1的就从后面找到1进行swap。如果在前one个位置里找到2,就从two的带状位置里找1;如果在前one个数里找到3,就从three的带状位置里找1等前one个数全整理为1,就在two的带状位置里找3,进行swap。/*ID: wangxin12PROG: sort3LANG: C++原创 2012-06-25 22:21:09 · 539 阅读 · 0 评论 -
USACO Healthy Holsteins
深搜,注意剪枝/*ID: wangxin12PROG: holsteinLANG: C++*/#include #include #include #include using namespace std;int V;vector need;int G;int feeds[15][25] = { 0 };bool selected[15] = {fa原创 2012-06-27 17:39:21 · 270 阅读 · 0 评论 -
USACO Hamming Codes 求汉明距离
参考思路:http://www.cnblogs.com/huachiwoo/archive/2011/05/03/2034999.html求汉明距离:http://www.cnblogs.com/huachiwoo/archive/2011/05/02/2034158.html http://www.cnblogs.com/huachiwoo/原创 2012-06-29 17:18:43 · 4072 阅读 · 0 评论 -
USACO Overfencing,BFS,FloodFill
这一题用floodfill吧,思路还是比较简单的——先沿着四周边界找两个出口,找到出口后就使用floodfill来标记dis数组标记函数可以使用BFS,也可以使用递归recursive的函数有人说使用递归会栈溢出,但是只要注意剪枝,是可以成功通过的,如下面第二个mark函数我的代码:/* ID: wangxin12 PROG: maze1LANG: C++ */原创 2012-08-04 15:33:53 · 308 阅读 · 0 评论 -
USACO Longest Prefix,DP
---------------------------------------------------------------------------------Longest Prefix IOI'96 The structure of some biological objects is represented by the sequence of their constituen原创 2012-08-03 14:46:08 · 345 阅读 · 0 评论 -
USACO Cow Pedigrees, DP经典入门讲解
这一篇关于DP的经典入门讲解非常好: http://www.cnblogs.com/SDJL/archive/2008/08/22/1274312.html#1976963参考: http://www.cnblogs.com/void/articles/2332513.htmlUSACO: 讲解这是一个DP问题。我们所关心的树的性质是深度和节点数,所以我们可以做这样一张表:ta原创 2012-08-01 23:04:17 · 484 阅读 · 0 评论 -
USACO Controlling Companies DFS
参考: http://blog.sina.com.cn/s/blog_62213fa10100g4kx.html我的代码:1. 用stock[i][j]数组存储第i个公司对第j个公司掌控多少股份2. m公司 原始的子公司c(第一级子公司),当发现stock[m][c] > 50时,要对c公司进行DFS,并且讲c公司控制的股票stock[c][i]加到stock[m][i]上;每一个拥有原创 2012-08-01 16:25:17 · 755 阅读 · 0 评论 -
USACO Party Lamps
参考:http://hi.baidu.com/enlighten09/blog/item/d9e9dac9147d260a01e9289d.html是个可以很简单,仔细分析也可以很复杂的题目首先,最后的灯亮的情况只有8种。每个操作只有做了和没做两种状态,所以4个操作就只有16种。把这16操作都实现一遍,就会发现只有8种最终状态了。分别是:最终状态原创 2012-07-17 15:35:10 · 418 阅读 · 0 评论 -
USACO Runaround Numbers
runaround numbers 肯定不包含0,数字不重复两个技巧把一个int 型整数按数字存入 char 数组, 然后将char 数组 改变为int 数组——sprintf函数 sprintf(numstr, "%d", n); size = strlen(numstr); for(i = 0; i < size; i++) { numdig[i] = numstr[i原创 2012-07-15 22:29:59 · 342 阅读 · 0 评论