自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aozil_yang的博客

点滴记录,记录成长,帮助你我!

  • 博客(29)
  • 收藏
  • 关注

原创 例题5-9 UVA 1592 Database数据库

本来很简单的一道题,却一直RE,查了很长时间才发现是Vector数组开小了,(我日1)我的思路:typedef long long ll;map是把string 映射成ID(long long 类型),vectorv_str;这个vector是存放字符串的,用来判断是第几个ID(这个方法在前面的stack例题中用到了)mapp2;是p2是用来把字符串ID映射成行数r,vecto

2015-12-30 14:57:53 497

原创 例题5-8 UVA 400 Unix Is命令

记录一下代码的巧妙之处吧1.计算列数,因为最后一列为M个字符,前面的列都是M+2个字符,但总字符长度是60个字符,所以列数为(60 - M) /  (M+2) + 1;2.计算行数:假设有19个元素吧,5个一行,那么19/5 = 3 但是有4行,所以最后要加1,在比如说有20个元素 20/5+1 = 5 但只有4行,所以要(20-1)/5+1;所以猜测数学表达式为(n-1) / col

2015-12-29 12:59:13 541

原创 例题8-5 UVA 11054 Gergovia的酒交易

题目描述的好少,好简单,但基本想不到思路,看了分析看了很长时间:之所以是从头开始扫,是因为第一个村庄的酒一定是从2号位置或者更靠右的位置运来,可以把1号与2号合在一起,那么2号的值就变成了a1 + a2;依次类推,可以把所有的村庄压倒最后一个,那么也就意味着,扫描是从一头倒一头扫,而不是从中间!题目要求的是最少劳动力,所以ans是从0加到最后一个,就是每一个村庄都需要扫到!

2015-12-23 14:18:41 639

原创 5-7 UVA 12100 Printer Queue打印队列

大致题意:输入一定数量的打印任务,并伴随有优先级,按优先级从大到小的顺序打印,从队首(位置为0)开始打印,发现队后存在一个打印任务的优先级高于自己,则自己放于队后,先打印优先级高的。整体思路:不用想,根据题意,存数据(优先级)用肯定用queue存(当然有很多方法,这是最好想的!),但queue不能根据优先级进行排序,所以要在找一个"容器"能存的数据自动排序,优先队列priority_q

2015-12-23 08:02:59 657

原创 例题5-7 UVA 136 Ugly Numbers丑数(set+优先队列)

这里综合运用了Set 和 优先队列:整体思路:凡是2,3,5的倍数的都是丑数,所以可以开一个优先队列(整数越小,优先级越高),先插入1,在插入用1乘以2,3,5得到2,3,5的倍数,然后把优先队列的.top去掉,不断取top直到1500个为止:收获:常用优先队列(整数越小,优先级越高):priority_queue,greater  >pq;#include#includ

2015-12-22 23:35:42 1039

原创 例题5-6 UVA 540 Team Queue团体队列

这个题又展示了queue:整体思路:输入的编号用map映射到团队编号中,在然后就是输入命令:入队命令:用 t 记录输入x的团队编号,在q2[t]找到x团队内,如果是空的话,就把整个团队加入到整个队列中,然后再把x加入到x团队中!出队命令:先用t记录队首的团队编号,在把队首的团队(q2[t])的队首去掉,如果该团队为空,则把整个团队去掉,依次类推。。#include#i

2015-12-22 21:43:15 533

原创 例题5-5 UVA 12096 The SetStack Computer集合栈计算机

有关于栈的一道题,看了很长时间,还是晕晕乎乎,记录一下自己的一点收获吧!首先定义了个typedef setSet用来后面开空集合方便:开空集合直接Set()就可以了!接着用到了mapIDcaches就是把Set与int 一 一对应,这里的int也就是Set集合的ID,然后又开了一个VectorSetcaches用来存储Set集合然后开一个stacks建立一个栈,后面的一系列命令全都

2015-12-21 20:41:45 779

原创 4-1 UVA 1589Xiangqi中国象棋

