acm
文章平均质量分 64
Bearox
浙江 永康
展开
-
USACO-2.1.1- The Castle
题目链接题目大意: 现在,有一座城堡,城堡里面有很多个房间。给定这个城堡的地图,让你求这个城堡有多少个房间,最大的房间面积是多大。然后,如果可以拆掉一堵墙,那么拆掉哪堵墙,可以使得最大的房间最大化。输出拆掉一堵墙后,可以得到的最大房间面积,以及这堵墙的位置。 输入: 第一行有两个数字,表示有M列,N行 之后有N行,每行有M个数字,表示一个空间,值为0-15 其中1表示该房间西边有墙,2表原创 2017-04-17 15:32:52 · 885 阅读 · 0 评论 -
PAT1054
好久没有写代码了。因为要考研,看到进入复试有个机试,就想着平时没事也做做题目吧。这不做不知道一做吓一跳啊。一个简单的排序都能调试半天。还好经过几天的努力,终于正确提交了一道题目。用到了一点点哈希。题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1054题目的大概意思:输入一堆数据。第一行M,N代表M行N列。然后直接输出里面最多的数据原创 2014-03-21 20:27:35 · 1019 阅读 · 0 评论 -
ZJU.PAT-1010(二分查找)
题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1010原创 2014-04-15 23:19:56 · 1271 阅读 · 0 评论 -
usaco-1.3.1-Mixing Milk
题目很简单,这一节好像都是贪心算法的题目吧。以前刚开始做题目的适合贪心都觉得理解起来有那么点累,现在做起来感觉特别轻松,看来和以前比进步还是挺明显的。虽然前面的题目都比较简单,但是一定要踏踏实实的做题和记录。不能好高婺远。这一次说什么也要坚持把usaco的题目全部做完。 题目链接:http://cerberus.delos.com:790/usacoprob2?a=BjvFWp72原创 2014-03-29 16:27:51 · 879 阅读 · 0 评论 -
usaco1.2.6 Dual Palindromes
这道题目和前面1.2.5那道题目感觉没什么区别。都是进制转换然后看看是不是回文数,换汤不换药,不多说了。 题目链接:http://cerberus.delos.com:790/usacoprob2?a=uiapzDLYMdm&S=dualpal 代码如下: /*ID:sunexio2PROG:dualpalLANG:C++ */#inclu原创 2014-03-28 21:40:35 · 809 阅读 · 0 评论 -
usaco-1.3.2-Barn Repair(贪心算法)
这道题目开始变得就不那么容易就能想到了。好吧,我承认我是瞄了一眼题解才找到思路的。因为前面说道这一章是讲贪心算法的。理所当然地想到了这道题目也要用到贪心算法,但是想了好一会还是没有思路。最后看了一下题解。思路如下: 首先假设就用一块挡板就挡住了所有牛所在的牛棚(有牛的牛棚),这样所用的木板的长度肯定是最长的。然后接下去就是贪心算法了。变成两块的话怎么让木板总长度最短呢?那么原创 2014-03-29 22:20:02 · 1084 阅读 · 0 评论 -
C++ string总结(适合新手)
C语言中的字符串处理起来很麻烦,有很多限制。最主要的应该就是长度是固定的而且结尾的'\0'很容易导致错误。而string用起来就很方便。平时也总是用到string,现在感觉用得熟悉一些了,就稍微总结一下常常用到的一些用法。 首先要用string要包含头文件 。至于用法我觉得描述是说不清楚的。直接看下面的代码吧。#include #include #include us原创 2014-03-28 17:11:22 · 1053 阅读 · 0 评论 -
(简单哈希)POJ1200
题目链接:http://poj.org/problem?id=1200题意:第一行给出两个数,第一个数 n 表示连续字串的长度,第二个m为下面输入的字符串中含有多少个不同的字符。第二行输入一串字符。问该字符串中多少种长度为n的连续字串。因为字符串中最多有m种不同的字符,那么只需要把字符串转换成相应的m进制数,然后映射到哈希表中。一开始我把num数组全部初始化为0,错了一次(错的数据: 1 5原创 2013-05-08 09:41:35 · 1165 阅读 · 1 评论 -
(哈希)POJ2785
题目链接:http://poj.org/problem?id=2785题目的大意是:从四列中分别选取一个数使得总和为0,问一共有多少种取法。注意如果第一列有两个0,用第一个0和第二个0是两种不同的取法。感觉直接做肯定会超时所以没有去暴力。上网查了解题报告说是哈希。第一次接触哈希,看了好多资料(有点浮躁,总是看不进去)。最后终于写出来了。下面是几个注意点 :首先哈希会存在冲突,所原创 2013-05-07 12:12:39 · 1151 阅读 · 0 评论 -
POJ1160
题目链接这倒题目对我来说感觉很难。想了很久都没有想到,后来看了一份ppt才敲出了代码。这是那个PPT的链接:PPT链接这里面讲的很详细,照着它说的推一下就能写出程序了。关于最后一页的优化我没有做,不过我感觉应该不会很难。下面是我A的代码,效率有点低。以后有兴致了,再试着不参考,写一下优化过的代码,看看自己是不是真的理解了。/*Source CodeProblem: 1160原创 2013-03-31 12:16:40 · 985 阅读 · 0 评论 -
USACO1.2.2 - transform
复习累了就做做题目,今天这个程序让我很好的感受到了把一个程序写成不同的功能模块的好处。(虽然我这个小程序都不能称为什么模块化)。这个题目我错了好多次,但是还好我每种变换都对应了一个函数,所以找起错误了很方便,而且总体的思路也比较的清晰。usaco的题目都可以在nocow上面找到翻译,所以我就不再赘述题目的意思了。题目链接:http://cerberus.delos.com:790/usacop原创 2014-03-22 17:38:51 · 1005 阅读 · 0 评论 -
USACO 1.2.2 Milking Cows
题目链接:http://cerberus.delos.com:790/usacoprob2?a=usTFRRcEHRQ&S=milk2翻译的话nocow上面就有,我就不翻译了。 我的思路是先按照每个农民的开始工作的时间排序,然后判断哪段时间最长。其实这道题目并不难,但是错了好久。总是有一些地方没有想到,思维不够紧密。下面直接上代码。/*ID: sunexio2LANG: C++原创 2014-03-21 22:06:41 · 1223 阅读 · 0 评论 -
USACO-1.2.3 Name That Number
题目链接:http://cerberus.delos.com:790/usacoprob2?a=Emp6KiAXNKv&S=namenum一看到这个题目就想到了map和mutimap。刚好可以学习一下容器。但是不知道为什么就一直错。后来才看到原来是数据坑爹了,这个数据太坑爹了。仔细看才发现它的字母表里面没有Q,导致我前面一直错。后来改过来就对了。/*ID:sunexio2PROG:na原创 2014-03-23 16:14:08 · 1104 阅读 · 0 评论 -
USACO-2.1.2- Ordered Fractions
题目链接 题目大意 给定一个数字N,按照从小到大的顺序输出所有分母小于等于N的,小于1的真分数。 样例输入 5 样例输出 0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1解题思路 这道题的规模很小,可以直接遍历找出所有的分母小于等于N的真分数,排序后输出。 代码/*ID: LANG: C++PROG: frac1*/原创 2017-04-18 10:32:43 · 499 阅读 · 0 评论 -
USACO-1.5.2-Number triangles
题目链接:http://train.usaco.org/usacoprob2?a=zGnNu71M0aJ&S=numtri题目大意:算这个数字三角阵的最大值,从顶向下,一个数字可以加它下方或者右下方的数字。是一道经典的贪心算法的题目。放在这一个小结里好像主要是为了掌握滚动数组的使用,就是k ^ 1的那个部分吧。解题思路:经典的贪心算法题,算到每一行的最大值。我对这道题目的印象特别深刻。代码如下:#i原创 2016-09-28 17:16:37 · 771 阅读 · 0 评论 -
USACO-1.4.3-Mother's Milk
Mother’s Milk解题报告题目链接:http://train.usaco.org/usacoprob2?a=JfbzzkHQu8y&S=milk3题目大意:FJ有三个牛奶桶,分别有A, B, C的容量。每个桶的容量都在1-20之间。一开始的时候A和B的桶是空着的,C中装满的牛奶。然后,他会把这些牛奶倒来倒去,在倒牛奶的过程中不会有任何的牛奶损失。一旦他开始倒牛奶,要么当前桶里的牛奶全部倒完了原创 2016-09-28 10:25:01 · 690 阅读 · 0 评论 -
Usaco-1.4.2-Arithmetic Progressions
题目链接:http://train.usaco.org/usacoprob2?a=Jji8iKCcb1X&S=ariprog 题目大意:找给定长度的等差数列,使这个等差数列的每一个元素都满足a=p^2 + q^2.输入n表示等差数列的长度,m表示p, q的取值范围,输出所有满足条件的等差数列的首项和公差。输出顺序首先是公差从小到大,然后才按照首项排序。解题思路:首先想到的就是打表,把所有的平方和打原创 2016-04-15 20:27:36 · 1249 阅读 · 0 评论 -
USACO-1.3:Combination Lock
感觉有一年没有做ACM的题目了,以前熟悉的一些算法也都忘得差不多了。感觉就是大概知道自己以前会过。甚至已经有半年多没有真正地写代码了,就想着回头把USACO做完吧。突然着手编程,感觉有点吃力。这算是一个比较简单的题目,但是还是花了一个下午加一个上午的时间才搞定。 题目链接 题目的意思: 一个农夫想锁住它的牛,设置了一个有三个数字的锁。牛要打开这个锁就能逃出去。给定一个数字N,锁上的每个数字可以原创 2015-10-19 12:39:23 · 803 阅读 · 0 评论 -
HD-小数化分数2
nocow已经瘫痪两三天了。有原创 2014-04-10 10:09:30 · 959 阅读 · 0 评论 -
usaco-1.3.4Prime Cryptarithm
题目的意思是给定数字,求满足原创 2014-04-07 20:45:04 · 1032 阅读 · 0 评论 -
usaco-1.2.5 Palindromic Squares
最近都复习不进去。考研的热情感觉忽然都没了。为了不让自己颓废下去,就让自己做几道题。今天做的这道题目很简单,其实就是进制转换。而且数据量不大,只需要穷举就好了。一开始我还想着转换了进制以后不是需要每个进制都写一个乘法么?还好很快就想到了先在十进制下乘好了再做进制转换就好了。 题目链接:http://cerberus.delos.com:790/usacoprob2?a=H7jN原创 2014-03-26 22:50:37 · 888 阅读 · 0 评论 -
usaco-1.3.4 Calf Flac
这道题目读完我就觉得这道题目很烦。搞得我都不想做了,但是还好。停了这么多天总算把这个题目干掉了。这个题目主要是输入特别恶心。输入的数据有回车,有空格所以不能用cin。C语言的文件操作可以说我是根本没有掌握住过。看了一下解体报告的代码,不是看他的思路而是看他的输入是怎么实现的。这道题目对我来说应该是有收获的,至少让我知道了scanf和printf的重定向。 我的解体思路是把所有的字原创 2014-04-03 16:33:51 · 1013 阅读 · 0 评论 -
hdu1717
动态规划做得好腻啊!但是前几天的小测试,来了一个动态规划,结果还是搞不出来。换换口味,就去做杭电的题目,结果wa的好久。好不爽啊,HDU1717挺有趣的一个题目,把小数转换成分数。一直错的测试数据是0.000(5)就是前面算出来是0的。说一下循环小数转换成分数的过程吧,这个在初中的时候有学过。就是乘一个数然后剪掉循环部分,这个还是来看个例子你就能明白了:比如设x=0.32(67)原创 2013-04-18 16:26:32 · 1031 阅读 · 0 评论 -
POj3230
好久没有做题目了,最近刚开始玩ubuntu爱不释手啊。导致我的A题大业都停滞不前啊,还好今天终于有接着做题了。今天早上看了这个POJ3230一推敲是一个动归题,状态也很好确定f[i][j]表示第i天在第j个城市能得到的最多的钱。但是还是wa了好多次,好桑心啊。原来是因为第一天的情况没有考虑清楚,第一天肯定是从第一个城市出发的,所以上一个城市的起始点肯定是第一个城市,已经无需遍历了。而以后的几天原创 2013-04-13 09:09:44 · 823 阅读 · 0 评论 -
POJ 2192
题目的意思是给出三个字符串,问你前面两个字符串能不能合并成第三个字符串。注意一个字符串里的字母的顺序是不能颠倒的。刚看到这道题目觉得很简单,可是开始写了发现要用动归。想了好久都没有思路。去网上看了一下解题报告,看到简单的一句话就有了思路:f[i][j] 表示第一串字符串的前i个和第二串字符串的前j个是否能组成第三个字符串的前i + j个。然后就要注意初始化的问题,这个地原创 2013-03-19 14:41:21 · 864 阅读 · 0 评论 -
POJ1125
题目链接:点击打开链接不枉我一早起来看最短路径啊,一下子就接受了。这道题就是一道有向图求最短路径。我用的是Dijkstra算法,遍历每一个点为起点。求出每个点到他最远的点的距离。注意这道题用的是最短路径的方法,其实意思是一个人要把信息传达给大家,但是好像这个人可以同时传达信息给他所能传达到的人。比如:1 传给 2和3的时间都是 3分钟的话,那么1传话给大家的时间就是三分钟。但是不同原创 2013-04-01 08:16:05 · 716 阅读 · 0 评论 -
POJ 1080 HUMAN GENE FUNCTION
fi][j] 表示 s1到i s2到j时能达到的最大的相似度。有三张情况。s1[i] 与s2[j] 匹配。s1[i]与‘-’匹配。s2[j]与‘-’匹配。取三者中最大的,还有就是初始化的时候需要注意并不是单纯的把全部都置为0就行了。空的时候是负的,就是说for(int i = 1; i <= s1.size(); ++i) f[i][0] = f[i -原创 2013-03-17 19:17:02 · 930 阅读 · 0 评论 -
POJ 1088 滑雪
这几天做的动态规划题差不多都是最长公共子序列的类型的。而这道滑雪题和前面做的那些题目就有些不一样。这一题不仅仅是动态规划,还用到了递归。一开始看到这道题就知道是动态规划,只是苦于没有思路。查了一下解题报告,看到是动归+递归就有了思路。然后很快就写出了代码。该注意的几点是初始化的时候,f.now 应该是等于1,而不是0,只有自己一个点的话长度是1. 还有就是在动归的部分,不是一次就够了。需原创 2013-03-18 12:42:52 · 852 阅读 · 0 评论 -
POJ1050
题目链接:POJ1050题目大意是在一个矩阵中求能使和最大的子矩阵,自己想了好一会但是没想出来,后来去找了解题报告。大致就是把一个矩阵压缩成一维的数组,然后求最大的字串和。比如3 1 25 7 81 2 3三行压缩成一行就成了9 10 13然后,用暴力,从不压缩,到全压缩,然后从第几行开始压缩。最后找出那个最大值就行了。提交的代码里面很多的代码时间比我的代码还少原创 2013-03-29 12:33:06 · 853 阅读 · 0 评论 -
POJ-1159(Palindrome)
做了一些动归题,感觉大同小异。这道题目的思想还是最长公共子序列。题目大意:求最少在所给字符串中插入多少个字符,可以让这个字符串顺着读和逆着读是一样的(变成回文的字符串)。中心思想是找出尽可能多的已经配对好的字符。注意就好像例题一样如果中间有没有配对的字符,那么是可以少一个的。所以就要判断在已配对的字符最多的情况下,配对字符最中间的那对的之间有没有夹着未配对的字符,有的话可以少一个配对。原创 2013-03-15 13:44:47 · 730 阅读 · 0 评论 -
POJ1157
题目链接:POJ 1157这道题和数塔差不多,大概意思就是花瓶里面插花。然后,要按顺序放入花瓶中。放入不同的花瓶中有不同的美观值,让这个值最大。明显的动归题目。错了一次。错在那个_max值更新的时候更新错了。因为不允许有花是空着没插的,所以第二束花插在第一个花瓶中是没有意义的。176K 0MS看了一下算写的最好的了!纪念一下哈:/*Problem: 1157 User: Bear原创 2013-03-29 11:38:42 · 898 阅读 · 0 评论 -
POJ2250(compromise) 解题报告
#include#include#include#include#include#include#includeusing namespace std;class DD{public: int count; string s; DD();};DD::DD(){ count = 0; s = "";}vector v1, v2;int main()原创 2013-03-14 19:25:28 · 978 阅读 · 0 评论 -
ZOJ 1610 解题报告
#include#include#include#define N 8000#define M 20005using namespace std;int temp;struct Seg{ int L, R, color;}seg[M], seg1[M];void CreateTree(int n, int l, int r){ seg[n].L = l; seg[n原创 2012-12-01 10:37:49 · 737 阅读 · 0 评论 -
POJ3356
这道题一开始做不出来,去查解题报告都说很简单。但是自己分析的时候却没弄清楚。首先这道题应该不是用短的那串去减掉最长公共子序列(没有严格证明过,只是画了一下感觉不是。)状态转移一开始也没理清,睡了一觉,醒来有如神助一下就写出来了。if(s1[i - 1] == s2[j - 1]) f[i][j] = min(f[i - 1][j - 1], f[i][j - 1] + 1, f[i原创 2013-03-20 18:47:59 · 719 阅读 · 0 评论 -
POJ1163
数塔问题,很简单,本来不想做了的。后来想想要追求写得最好。看了一下,过的状态有大神的代码运行时间是0MS。。。我的是32MS过的。但是我的内存是216K, 0MS的大神我看到最少的内存是 404K吧,暂时没看到内存开的更少的。但是0MS的思路真的想知道啊,求大神留代码.下面是我的代码:#includeusing namespace std;int f[2][110];原创 2013-03-20 19:15:17 · 728 阅读 · 0 评论 -
HDU 4504
昨天晚上腾讯马拉松编程的第一场比赛的最后一题:昨天晚上没能做出来,看上去感觉是背包不错。但是想破头皮都没有想出来。今天上午发现已经有解题报告了,看了解题报告才知道原来这种算法叫做背包最优方案数。不枉做了一晚上啊,总算是有点收获了。下面是我AC的代码。#include#include#includeusing namespace std;int main(){ int原创 2013-03-21 22:37:08 · 876 阅读 · 0 评论 -
POJ 1631
题目链接:POJ 1631(最长上升子序列)看了题目以后就知道这是最长上升子序列,本来想跳过去不做了。后来,觉得不能自满,于是就又敲了一边最长上升子序列的代码。结果TL了。这下囧了!一直不知道最长上升子序列还能优化的。百度了一下,原来很简单。开一个数组d[],用d[i]表示长度为i的最小的那个数,这样可以大大地减小重复的次数。而且这样做空间复杂度还是一样的。不难发现d[i]十一个递增的数列原创 2013-03-27 19:46:27 · 948 阅读 · 0 评论 -
HDU 4502
题目链接:HDU4502先排序再DP,f[j]表示第j天结束最多能得到多少的工资。这个有点类似HDU的4512那个,但是这个题目比那个简单。直接上代码吧。#include#include#includetypedef struct{ int s, e, v;}Job;int cmp(const void *a, const void *b){ Job *c,原创 2013-03-26 22:27:13 · 785 阅读 · 0 评论 -
HDU 4503
题目的链接:HDU 4503一开始题目的意思理解错了,以为是数字相等就代表关系相同。后来才知道,数字代表他有几个朋友,而且朋友关系是互相的。根据题目的意思是选全部都是朋友或者全部都不是朋友的,那么他的对立面就是两个人是朋友另外一个不是。然后1-发生这种情况的概率就好了。注意点是: 1 选择朋友的时候是选择一个,因为自己也是一个。 2 选择不是朋原创 2013-03-26 10:01:06 · 1250 阅读 · 0 评论 -
USACO-3.1.7 stamps
第一次做usaco,别人推荐我做的。一个完全背包是否能装满的问题,不习惯那里的输入输出。不过最后还是A了,感觉usaco挺好的,有时间一定要去全都做完。下面是代码:/*ID: sunexio2PROG: stampsLANG: C++*/#include#include#includeusing namespace std;bool f[2001000];in原创 2013-03-25 14:22:58 · 871 阅读 · 0 评论