摘要: 原题链接:http://poj.org/problem?id=2287 田忌赛马的解法之一是贪心算法的变形,如果是朴素的贪心可能会出错,因为不满足直接贪心的条件。 提供一种解法如下: (1)、对两个数组排序。 (2)、对田忌的马所在数组从小到大遍历,对每一匹马来说,可以找一个尽量大的对手并且击败对手。因此对王得马从大到小遍历,如果遇到比田忌的马速度慢的,则田忌赢一场,将双方的这两匹马标记为已访问。设赢t场。 (3)、对田忌的马再次遍历,对每一匹马遍历王得马的数组,寻找一匹没有使用的马使他们的速度相等。如果找到,双方的马标记为已访问。 (4)、对田忌或王的马遍历,设还没有访问的马的个数为k。 . 阅读全文
posted @ 2011-05-25 21:44 like@neu 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 我对博客园已经非常失望了。代码也不能和文字分开了。不知道是出了什么毛病。挺讨厌乱七八糟! 这个题是典型的dp,由低往上递推。公式很简单。需要注意一个地方就是负负得正。不仅需要保存一段区间的最大值,也需要保存最小值。关于这一点我也是看了discuss后才明白的。至于为什么要这样,想想也能想明白。就不多说了。代码共参考:#include<iostream>#include<fstream>#include<algorithm>using namespace std;const int MAX = 50 + 10;const int INF = 3000000;i 阅读全文
posted @ 2011-02-26 20:59 like@neu 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 博客园速度非常不稳定,可能要考虑换地方了。虽然我非常喜欢博客园的模板和气氛。 这个题早就知道是怎么做的了。先求出回文数在再判断是不是素数。关键是不知道区间,那就把所有的全部求出来。虽然可能会超时,但是如果使用点技巧的话还是没问题的。 如果先筛素数的话开一亿的数组90m,肯定超内存了。据说可以只开一千万的,因为偶数就不用判了嘛。这个具体怎么实现尚不知晓。usaco的判题机构貌似极其严格,就连伪素数测试都能挑出错来。就直接拿模板上的素性测试过了。自己写的暴力测素数函数超了。代码贴一下。日后再整理吧。这两天都没怎么写解题报告了。/*ID: like_091PROG: pprimeLANG: C++. 阅读全文
posted @ 2011-02-24 22:23 like@neu 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 本题纯属水题,一看5s的时限就直接暴力。1Y!/*ID: like_091PROG: ariprogLANG: C++*/#include<iostream>#include<cmath>#include<fstream>using namespace std;const int MAX = 250;int d[MAX * MAX * 2 + 1], tem;struct Node{ int x, y;}node[10001];int cmp(const void *a, const void *b){ Node *c = (Node *)a; Node * 阅读全文
posted @ 2011-02-23 22:45 like@neu 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 都说是个简单题,可能是我好久没编什么,退化了,连别人写的bfs,dfs都看不懂。悲剧!这个题我一开始想到直接枚举应该不会超时,因为只是4^9的规模。但是由于剪枝不会,位运算不会等一系列不会指挥果断悲剧。翻阅了无数解题报告之后竟然没看懂别人的意思。后来知道了答案只有一个根本无需判重,才在一个前辈的代码的帮助下勉强ac,悲剧的usaco,好难呀!bt题也不少。本代码主要参考别人的。/*ID: like_091PROG: clocksLANG: C++*/#include <iostream>#include <fstream>using namespace std;int 阅读全文
posted @ 2011-02-23 22:41 like@neu 阅读(300) 评论(0) 推荐(0) 编辑
摘要: TOJ第二题:http://acm.tju.edu.cn/toj/showp3821.html 两天没有写东西了,这两天比较纠结,发现什么都忘了。难道寒假就是个悲剧? 这个题是一个简单题。给一个字符串,求排列是素数的个数。不说了,贴代码:#include<iostream>#include<algorithm>#include<cmath>#include<string>using namespace std;const int MAX_SIZE = 10000000;int num[MAX_SIZE + 1];int value[5000];v 阅读全文
posted @ 2011-02-23 22:35 like@neu 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 这应该是usaco上遇到的第一个BT题,而且是极其BT。硬是让我纠结了一整天。尤其是最后一种情况,种类繁多,参考了大牛的结题报告才过的。各种WA。刚开始活生生写了300多行代码。AC的时候还有180行。肯定还有很大的优化空间。被此题搅的脑残了,懒得改进了。想不出IOI三个小时怎么写得出来。看来都是牛人。佩服!  我开始觉得这个题应该就是枚举,但是要细心。因为只有4个矩形,4!X 2^4;空间要求不大。直接硬搜。但是主要是最后一种情况比较复杂,需要分为5类考虑。     ( 1 ) h[2] == h[3]; ( 2 ) h[2] >= h[0] + h[3]; ( 3 ) h[3] & 阅读全文
posted @ 2011-02-22 11:04 like@neu 阅读(326) 评论(0) 推荐(2) 编辑
摘要: 最多就9个数,直接一层一层枚举就行。注意判断出现的数的每一位都要出现在集合中。 阅读全文
posted @ 2011-02-21 11:03 like@neu 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 原题链接:http://acm.tju.edu.cn/toj/showp3817.html  第一次上toj做题,今天开始感觉这个题想仔细点应该是不难的。但是写好了以后上去直接攒了七八个wa,怎么想也想不出哪儿错了。直接搜解题报告也没有。因为是今天新出的题吧。晚上几乎使上了各种手段包括各种外援后终于知道哪儿错了。费劲九牛二虎之力改完后ac,真的是折磨人啊。这种BT模拟题是最要命的。  下面讲一下这个题的解法,给一些棍子,摆出最大数和最小数。很容易想到最大就是位数尽量多的情况下,每位的数值尽量大。最小就是相反。求最大数很好求,因为只要摆尽量多的1,如果不是偶数,就摆一个7,再加余下的1。把最小数 阅读全文
posted @ 2011-02-20 22:45 like@neu 阅读(318) 评论(0) 推荐(1) 编辑
摘要: 经过两个多小时的coding,终于磕磕绊绊的过了。其实这个题难的地方不是解法,而是文件的输入输出。因为文件不是在一行,所以以前知道的那些从文件里面输入输出的函数全都不好使。eof这个函数以前没见过,弄了好久才会。接受能力有问题。代码主要是借鉴lrj大哥的,懒得写了。还抄错了,wa了好久。简单题目主要是考察细节的地方,如果比赛肯定遇不到这种简单题。如果说刷通usaco算入门的话,那就不足为奇了。 阅读全文
posted @ 2011-02-20 19:39 like@neu 阅读(283) 评论(0) 推荐(1) 编辑
摘要: 第一感觉就是这个题应该是一个dp,分析了好久状态转移方程,似懂非懂,反正程序是不知道怎么下手,dp对我来说是最难得部分之一。看了下这一节应该是贪心算法才对。后面想了想,用了个猥琐的解法。把数组排序一遍,要是相邻的两个元素是a=b+1的关系,他们就共用一根木棒,因为即使后面那间用一根新的木棒也不会省长度。这样就把数组化成了几块。再说那些相邻的数之间还有数存在的。把他们的距离保存下来。然后排序,设有x块,有y根木棒,那么还要消除x-y个空隙,直接把这x-y个空隙的长度加到总长度里面,ac。 阅读全文
posted @ 2011-02-20 11:36 like@neu 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 简单贪心,一个快排就够了。 阅读全文
posted @ 2011-02-19 23:56 like@neu 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 与上题一样,改改就1Y了。 阅读全文
posted @ 2011-02-19 23:38 like@neu 阅读(236) 评论(0) 推荐(1) 编辑
摘要: USACO很多函数都限制掉了,不让用,所以很多库函数都会WA,后面找的模板和库函数都用不上了,逼我直接写了个最脑残的程序,输入输出还输反了。无限wa。总之要小心,库函数不要随便用。特别是比较生疏的,wa的可能性比较大。可能网站的目的就是让自己从头开始写,什么都得自己写。比如itoa,goto等都不提供。纯粹的编码。strlen都不让用。  因为这个题是处理数,所以平时那些对付字符串的函数都用不上。把数字转化成字符串其实有函数,但是绝对不好使。网站不会这么轻易让你ac的。这是我用字符串接受和保存进制转换的代码:判断字符串是不是回文串的比较简单:  最后就是说一下itoa这个函数,百度到的,感觉挺 阅读全文
posted @ 2011-02-19 23:18 like@neu 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 这个题简直就是赤裸裸的map,虽然没用过,但是很明显是,也不难,看一眼就会了。因为有可能会给12个数字,所以肯定不能枚举组合吧。文件里面一共才五千个名字,一次循环简直根本花不了什么时间。只要一个字符串一个字符串检查,再决定是否输出就够了。基础题,不多说了。 阅读全文
posted @ 2011-02-19 16:16 like@neu 阅读(203) 评论(0) 推荐(1) 编辑