紫书
SecanT_X
被自己菜到哭
展开
-
UVa 231 Massage Decoding
我算是发现了,刘汝佳书上的例题一个比一个难,习题就很简单。看书的时候:这题不难嘛,嗯,这个方法不错,蛮简单的。等自己写了:咦?这个怎么处理?这题什么意思来着?(看下书)哇,秒啊! 紫书上题意很完整,就不赘述了。这里要遇到的困难就是即使把编码化成了十进制,但编码代表的数字还是很难计算的,刘汝佳老师就用了很巧的方法——我在输入字符串的时候就把字符归好类,在输出的时候,不同长度对应不同的字符组,这样就可以让编码的数值和长度一起确定一个字符; 代码 #include<iostream> #include原创 2020-09-15 19:36:09 · 737 阅读 · 0 评论 -
UVa 1339 Ancient Cipher
这题的描述容易让人产生误解,题目的加密方式是按字母表向后移一个,而这里的样例就令人费解。实际上是说是否存在某种映射方式使得第一行的字符串可以是第二行的加密后的文本,这里有两种加密方式,一是字母以某种方式的映射,而是顺序打乱,这题只需要判断是否可以就行,所以我们只需要判断字母个数对没对上(不需要是相同字母)。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #incl原创 2020-09-04 00:36:03 · 144 阅读 · 0 评论 -
UVa 489 Hangman Judge
猜字游戏,一共7次机会,有“You win.”、“You lose.”、“You chickened out.” 三种状况,依次是赢了,输了(7次机会用完了),放弃(没用完7次机会就不猜了),这里还规定猜中其中一个字母,凡是出现在该单词里面的这个字母都算被猜中了,而且没有顺序。 #include<iostream> #include<cstring> #include<algorithm> #include<map> using namespace std;原创 2020-09-04 00:22:42 · 115 阅读 · 0 评论 -
UVa 1368 DNA Consensus Strings
这题也是题目吓人,写起来不难,文字一大长串,前面都是没用的话,笑话,在中国DNA早就学烂了,题目就是要找一列中重复次数最多的那个字母,如果重复次数相同,就选字典序最小的。直接用map一直都是WA,检查了好久,都没问题,实在忍不住,就重新来过,用了死办法,一下就A了,玄学。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<map>原创 2020-08-28 01:02:40 · 88 阅读 · 0 评论 -
UVa 232 Crosswords Answers
这也算是一道基础题吧,有些人可能会被这么长的一串文字描述给劝退,说实话,刘汝佳紫书里的例题开始会觉得很难,但了解多了算法之后,再回过头来看,也就是题目描述的吓人了一点的入门题。这题要先把每个开头字母给编号,一个字符组存字符,另一个数组存编号就可以解决了。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<queue> using n原创 2020-08-26 22:18:45 · 146 阅读 · 0 评论 -
UVa 455 Periodic Strings
找循环节,并不难,但分析的时候不能漏了如果没有循环的情况。另外还是输入输出,两个输入之间有空行,所以最好不要用%c,用%s或者直接用string类,输出是两个输出之间有空行,最后一个输出不能有。 代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; string s; int len; int conting(int x) { //判断是否循环,同时要注意如果它没循原创 2020-08-24 22:19:45 · 132 阅读 · 0 评论 -
UVa 1225 Digit Counting
这题n是小于10000的; 如果直接打表需要最多: 10000 * 9 * 5 = 4.5 * 105的时间消耗 ,所以直接暴力把前面10000项列举出来, 代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; int ans[10010][11]; int main() { int t; cin >> t; memset(ans, 0, sizeo原创 2020-08-24 20:47:32 · 96 阅读 · 0 评论 -
UVa227 Puzzle
UVa上写题,第一次遇到PE,这题解决过程并不复杂,主要考察对输入输出的把控,题目要求两个元素之间要有空格,所以在最后输出的字符多了空格是会报错的,同时要求的是两个答案之间要有空行,如果最后输入结束时多了一个空行则会显示输出格式错误。输入方面,过样例的时候就可以发现,如果它最后一个是空格时是直接回车的,所以里用getchar吸收回车时要避免把下一行的第一个吸掉(可能测试数据是空格不会) 代码: #include<bits/stdc++.h> using namespace std; char a原创 2020-08-24 01:19:30 · 94 阅读 · 0 评论