这个题,写完很久了,一直没发没记录,今天补上。这个题自己真是错了不知多少遍了,数不清了,换了个思路就AC了整体思路:用二维数组做棋盘,把红棋能吃的全都记录下来,让黑将一个一个走,看看走后是不是在记录范围内,发现一个不在在的话,就直接输出NO,注意刚开始会有飞将的可能:#include#define MAX 15#includeconst int dx[] = {0

2015-12-21 15:53:39 566

原创 例题7-1 UVA 725 Division除法

思路不太好,借鉴一下吧整体思路:分析可知第一个数肯定是个五位数,第二位要么是五位数,要么是四位数,所以呢,第一个循环直接扫第一个五位数,从10000扫到99999只有当五个数字各不相同,并且通过除法算出第二个数,判断两个数各个数字都不相同即可输出:#include#includeusing namespace std;const int maxn = 10;int judge(i

2015-12-20 23:14:48 545

原创 例题7-2 11059 Maximum roduct最大乘积

很简单的一道题,直接1Y。直接扫描就可以了!需要注意的是:1.格式问题,是每输出完一组数据便输出一个空行!2.循环问题:i,j两个循环变量要从同一个值开始!#include#include#includeusing namespace std;const int maxn = 20;int main(){ //freopen("a.txt","w",std

2015-12-19 23:54:17 479

原创 5-5 UVA 10391 Compound Words复合词

题目大意就不说了,紫书和原文都讲的很易懂。本来注意到的数据范围,但依然超时了。。。整体思路呢:建立一个26 + 5个数组的set,根据输入单词的首字母存取输入的单词,然后在遍历每一个单词,在循环遍历单词的长度(分割单词),然后再根据分割出的两个单词在set中搜索,搜索直接在相应的首字母的set二分寻找,这样会大大减少时间(其实不分也能过!只是在害怕超时!)#include#inc

2015-12-19 22:11:51 545

原创 5-4 UVA 10763 Foreign Exchange交换学生

本来很简单的一道题,却因为自己不细心错了2两次。首先得看清题意:题意是问是否每个学生都可以交换。而不是发现一个可以交换的就行。在一个看清楚数据范围,50W,简单循环扫描肯定会超时的。整体思路:如果n是奇数,直接输出NO,不是的话,把数据按从小打到或者从大到小顺序存到结构体中,在用sort拍结构体,直接扫描n的一半就行了!#include#includeusing namespa

2015-12-19 18:46:37 598

原创 5-2 UVA 1594 Ducci Sequence (Ducci序列)

很简单的一道题,直接1Y,本来翘课被抓的失落心情,顿时好转一点点点点。。题意就不说了,原文和紫书都讲的通俗易懂:整体思路:用两个Vector记录数列,第一个记录原始数据,第二个记录计算完成之后的数据,检查是不是都为0,不是0继续循环,直到1000次,保险点可以多加一点!总之不会超时:#include#include#includeusing namespace std;

2015-12-17 17:30:43 896

原创 例题5-4 UVA 156 Ananagrams反片语(映射map)

书上的一道例题,主要展示了map的应用,收获非常多。整体思路:输入一个字符串,先把这个字符串存到第一个vector中当作原始数据,开一个临时字符串s记录原始字符串的小写格式和字母按字典序排序,把s当作map的下标来映射,如果发现数值为0,就说明还没有,则cnt[r]++,如果不是0,则继续加,那么最后,cnt[r] = 1的一定出现一次的字符串, 也就是所需的答案了!#include

2015-12-17 16:31:02 528

原创 5-6 UVA 1595 Symmetry对称轴

题目大意紫书和原文都讲的非常易懂清晰,观察给出的数据范围:不超过1000个点,每个点坐标范围在-10000到10000之间!直接暴力求解就可以了!整体思路:因为一撮点要轴对称的话,肯定有一个确定的对称轴,所以可以先找两个点,来确定对称轴,在一个一个扫描所有的点,看看是不是对称!为了方便,可以直接找最左上和最右上的两个点,来确定对称轴!有一个技巧:因为对称轴是要除以二的,不妨

2015-12-17 11:08:45 551

