
ACM/ICPC
Error_null_music
Be Better!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVa272
注:重新开始练习算法,每天200行左右代码,书本为刘汝佳的《算法竞赛入门经典》(第二版)原创 2016-09-20 01:46:58 · 654 阅读 · 0 评论 -
UVa1586
这一题只需要用一个数组存储每一个元素的个数。这里格外需要注意的是,题中讲了数字最大不超100(我一开始还傻傻的为了正确存数字特意写了30+行多余代码)这里还有几点需要注意的,一个是sum最好是用double来存,另外判断字符是否相同的语法容易出错。原创 2016-09-21 18:58:32 · 562 阅读 · 0 评论 -
OpenJ_Bailian - 2748
该题可以说是非常简单的一道题目,但是挂出来是因为自己在这里用了好几种方法,尤其是温习了一下STL中的next_permutation函数。在此还是码出来。题意很简单,输入一个字符串,然后输出字典序全排列。给指定序列进行全排列的方式有很多,比如序数法,字典序法,临位互换法。下面的文章非常详细的描述了字典序法生成全排列的原理:字典序法生成全排列 第一种方式是使用递归的思想,把所有的排列方式按原创 2017-10-17 23:20:06 · 424 阅读 · 0 评论 -
UVa401
这一题最简单的方式就是存入数组然后按照数组中对应的rev来确认字符串是否是镜像字符串,而至于回文的判断只需要跟自己字符串中心对称位置的另一个字符对比就可以得到。这里需要注意几个小地方,一个是i 在我自己编写代码编译的时候出现了[Warning] pointer to a function used in arithmetic [-Wpointer-arith] 在检查后发现是27行的if(r(原创 2016-09-20 09:27:34 · 632 阅读 · 0 评论 -
UVa202
这一题自己在写的时候漏掉了很多细节方面的东西,一直没有能AC,最后还是借鉴了(小白菜又菜)的代码才AC OTZ本题是计算分数的循环节,如果没有循环节则用(0)来替代,那么这里面又涉及到了数论的知识——抽屉原理:n 除以 m 的余数只能为 0~m-1 那么计算m+1次至少有一次余数相同,即为循环节通过数组来存储循环节的数值和循环节长度即可#include#include#de转载 2016-10-07 09:58:56 · 465 阅读 · 0 评论 -
UVa232
在获取数据后,通过题意判断条件判断网格中的编号并用二维数组 xuhao[ ] 存储,在寻找横向和竖向的字符串的过程中,可以设置一个 move 变量,通过 move 的移动,来数组字符。在输出竖向的字符串的时候应该格外的注意,因为在竖向输出字符串的时候,编号的顺序有可能会混乱。自己尝试了很久,最后看了小白菜又菜写的代码才给我带来了解题的思路。即建立一个结构体数组data,里面的data.id用来计数原创 2016-09-29 08:33:23 · 456 阅读 · 0 评论 -
UVa1585
该题需要按照连续的'O'来统计得分,那么只需要设一个得分数组score[],存储每个字符对应的分数。在循环中将数组中的数值得分相对于前一个值+1 score[i] = score[i-1]+1,如果遇到字符'X'直接将该位置的得分置0即可。这里需要注意的是对于score数组的第一个值的初始化,通过判断str数组的第一个字符然后初始化一下就行了。#include#include#原创 2016-09-21 16:18:29 · 375 阅读 · 0 评论 -
UVa1584
在一开始看到这一题的时候,第一感觉是类似于约瑟夫环的做法,因此一直在往循环队列的方向想,后面看了刘汝佳巨巨的代码简直被吓得不要不要的。。。所以说有时候换一种思维方式就是换了一个世界(#滑稽)这一题通过不断的更新ans的位置来确定最小字典序字符串,而函数less也是十分重要的一部分,尤其是在return部分,需要好好理解#include#include#define maxn原创 2016-09-21 00:48:02 · 423 阅读 · 0 评论 -
UVa1583
这一题看起来挺麻烦,其实就是一道打表题,先把所有的情况都枚举出来,再进行搜索输出即可#include#include#define maxn 100000+5int ans[maxn];int main(){ // 打表 int T, n; // 不要忘记初始化数组 memset(ans, 0, sizeof(ans)); for(int m = 1; m原创 2016-09-21 00:24:04 · 471 阅读 · 1 评论 -
UVa340
该题求A十分简单,用数组和if语句稍加判断即可,重点是对于两个序列都出现过单身位置不对的数字的求发。直接统计得到A过后,在求B的时候,对于每一个数组(1~9),统计二者出现的次数c1和c2,则min(c1,c2)就是该数字对于B的贡献。(为什么是min(c1,c2)可以思考一下)最后只需要减去A的部分即可。#include#define maxn 1010int main()原创 2016-09-21 00:10:40 · 316 阅读 · 0 评论 -
UVa455
字符串求最小周期,思路就是通过比较 str[k] != str[k%i] ,如果有不符合条件语句的就break。这一题直接暴力解决即可。#include#include#define maxn 80+5char str[maxn];int main(){ int T; scanf("%d", &T); while(T--) { memset(str, 0,原创 2016-09-23 00:27:40 · 376 阅读 · 0 评论 -
UVa1225
打表题,基本不需要想。打表后进行查询输出即可。#include#include#include#define maxn 10000+5int array[maxn][10];// 打表查询 void make_array(){ memset(array,0,sizeof(array)); for(int i = 1; i < maxn; i++) { for(原创 2016-09-23 00:25:28 · 344 阅读 · 0 评论 -
UVa227
这一题是就是简单的模拟题。用一个二维数组去存,然后进行模拟。比较烦人的地方是对于数据的读取和处理。今天一整个下午因为这一题的玄学问题花式WA,最后网上找了AC代码,发现思路基本相同,(样例我也过了)反正我的代码就是WA,网上找的代码就是AC(#懵逼)#include #include int main () { int cases = 0; bool line =转载 2016-09-23 00:20:35 · 325 阅读 · 0 评论 -
UVa10082
这一题依然是一个简单的字符串的处理,不过通过巧妙的讲所有的改变的都存于数组s[]中,避免了多次查询字符和寻找输出字符的时间,大大精简了代码。#includechar s[] = "`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";int main(){ int i, c; while((c = getchar()) != EO原创 2016-09-20 01:57:14 · 586 阅读 · 0 评论 -
Z_trening - 204
该题题意比较简单,有一个首尾相连的字符串,长度给定,从某个位置切断后,从两端开始取字符。规则为只能取颜色与首端珠子颜色相同的珠子,而首端珠子颜色如果是白色(w),就往下遍寻直至不是(w)的珠子作为第一个珠子的颜色。另外白色珠子可以被涂上任意颜色,因此如果遇到白色珠子是必定可以取出的。举例说明:wwwbbrwrbrbrrbrbrwrwwrbwrwrrb。我们把两个字符连在一起,得到新的字符串wwwb原创 2017-10-17 12:32:37 · 372 阅读 · 0 评论