紫书
weixin_43763889
这个作者很懒,什么都没留下…
展开
-
uva 1601(单向bfs 双向bus 矩阵转图)
题意不能走到一起,或者穿着走,将矩阵转化成图,双向比单向优化300+ms单向bfs#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;char l[20][20];int num[20][20],...原创 2019-12-24 15:39:56 · 137 阅读 · 0 评论 -
uva 129
题意:一个字符串不存在相邻重复子串称为困难子串,给你n和L,意思是输出由前L个字母组成的字典序第n大的困难子串对于一个新加入的字母来说,每次判断只要保证含有这个字母的后缀子串没有重复即可。比如说:原先的串是:ACB当新加入一个字母C后构成串ACBC,我们只需要看新加入的后缀C 和 他前一个字母B 是否构成重复字串;然后看一下含有两个字母的后缀 BC 和之前的 AC串是否构成重复字串。#i...原创 2019-12-19 18:26:58 · 90 阅读 · 0 评论 -
sprinf函数
头文件:#include <stdio.h>sprintf()函数用于将格式化的数据写入字符串,其原型为:int sprintf(char *str, char * format [, argument, …]);【参数】str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。除了前两个参数类型固定外,后面可以接任意多个参数。而它...原创 2019-12-15 14:39:27 · 638 阅读 · 0 评论 -
uva 12118(欧拉路,dfs判联通)
题解先判断有多少个连通块,假设有k个,就需要k-1条路将它们连起来,(特判一个的情况),还要计算每个连通块中的度为奇数的点,假设有n个这样的点,就要填(n-1)/2条边让它形成欧拉路,这样是最短的情况。代码#include <iostream>#include <cstdio>#include <cstring>#include <set&g...原创 2019-12-12 21:55:18 · 165 阅读 · 0 评论 -
uva 806(四叉树dfs 递归 )
#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std;vector<int>vec;char l[70][70];int dfs(int...原创 2019-12-12 18:42:32 · 93 阅读 · 0 评论 -
uva 11853 (dfs)
将每个敌人看成一个圆,题就是能不能不触碰这些圆从战场走出去,如果有几个圆上下联通(盖过边界),那肯定不能,如果没有,则一定有解。如果有解,在bfs的同时求解答案,那么答案一定在左右边界与圆的交点最南边的点,为什么是最南边,因为你dfs是从上到下遍历,所以这个圆上面都被封上了,只能走下面。可以尝试几种情况,如果bfs到的圆与左右边界有交点,那么一定满足,否则就不会改变答案初值,你品,你看着代码细...原创 2019-12-04 18:45:06 · 61 阅读 · 0 评论 -
uva 1599 (两次bfs)
思路:第一遍bfs从终点开始,找到每个点到终点的最短距离。第二遍bfs先找到最小的颜色值,然后将每个颜色值最小的点入队#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace s...原创 2019-12-01 16:56:55 · 95 阅读 · 0 评论 -
uva 12171(离散化+floodfill)
这道题的难点的思路紫书上说的很清楚了,floodfill就是一个bfs填色算法但我觉得这道题难点在对离散化的理解,从区间到点的理解,如填色时为什么不包括右边界,bfs判断边界时为什么右边没到最后一个元素。这里参考一个大佬的博客:https://blog.csdn.net/weixin_33834910/article/details/94053469结合代码去理解吧#include <...原创 2019-11-21 17:39:47 · 232 阅读 · 1 评论 -
uva 816
题意:题解紫书主要部分讲的很清楚,但还是要自己实现一下,有好多细节需要注意#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <queue>#include <vector>using namespac...原创 2019-11-11 21:25:43 · 117 阅读 · 0 评论 -
uva122(二叉树)
这个题刘汝佳讲的输入可以学习一下,有好多关于字符串的技巧,这个树可以用结构体实现,也可以用数组实现,但我用数组实现超时了。结构体实现代码:#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;typedef q...原创 2019-11-10 16:45:07 · 87 阅读 · 0 评论 -
uva12333(字典树 +高精度)
这个题的难点在于高精度加法求前1e5个斐波那契数的前缀,如果开足够长的数组去存储整个结果,每次进行多位的计算会超时,所以只保存高位前50位即可,所以在计算时就涉及到移位,这个计算我的方法总是超时,网上有用string计算的是5000+ms,我cv了一份大佬的计算方法,200+ms字典树查找,用一个数组去存当前节点最小的索引值#include <iostream>#include...原创 2019-11-07 13:52:41 · 271 阅读 · 1 评论 -
uva 1592
这题用四重循环会TLE,我们枚举c1,c2,从上到下遍历每行,将c1,c2组成的二元组加入到map中,如果新行中出现的二元组已经出现过,则答案产生写这道题收获的小技巧:getline的新使用方法,可以加一个参数代表读取到那个字符结束#include <iostream>#include <cstdio>#include <algorithm>#in...原创 2019-11-03 17:04:08 · 160 阅读 · 0 评论 -
uva12108(floyd判环)
这个题就是简单模拟,有一个点是判断无解的情况,看到一份题解用floyd判环算法来判断,简单易懂,Ac代码#include <iostream>#include <cstring>#include <cstdio>using namespace std;int a[15],b[15],c[15],d[15];int n;//下一分钟的状态...原创 2019-11-01 15:44:43 · 267 阅读 · 0 评论 -
UVA 253
判断两个涂色的骰子是否相同可以固定一个面向上,然后旋转筛子,每个面又有四种情况,比较就好#include <iostream>#include <cstdio>#include <cstring>using namespace std;char s1[10],s2[10];//固定一个面冲上,面的变化int d[6][6] = {{1,2,...原创 2019-10-20 16:30:50 · 111 阅读 · 0 评论 -
uva 512 Spreadsheet Tracking
对表格的操作,最后求相应单元格移到了哪里很麻烦的模拟,学的紫书的删除和插入操作#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 55;int sp[N][N],sp1[N][N],vis[N],ans[N][N];...原创 2019-10-13 17:38:02 · 70 阅读 · 0 评论 -
uva 213 Message Decoding
题意大概是有一种编码方式用二进制表示, 首先输入一个编码头, 编码头中的每一个字符分别对应二进制序列( 0, 00, 01, 10, 000, 001, 010, … ,0000, 0001, 0010, … )接下来是编码文本(可能由多行组成, 则直接把它们拼成一行), 分为多个小节, 每个小节的前三个数字代表该小节每个编码的长度(如100代表该小节每个Code长度为4),然后是各个字符的编...原创 2019-10-11 21:38:10 · 70 阅读 · 0 评论 -
UVA 1588 202 11809
1588给你两个序列,将两个序列合并,合并后的序列中元素不能大于3,求合并后序列的最短长度思路:首先我第一个错误的思路是将短的序列加到长的序列中,测试错误样例:121221212211212121112222211122和1212122121正确的做法是走两遍取最小值,将长的插入短的,将短的插入长的#include <iostream>#include <cstdio&...原创 2019-10-09 19:14:19 · 80 阅读 · 0 评论