- 博客(39)
- 收藏
- 关注
原创 Programming Challenges 习题 4.6.4
PC/UVa:110403/10191Longest Nap这道题废我半管血,主要是不知道区间覆盖该如何分类讨论。更让我惊奇的是,这教授居然能在同一时间做两件事情。既然这个教授这么厉害,所以我能想到的办法就是排除法了。原始时间段10:00~18:00,根据每一个事务,对当前所有的空闲时间段进行拆分:如果事务的起始时间小于(或等于)空闲时间段的起始时间:结束时间在空闲时间段之间,...
2019-09-29 22:11:46 109
原创 Programming Challenges 习题 4.6.2
PC/UVa:110402/00120Stacks of Flapjacks翻转序列从右边开始、从1开始计数。排序时可以采取的操作是把输入序列中的某个数左边所有的数逆序一下。根据这个性质,可知跟冒泡排序思想一样,每次应该把最大的数放到最靠右的未排序的位置。如果最大数在最左边,直接翻转一次;如果最大数在中间,先翻到最左边,再翻到最右边未排序的位置。可以参考下边的例子:序列翻转位置...
2019-09-26 21:49:11 99
原创 Programming Challenges 习题 4.6.1
PC/UVa:110401/10041Vito’s Family#include <iostream>#include <vector>#include <cmath>#include <climits>using namespace std;int main(){ int T = 0; cin >> T; fo...
2019-09-26 17:59:15 157
原创 Programming Challenges 习题 3.8.8
PC/UVa:110308/848Fmt根据题目意思模拟就好了,但是题目中的规则有些不容易理解,这里总结一下:每行最多72个字符。长度大于72的单词单独占一行空行还是空行,也要去掉行尾空格当一行的开头有空格的时候,当作新的一段处理根据上面描述的方式,应该是依次读取每一段,也就是程序里的strPara,然后针对这一段中的每个单词strWord和前导空格strSpace,判断是否可以...
2019-09-26 17:37:30 99
原创 Programming Challenges 习题 3.8.7
PC/UVa:110307/10150Doublets深搜超时了,然后换成了广搜。不过我忘记了广搜如何记路径,所以就在队列里边把路径加进去了。#include <iostream>#include <vector>#include <string>#include <deque>using namespace std;void ...
2019-09-25 21:46:13 81
原创 Programming Challenges 习题 3.8.6
PC/UVa:110306/10132File Fragmentation嗯,这题深搜也能AC,虽然uDebug上有一个测试用例运行时间较长。#include <iostream>#include <vector>#include <string>using namespace std;bool put(const vector<stri...
2019-09-24 21:55:59 96
原创 Programming Challenges 习题 3.8.5
PC/UVa:110305/10188Automated Judge Script题目很简单,照着模拟就好了,这才发现自动评测系统这么弱智的。可是我自己写字符串比较函数居然写错了,事实证明在for循环中初始化循环变量可以避免很多错误。#include <iostream>#include <vector>#include <string>usin...
2019-09-24 21:14:47 88
原创 Programming Challenges 习题 3.8.4
PC/UVa:110304/850Crypt Kicker II题目没有什么难度,只是已知明文攻击循环太长,结束条件一定要多确认几次。同时有了Crypt Kicker的经验,所以很容易AC了。#include <iostream>#include <string>#include <vector>#include <sstream>u...
2019-09-23 21:42:04 233
原创 Programming Challenges 习题 3.8.3
PC/UVa:10303/10252Common Permutation这题可真是够了,题目中说最多1000个小写字母,然后居然输入中就有空格。另外还有可能有空的输入。两行空格要输出一行空格,一行空格和一行字符串也输出一行空格,一行字符串和文件结束符要直接结束,所以应该用标准输入和标准输出的返回状态来判断结束。#include <iostream>#include <s...
2019-09-23 19:59:25 203
原创 算法竞赛入门经典 习题3-8
UVa202Repeating Decimals几个礼拜之前就看了这道题,但是一直不知道该怎么做。后来列了一下除法竖式才发现,循环是跟余数相关的。在除法竖式的过程中,如果出现了相同的余数,那么就要开始循环节了。还有这道题的输出格式比较麻烦。#include <iostream>#include <vector>#include <string>u...
2019-09-22 23:14:51 198
原创 算法竞赛入门经典 习题3-7
UVa1368DNA Consensus String本来以为题目是要在已有序列中找一个最小的序列,后来仔细读了下题才发现是要构造一个距离最小的序列。感觉这道题应该就是贪心算法吧?每一位和已有序列的对应位差得越少,总体也就越少。#include <iostream>#include <vector>#include <string>#include...
2019-09-22 23:12:02 182
原创 算法竞赛入门经典 习题3-6
UVa 232Crossword Answers根据题目叙述的内容进行编号,然后固定行,遍历列,打印横向的单词。竖向的单词好像不能通过固定列,遍历行的方式,所以为了避免重复的打印,打印竖向单词的时候我就把标号给去掉了,反正也没什么影响。#include <iostream>#include <vector>using namespace std;int m...
2019-09-22 23:08:43 152
原创 算法竞赛入门经典 习题3-5
UVa227Puzzle这道题稍微麻烦一点的地方在读取输入上,因为空格可能是本行最后一个,所以这行可能只有4个字符,还是应该读取整行,然后再拷贝。#include <iostream>#include <vector>#include <string>using namespace std;int main(){ int cnt = 0;...
2019-09-22 23:07:33 167
原创 Programming Challenges 习题 2.8.8
PC/UVa:110208/10149YahtzeeUVa上一道难度为3的DP题目。简单来翻译一下题目:Yahtzee游戏包含5个骰子,掷13轮,13种不同的计分方式,分别为:计一:分数为所有点数为1的骰子值计二:分数为所有点数为2的骰子值计三:分数为所有点数为3的骰子值计四:分数为所有点数为4的骰子值计五:分数为所有点数为5的骰子值计六:分数为所有点数为6的骰子值机会:分数...
2019-09-21 19:19:16 215
原创 Programming Challenges 习题 2.8.7
PC/UVa:110207/10258Contest Scoreboard使用vvCrtPenalty统计C的罚时,使用vvIcrtPenalty统计I的罚时,初始值全部为0(或者-1,不过这道题好像不存在时间为0的提交时间)。统计C的罚时时,如果这道题的罚时为0,表明是第一次C,将提交时间作为罚时;统计I的罚时时,如果这道题还没有C,则累加罚时。罚时统计完毕后,对于所有参赛的队伍(也就是提...
2019-09-18 21:30:09 250
原创 Programming Challenges 习题 2.8.6
PC/UVa:110206/10044Erdos Numbers最开始这道题我用的深搜,但是uDebug的测试用例都要跑好久,后来改成了广搜。按说这种典型算法是最不应该出错的,即使有错误那么WA个1~2次也知道问题在哪了,但是我WA了好多次。然后找了一个跟我思路差不多的博客,用博主的程序往我的程序一点点靠近修改,最后才发现是输入数据的处理错了。按照题目的描述,每个论文的作者分别先出现名,...
2019-09-18 10:59:30 225
原创 Programming Challenges 习题 2.8.5
PC/UVa:110205/10205Stack 'em Up根据dealer的洗牌方法迭代。#include <iostream>#include <vector>#include <string>using namespace std;int main(){ int n = 0; cin >> n; cin.get();...
2019-09-16 21:29:48 106
原创 Programming Challenges 习题 2.8.4
UVa843Crypt Kicker没想到这道题居然只能穷举。对于密文的每一个单词,尝试和字典中的每一个单词匹配,如果可以添加没有冲突的映射关系,就继续尝试下一个可以匹配的单词。如果在添加新的映射关系时,解密表mapDec或者加密表mapEnc中出现冲突,就应该把本单词新添加的映射关系去掉,然后就是要注意回溯法要保持递归之前和递归之后状态一直就行了。这道题WA了两次,是因为把vbNew放在...
2019-09-15 20:25:09 144
原创 Programming Challenges 习题 2.8.3
UVa10050Hartals根据每个政党的罢工周期,去掉周五和周六,最后再统计综合就好了。#include <iostream>#include <vector>using namespace std;int main(){ int T = 0; cin >> T; for (int i = 0; i < T; i++) { ...
2019-09-15 20:09:59 69
原创 Programming Challenges 习题 2.8.2
UVa10315Poker Hands这道题根据题目中的描述的大小,把每一手牌的类型都记录下来,然后再比较就好了,因为只有5张牌,有些就硬编码了,如果像打升级一下子能甩一大堆该怎么判断大小还真不知道。#include <iostream>#include <string>#include <sstream>#include <vector>...
2019-09-15 20:07:38 153
原创 算法竞赛入门经典 习题3-4
UVa455Periodic Strings直接枚举输入的每一个长度为输入串长度因子的子串,判断是否可以组成输入串。#include <iostream>#include <string>using namespace std;int main(){ int n = 0; cin >> n; cin.get(); cin.get();...
2019-09-15 11:34:25 135
原创 算法竞赛入门经典 习题3-3
UVa1225Digit Counting#include <iostream>#include <sstream>#include <vector>using namespace std;int main(){ int n = 0, end; cin >> n; for (int i = 0; i < n; i++)...
2019-09-15 11:32:07 156
原创 算法竞赛入门经典 习题3-2
UVa1586Molar mass直接用double计算分子量就好了,但是要注意手工转换分子式中每个原子的数目。#include <iostream>#include <string>#include <map>#include <iomanip>using namespace std;int main(){ map<i...
2019-09-15 11:31:00 138
原创 算法竞赛入门经典 习题3-1
UVa01585Score#include <iostream>#include <string>using namespace std;int main(){ int n = 0; cin >> n; string strAns; for (int i = 0; i < n; i++) { cin >> strA...
2019-09-15 11:28:41 332
原创 算法竞赛入门经典 例题3-6
UVa01584Circular Sequence找DNA序列的最小字典序。#include <iostream>#include <string>using namespace std;void smallest(const string &strDNA){ size_t pos = 0; for (size_t i = 1; i < ...
2019-09-15 11:27:16 341
原创 算法竞赛入门经典 例题3-5
UVa 01583Digit Generator最简单的思路就是对于每一个输入值n,直接遍历1到n-1计算最小的生成元。然后我提交了一次,超时了,所以需要优化一下。超时的原因在于对于每一个输入,都会把从1开始的每个数的生成值(就是x加上x的每一位)都计算一遍,因此就应该把从1开始,到最大值(根据输入的范围可以确定为99999)的生成值都提前算出来,然后对于每一个数字进行查表就可以了。注意建...
2019-09-15 11:25:10 462
原创 算法竞赛入门经典 例题3-4
UVa00340Master-Mind Hints书上对于这道题目的描述太简短了,应该参考一下英文原题,否则很难直接想到书上的思路,这里来捋一下我是如何想到书上的思路的:如果存在s[i] == g[j],那么就是一个匹配项;当i == j时,就是强(strong)匹配,其余都是弱(weak)匹配原题目中提到了independent集合。independent的意思是说,如果选定了匹配关系...
2019-09-15 11:15:40 180
原创 算法竞赛入门经典 例题3-3
UVa 00401Palindromes这道题目给了一个镜像的映射关系,为了镜像串的判断方便,所以硬编码了map。#include <iostream>#include <string>#include <map>using namespace std;int main(){ const string strMirror("A 3 H...
2019-09-15 10:38:14 124
原创 算法竞赛入门经典 例题3-2(Programming Challenges 习题 3.8.1)
UVa10082WERTYU这道题如果用if或者switch来做代码就会变得冗长了,所以采用空间换时间的方法,先把错误字符到正确字符的映射关系记录下来。但是如果使用map,那其实并没与达到效果,因为还需要硬编码映射关系。书中提供的方法是把键盘上的字符从左到右先记录在string中,然后查找错误的字符,直接取其左边的字符就好了。#include <iostream>#inclu...
2019-09-15 10:32:06 183
原创 算法竞赛入门经典 例题3-1
UVa272TexQuotes依次读入字符,用一个标志位记录当前是左双引号还是右双引号。#include <iostream>using namespace std;int main(){ bool bLeft = true; char c = 0; while (cin.get(c)){ if (c == '"'){ if (bLeft){ c...
2019-09-15 10:24:35 130
原创 Programming Challenges 习题 2.8.1
PC/UVa:110201/10038Jolly Jumper#include <iostream>#include <vector>#include <cmath>using namespace std;int main(){ int n = 0, minus; while (cin >> n){ vector<in...
2019-09-13 18:37:55 276
原创 Programming Challenges 习题 1.6.8
PC/UVa:110108/10142Australian Voting根据题目的过程模拟选举过程就可以了,但是也有几个注意的点:得票为0的候选人出局某个候选人票数大于50%时,选举胜利,此时只可能有一个人当这一轮统计过后没有人出局时,也就是最小票数和最大票数相同时,即为平局的情况每个候选人的票存在ticket数组中,viOrder表示每张选票的首选项,sCandidate表示未出...
2019-09-13 18:15:45 239
原创 Programming Challenges 习题 1.6.7
PC/UVa:110107/10196Check the Check这道题其实不难,但是有几个点需要注意:各种边界条件特别容易出错车、 象、后的前进路线上不能有其它棋子挡着其实不用判断王将军王的情况,因为如果有一个王将军了另一个王,那么必定出现两个王互相将军的情况#include <iostream>using namespace std;char board[...
2019-09-13 12:04:58 243
原创 Programming Challenges 习题 1.6.6
PC/UVa:110106/10033Interpreter题目没由什么困难的,按照说明模拟就好了,有几个需要注意的问题:8和9的命令是寄存器间址每个输出结果后边都只有一个空行,这表示最后一个输出结果后边也只有一个空行#include <iostream>#include <string>#include <cstring>using na...
2019-09-13 11:41:08 239
原创 Programming Challenges 习题 1.6.1
PC/UVa:110101/100The 3n + 1 problem题目很简单,注意读取i, j后最好马上就打印出来,要不然把i, j交换了之后再打印可能就有问题了。#include <iostream>using namespace std;int main(){ int i = 0, j = 0; while (cin >> i >> ...
2019-09-10 22:26:34 154
原创 Programming Challenges 习题 1.6.5
PC\UVa:110105/10267Graphical Editor按照题目要求模拟就好了,但是有几个需要注意的点:白色是字母O,不是0。X1、X2、Y1、Y2的大小顺序需要处理F命令在100*100的图片上就会溢出了,所以想想画图程序里边的填充功能不只是简单的深搜。放到这道题里边,如果整张白图片用白颜色填充时不加以判断而直接深搜,很快就溢出了(一着急把K命令的参数顺序看错了,再加...
2019-09-10 22:23:14 142
原创 Programming Challenges 习题 1.6.2
PC/UVa:110102/10189Minesweepers题目要求计算n * m矩阵中每个非地雷位置周围的地雷数目和,没有什么难度,但是最主要的问题是输出格式,每两个输出结果之间用一个空行隔开,最后一个输出结果后没有空行。#include <iostream>#include <cstring>using namespace std;int main()...
2019-09-09 22:20:58 117
原创 Programming Challenges 习题 1.6.4
PC/UVa:110104/706LC-Display题目要求打印制定宽度的数字,一般来说命令行光标不能上下左右移动,所以只能逐行打印。每一个数字应该由7部分组成,上、中、下的-,以及左上,右上,左下,右下的竖线|。由于左上和右上、左下和右下可以在同一行打印出来,所以简化为5部分。主要通过displayNumber(int num, int line, int s)来打印。num表示数字,...
2019-09-09 20:56:39 143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人