自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 soj1093伊拉克

背景:这题做了大概五个小时,每次都在标记上出错。 思路:回溯,我先把军舰的长度按照由长到短依次排列,然后依次检索,特别注意变量l的使用,正是这个变量的使用,我的一段混乱代码才可以过。             题目中的数据很容易过,如果实在找不出错误,又不知道如何出数据,可以把第一组和第二组数据结合起来(一般人我不告诉他,哈哈)。代码如下,请自行理解。 学习:回溯算法:从一条路往前走,能进则进

2015-03-02 22:59:54 850

原创 soj1084滑雪比赛

背景:没考虑到海拔还可以为0和负,所以就一直wrong了好久。 思路:dfs+记忆化搜索+递归。 学习:记忆化搜索。#include #include using namespace std; int area[52][52],memory[52][52]; int m,n,max_time,k; int judge(int i1,int j1,int i,int j) { if(

2015-02-22 16:08:01 862

原创 soj1080生化危机三

背景:由于对map使用的不熟悉,先一直无法编译通过,当纠正了map的错误后,一次ac。 思路:先用map对每个怪物需要消耗的子弹和一个怪物会伤害人多少血进行映射,然后就是简单模拟了。 学习:map的简单使用。#include #include using namespace std; map xue,zidan; int l,a; void judge(char guaiwu,int g_

2015-02-13 10:07:16 1261

原创 poj1573Robot Motion

背景:一次ac,但做这种没有中文的题做多了,已经严重让我怀疑我自己了,毕竟英语太烂,读懂题意就要读好久。 思路:主要用两个数组模拟整个path,一个用字符串数组来模拟出整个命令,然后用一个整型数组初始化为0,每次走一步就标记一下,这样就能很快的找到结束条件了。 学习:懂得简化代码,把各种情况相同部分的代码写到一起。#include #include #include using name

2015-02-11 08:56:26 764

原创 poj2632Crashing Robots

背景:这道题不涉及算法,只是普通的模拟。 思路:用结构体存储一个机器人的横坐标,纵坐标,还有他的方向,我在方向这个问题上运用了一点小技巧,那就是用0,1,2,3分别代表N,W,E,S这样对于处理L和R就非常的方便了。最主要的就是在处理F命令中既要注意机器人在移动过程中遇到其他机器人,又要注意机器人是否越界,在这方面,可以运用一个数组模拟出整个工厂,每个位置初始化为0,有机器人的位置设置为该机器人

2015-02-10 16:40:28 821

原创 poj1068Parencodings

背景:做这道题的时候,完全无法理解题意,无赖使用了百度翻译,可翻译出来的东西一点也不容易理解,最后实在没办法了,就看了解题报告里面的大致题意描述。 思路:首先用vector存储括号,右括号用0表示,左括号用1表示,并在存储过程中,用另外一个vector存储下右括号在整个brackets中的位置,这样就可以少一次检索,然后在依次处理brackets数组中的元素。 学习:vector的使用。 #

2015-02-10 12:19:16 715

原创 poj3295Tautology

背景:一直wrong在while()语句上最开始的时候没有把字符串为0考虑进去,所以导致输出一直是not。 思路:本题我构造了一个堆栈和一个映射关系,p,q,r,s,t每个只有0和1两种情况,所以可以直接用for循环枚举即可,枚举的时候用map产生映射,这样比较简单,然后就是定义一个字符串数组,从字符串最后一个元素开始处理,然后就是简单的堆栈操作,在元素处理中,按照题意,遇到p,q,r,s,t直

2015-02-10 10:16:50 843

原创 poj2586Y2K Accounting Bug

背景:再做这道题的时候,我严重怀疑我的英语能力,o(︶︿︶)o 唉,翻译了一个多小时。 思路:由于本题情况比较少,所以可以直接枚举出所有的情况,首先要找出五个月中最少亏损月份,然后就开始枚举出五种情况,最后输出即可。 #include void print(int n) { if(n<0) printf("Deficit\n"); else printf("%d\n",n);