原创 例题5-1 UVA 11292 The Dragon of Loowater勇者斗恶龙

很简单的一道题,输入完骑士和恶龙后,sort排序,然后扫面骑士,发现骑士大于等于恶龙,费用就加,否则继续循环,直到恶龙到n及时跳出循环:#include#includeusing namespace std;const int maxn = 20000 + 5;int Knight[maxn];int Dragon[maxn];int main(){ int n,m;

2015-12-17 00:04:08 426

原创 例题5 UVA 10881 蚂蚁(Piotr's Ants)

题目大意就不说了,无论原文还是蓝书,都讲的非常明白易懂!因为在挑战程序设计的书上看到过一个稍微简单点的蚂蚁,感觉这一类问题比较有意思,就先做了做,整理了一下内容,整体思路:因为蚂蚁碰撞后换返回,所以简单方法就是把蚂蚁看成走直线的,就是碰面后直穿而过,不会回头,这样和原意是等价的,这里等价是说他们的位置是等价的,也就是位置想同,不同的是两个蚂蚁“换了换身体”,只要记清楚哪个位置的蚂蚁是哪

2015-12-16 15:21:20 510

原创 7-3 UVA 10976 Fractions Again?!分数拆分

这个题目在看了分析后,感觉非常简单!直接1Y,但还是有非常大的收获的!这个题没有什么格式问题,有的只是暴力的技巧,思路就不多说了 ,紫书说的很清楚,收获:1.暴力求解题并不是完全的暴力,暴力求解也是有一定技巧的,以后做这种题要先分析数学式子,找到数据范围后,在暴力,这样会简单很多很多!2.在判断一个分式是不是整数的时候,不要直接变为浮点数,直接让分子分母两个整数,进行取余运算看

2015-12-15 18:27:19 630

原创 习题5-3 UVA 10935 Throwing cards away I 卡片游戏

很简单的一道题目,无论是原文还是紫书上的讲的非常清楚!因为刚做了Vector类的例题,所以找了一个简单的Vector习题练练!整体思路就是根据原文描述进行!用到的Vector里的函数:.insert(),在指定位置插入某一个数.pop_back(),删掉数组最后一个数.push_back(),在数组最后插入一个数.clear(),清空Vector相当于数组的初始化!(因为是

2015-12-15 17:46:39 568

原创 例题5-2 UVA 101 The Blocks Problems 木块问题

看了看紫书上代码分析:收获不少!解这个题用到了Vector类(非常巧妙简单):整体思路:定义一耳光Vector容器:vectorpile[maxn];这样pile算是一个二维数组,一维是确定的(一维相当于有多少个箱子),二维是不确定的(二维相当于箱子的高度),可以放一个箱子,高度就加1来判断!(判断“高度”用到了.size() 获取高度,没有数字便是0,而不是垃圾值,非常人性化)而放箱

2015-12-15 15:51:39 690

原创 例题5-1 UVA 10474 Where is the Marble?大理石在哪?

虽然是一个例题,虽然是一道非常简单的题目,但自己还是Wrong answer了一次,还是要写点什么的:题意非常好理解,看看原文就可以了:整体思路,按样例格式输入数据后,先排序,在搜索,用到了sort 和 lower_bound函数:自己主要错在lower_bound上面了:这个函数是搜索一个数组:找到第一个位置比输入指定数据大或者相等的位置(注意:位置是从0开始的)所以该函数自然和

2015-12-15 01:34:00 567

原创 4-7 UVA 509 RAID!

个人感觉这个题难点在于读题,和一些小细节的把握:在借鉴了学长们的博客后,了解了题目大意:输入d,s,b分别为:磁盘个数;一个磁盘占有的大小(就是几个数字绑在一个磁盘上);和每一个磁盘上数据的多少(也就是每一行有几个数字组合),然后再输入奇校验,还是偶校验,查阅资料,或者观察样例后可以知道,如果是奇校验,则每一列1的个数为奇数个,如果为偶校验,则每一列1的个数为偶数个(注意1的个数可以为0)

2015-12-14 01:07:46 692

原创 4-6 UVA 508 Morse Mismatches莫尔斯电码

这个题呢,整体思路比较好想:开两个结构体,一个存放输入的指令(因为不一定按顺序排吗,所以得现搜索某个指令),另一个结构体存放输入的单词,最后开一个数组存放最后的电码。然后对每一个电码进行搜索,然后按照题目规定的输出方式输出。    输出方式(题目细节):这个题也是看了好几遍,当完全看懂了之后(使劲查单词),再看课本,发现翻译的真是有点问题,总之输出方式呢,是如果有完美匹配的单词,就输出它本身,

2015-12-10 19:17:43 1273 3

原创 4-10 UVA 815 Flooded!洪水

一般能自己手算出样例输入来,那题意就基本明确了,这个题大体题意是,有一个网格,网格里均匀分布正方形土地,洪水总是在最低处忘上淹,问一定量的水的体积淹没过后,最终洪水的水平面和淹没土地的百分比例。    大体思路:因为洪水总是在最低处往上淹,所以可以先把土地的高度数组先用快排排序(就是把面积的问题转换成线的问题),先淹没小的,淹没一个减少一定量的水的体积直到小于等于0为止。    教训:虽然

2015-12-10 15:28:09 590

原创 4-9 UVA 1591 Data Mining 数据挖掘

这个题确实反应了自己的水平,刚开始读不懂原文,读紫书的翻译,但感觉好抽象,还是不理解,便又硬读原文,还是有很大的困难,但多少已经有一些思路了(大体方向已经知道枚举),但最大的阻碍还是那个表达式!不隐瞒,我是借鉴了“代号4101”的博客后,知道了如何利用那个表达式!大体分析:根据题目的描述,我们是一定要用Qofs’(i) = (Pofs(i) + Pofs(i) > B这个公式的,在

2015-12-08 00:33:28 890

原创 4-8 UVA 12108 特别困的学生 Extraordinarily Tired Students

一个简单的题,虽然简单,但自己也一直卡在变量的赋值的问题上本来赋给结构体内部,却赋给了main函数里的变量。一个小小小小的教训,下次注意,!大体思路:从题目阐述来看题目条件(1 ≤ a,b ≤ 5),而学生的数量也是很小(1 ≤ n ≤ 10),总之,数据量非常少,来判断是不是找到都清醒的情况可以开大循环的终止条件,因为数据量很小,1000 + 5足够,做完之后,我搜索了一下学

2015-12-07 02:28:46 607

原创 4-5 UVA1590 IP网络(IP Networks)

做完之后,有看下网上大神的报告,都觉得没有什么坑,看来自己的英语有待提高,自己错误好几遍都是错在了EOF上我看样例输入输出还是,还是原文都没有看到end of file,这是一个惨痛的教训!!!整体思路呢,是将所有输入的IP转换成二进制存到二维数组里面,因为题目中说最多输入不超过1000个,所以直接char str[1005][40];在搜索所有的IP地址,从头开始,找到第一个不一样的

2015-12-06 18:58:08 486

原创 4-3 UVA 220 Othello 黑白棋

这个题和象棋差不多,有很多细节:也有很多教训:1.‘Black - xx White - yy’ 这个地方,自己就坑在这里了,这里xx,yy前面都有一个空格,但X是两个,说明了这里是%2d,或者前面%3d,这就造成了格式错误。2.在一个,输出的最后与最后程序自带的字母一定有一个空行,否则直接WA。在细节方面,自己也出了不少问题1.自己是从1开始计数的,一直到8,但读取时用了ge

2015-12-05 19:22:55 767

原创 4-4 Cube Painting

因为题目中描述骰子的方法是给其六个面进行编号,所以一个骰子只有24种情况:每一个号朝上就有6种,而每一个面进行横向旋转便又得到4种,总共有24种:只需要提取出输入的字符串前6位,把24种情况打到表格里,进行查询即可:#include#include#define MAX 30int cont = 1;char str_body[MAX][MAX];char str_head[

2015-12-05 01:26:08 614

空空如也

空空如也

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

TA关注的人

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