2015-02-09 16:12:42 845

原创 poj2109Power of Cryptography

背景:题目不难,但由于是第一次用二分法写代码,在结束条件那个地方纠结了半天。 思路:简单二分法。 学习:二分法:当数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。主要思想是:(设查找的数组区间为array[low, high])(1)确定该期间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。区域确定如下:a.a

2015-02-09 14:30:36 619

原创 uva12096集合栈计算机

背景:这道题出现在我学习c++的stl中,对现在还不了解stl的人来说,确实显得太难了,只有照着书打下代码,然后一步一步的理解。 思路:由于本题的的集合并不是简单的整数集合或者字符串集合,所以就用map建立映射关系,而再建立映射关系的时候,又运用了vector协助,这样就能很明确的使得每个集合都有一个ID,然后就是堆栈的一些操作了。 学习:stl里面一些知识的简单运用。 #include

2015-02-09 10:15:37 3733 13

转载 C++ STL泛型编程——在ACM中的运用

C++ STL泛型编程——在ACM中的运用 学习过C++的朋友们应该对STL和泛型编程这两个名词不会陌生。两者之间的关系不言而喻,泛型编程的思想促使了STL的诞生,而STL则很好地体现了泛型编程这种思想。这次想简单说一下STL在ACM中的一些应用。我们知道,在ACM竞赛中,经常需要用到数组、字符串、队列、堆栈、链表等数据结构和排序、搜索等算法,以提高程序的时间、空间运行效率。然而如果

2015-02-07 16:35:47 785 1

转载 C++中cin.get和cin.getline的区别

C++中cin.get和cin.getline的区别 分为三种情况来看: 1)输入的字符串不超过限定大小 get(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理; getline(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'直接从输入缓冲区中删除掉,不会影响下

2015-02-07 16:28:28 661

原创 poj1328Radar Installation

背景:因为一个小错误找了一个多小时,就是在输入数据的时候,雷达Q的作用范围可以为0.while(scanf("%d %d",&N,&Q)==2&&N)这句话千万不要写成while(scanf("%d %d",&N,&Q)==2&&N&&Q) 否则就会错。 思路:简单贪心,先要找出每个小岛可以被雷达发现的区间,然后就可以运用贪心算法了,先用sort按照区间左端点升序排列。然后如下运用贪心就可以了

2015-02-07 15:53:29 686

原创 soj1002大数加法

背景:wrong在几组坑数据上,如果不看discuss,打死我也想不出来还有那些坑数据,o(︶︿︶)o 唉。 思路:用数组存储那个数字,然后进行想加,相加的时候记住取余和取整运算,还得注意几组特别坑的数据,这里提供几组坑数据。 0000 0000    99 1   001245 1000  学习:了解用数组去存储一个大数。 #include #include void Sum(in

2015-02-06 23:01:25 832

转载 C++ map的基本操作和使用

C++ map的基本操作和使用    来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++ map的基本操作和使用_Live_新浪博客     Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map最基本的

2015-02-06 18:08:19 750

原创 uva156反片语

背景:学习stl过程中遇到的简单题,但我不会。 思路:将单词标准化,然后就可以运用映射map了。#include #include #include #include #include #include using namespace std; map cnt; vector words; string repr(const string& s) { string ans=s

2015-02-06 16:58:09 689

转载 STL在ACM竞赛中的使用

本文结合小紫书总结STL在ACM竞赛中的使用 1.stringstream字符流,和string类型: string类具有的优点:可以直接用四则运算符和关系运算符,简化了字符串类型的操作。 [cpp] view plaincopyprint? string string1="22",string2="11";   string1+=

2015-02-06 16:43:59 1576

转载 (转)C++ stringstream介绍,使用方法与例子

(转)C++ stringstream介绍,使用方法与例子   C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。   istringstream类用于执行C++风格的串流的输入操作。  ostringstream类用于执行C风格的串流的输出操作。  strstrea

2015-02-06 15:26:54 641

原创 uva10815安迪的第一个字典

背景:这种题,我只能说,原谅我是新手,一点不会,于是又只有照着书上打出来。 学习:c++里面set的一些基本用法。还有isalpha()函数和tolower()函数,isalpha()函数相当于isupper()||islower()的作用,为判断一个字符是否为英文字符,tolower()为将一个字符转变成小写字符,与之相反的为tosupper()函数。 注:set和stringstream的

2015-02-06 15:15:42 1481

转载 C++ STL set小结

/* set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。 1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素 2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数 3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同) s

2015-02-06 13:15:37 514

原创 uva101木块问题The Blocks Problem

背景:一看这道题,再看书前面的知识点,我只能说一点不会,于是我将上面的代码在电脑上面打了一遍,这才会一点点新知识的运用,然后我就按照自己的想法,说实话已经参照了书上的一些东西,然后自己去用新知识写代码,当我满心欢喜的去测试的时候,啊,wrong,仔细一读题,才发现自己题意都理解错了。 思路:模拟四条指令即可。由于每个木块堆的高度不确定,所以用vector来保存很合适。 学习:vector就是一

2015-02-06 10:20:34 1187

原创 uva10474大理石在哪儿where is the marble?

背景:做了这么久的题,唯一一道一次ac的,可见这道题是如何的简单。 思路:思路很清楚的模拟题,先排序再查找。 学习:sort函数和lower_bound函数,sort函数排序就不多说了,lower_bound函数作用是查找一个数组中大于等于x的第一个位置。#include #include #include using namespace std; int figue[10000]; v

2015-02-05 23:14:36 995

原创 uva253Cube painting骰子涂色

背景:这题我写出来发生了一个奇怪的现象,就是同样的代码,在vc6.0里面运行的好好的,但在codebloke里面却死活不对,最后费了我九牛二虎之力,我终于找到了,原来数组开小了,o(︶︿︶)o 唉。 思路:分别用两个数组模拟两个骰子,定义三个旋转函数,分别绕着xyz三个方向旋转,然后定义一个判断函数,在判断函数中用三个for循环,在循环中对骰子2进行旋转,旋转后与骰子1比较,看是否相同,判断是否

2015-02-05 17:56:18 1248

原创 poj2965The Pilots Brothers' refrigerator

背景:和poj1753一样,用dfs就可以做出来,只是和1753相比较得输出一些步骤,不过这也不麻烦,直接用两个数组就可以存储了。不过记住当递归回来的时候记住把数组里面对应位置的元素清零。 思路:同上一篇1753. #include #include int q[4][4],ok=0,r[16],c[16]; int iswin(void) { for(int i=0;i<4;i+

2015-02-05 12:43:39 710

原创 poj1753Flip Game

背景:说实话,看到这道题的时候一点也不会,然后朋友说了用dfs做,虽然曾经学长讲过dfs,但我没有认真听,所以还是一点也没懂,然后百度了dfs,还是晕晕的,最后实在没办法,就看了朋友的代码,这下才弄懂了什么是dfs,我下面的代码就是看了朋友的代码后,凭借记忆,用他的思路写出来的。 思路:对于每个格子,他要么被反转0次,要么1次,由于只有16个格子,所以他的总的情况有 所以采用dfs深度搜索,在

2015-02-05 08:41:36 802

原创 uva201正方形squares

背景:weong在格式和输出顺序上。注意读题,是从小到大输出,而不是从大到小输出,还有注意看输出格式,比较麻烦。 思路:就是用两个输出分别模拟出正方形的横边和竖边,然后一个一个枚举就好了。 反思:为了防止单词拼写错误,可以选择直接复制题上的单词。 #include #include int square1[12][12],square2[12][12]; int judge(int n1

2015-02-04 16:57:08 1995

原创 uva1589象棋

背景:这道题战线拉得最久,每次一到写这道题的时候都有事,导致我写了4天,调试了三个上午,wrong得我想哭,最后历时15个多小时,我终于ac了。 错因:这道题主要是有很多种情况,要考虑完所有的情况,得需要自己无限出数据。 思路:我的思路是用两个字符型数组模拟整个棋盘,一个模拟那个残局,一个模拟红方的棋子能到达的地方,即使帅模拟的地方有些是不符合象棋规则的,但是把帅当成车来用的话,在关键的地方是

2015-02-03 09:02:06 6746 5

原创 uva512追踪电子表格中的单元格

背景:wrong了10个多小时,最后发现格式错了。 思路:这是一道模拟题,思路比较简单,先把要执行的命令用结构体存储,如果用数组的话,会比较麻烦,然后在模拟所输入单元格的操作即可。

2015-01-29 14:12:52 772

原创 uva213信息解码

背景:这题我最开始自定义了五个函数,找了一晚上的错误,还是超时,最后我放弃了最开始的代码,全部另外写了,不过思路只变了一点点,使得代码更加简单,这样经过一小时的战斗,终于ac了,好高兴。 学习:gets()函数读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF或发生错误,返回NULL指针,所以这个题可以直接用gets()函数输入,而不用定义一个自定义函数,还有scanf("%1d"

2015-01-28 07:28:24 1106

原创 uva133救济金发放The Dole Queue

背景:输出格式永远是程序员的痛啊,所以请一定注意输出格式。 学习:刚看了同学的博客,发现这道题会在小紫书的那个地方出现,是为了让我们练习自底向下的函数构建方式,所以请有兴趣读者自行将下面的代码改成自底向下的函数构建方式,不要像我一样一个main函数到底,因为程序小,一个main函数可以到底,但是当程序大的时候,只写一个main函数的话就过于麻烦。 思路:本题主要在这两个地方需要注意for(in

2015-01-25 12:29:51 1769 2

原创 uva489刽子手游戏

题目: In ``Hangman Judge,'' you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic

2015-01-25 09:32:57 905

原创 uva1339古老的密码

此题比较简单,主要一点就是注意字符串的元素可以交换顺序然后才映射。 注意,在排序的地方可以直接调用c语言中的qsort函数或者c++语言中的sort函数。 #include #include #include int main(void) { char str1[105],str2[105]; memset(str1,'A',sizeof(str1)); mems

2015-01-24 17:35:33 1402

原创 uva1588换低档装置Kickdown

背景:wrong得我想哭,一上午和一晚上。错主要错在:最先循环写成了死循环  考虑问题不全面,少考虑了一个方面  再写循环的时候循环终止条件错误 思路:第一段代码的思路是固定一个长的,让短的那根长条从最开始往后移,遇到吻合的话就输出,结束循环。             第二段代码的思路是先随便固定一个字符串,并把这个字符串进行延伸,延伸方法是在这个字符串的前面和后面都添加一些0,然后还是让另一

2015-01-24 01:00:35 1459 1

原创 uva202循环小数Repeating Decimals

背景:昨天晚上wrong了两个多小时,今天早上有一只runtime error 思路:一直辗转相除,并用数组存储每一次相除的结果,每除一次,与数组前面的元素相比较一次,当与前面的数组元素相比较时,如果出现两个数组对应的元素的相等,即可停止相除,因为那时,循环节已经找出来了,并用变量m,n分别记录下循环节在数组中的起始和结束位置,然后最后的一点就是按照格式输出,一定要注意格式,我被这个整哭了,o(

2015-01-23 08:43:51 2674 2

原创 uva1586分子量

第一篇博客 写代码的时候注意数组的初始化,本题是把数字也当成字符直接输入了,所以处理的时候数字和英文字符分开处理,本代码请注意变量m的使用,看似有两个for循环,但是有了变量m后,对字符串其实只处理了一次。 #include #include #include int main(void) { char substance[85]; int T; scanf("%

2015-01-23 08:01:21 790

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除