- 博客(66)
- 收藏
- 关注
原创 vimrc配置
set nocompatible " be iMproved, requiredfiletype off " required" set the runtime path to include Vundle and initializeset rtp+=~/.vim/bundle/Vundle.vimcall vundle#be...
2018-07-24 16:38:53
499
转载 Ubuntu 18.04: How to install OpenCV
https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/
2018-07-24 11:10:17
892
原创 POJ3069
/*还是贪心问题,对于当前要解决的点a[i],为了尽可能的少标记点,因此应该标记比a[i]+R小的最大a[j],因此排序后进行二分查找,得到j,那么a[j]+R之内的元素也都满足条件了,下一个目标是a[i]>a[j]+R最小的i*/#include #include#includeusing namespace std;const int maxn=1000+5
2017-07-20 11:14:21
438
原创 POJ3617
/*典型的贪心算法的题目贪心策略很简单,就是每次选择首尾较小的字符,当首尾字符一样时,依次向中间比较,选择较小字符先出现的一端。需要注意的是输出结果是,每80个字符需要输出一次换行*/#include #include#includeusing namespace std;const int maxn=2000+5;char ch[maxn],ans[maxn]
2017-07-20 10:49:44
426
原创 UVa1152
/*经典的四数和问题,通过空间换时间的方法,开辟两个数组lhs和rhs,分别遍历a和b的和,c和d的和然后把lhs和rhs排序,遍历lhs在rhs中进行二分查找,总的时间复杂度是O(n*n*log(n))*/#include #include#include#include#includeusing namespace std;const int maxn=4005,maxnn=maxn*maxn
2017-07-13 13:28:18
340
原创 UVa1343
/*这道题还是使用迭代加深搜索的方法,其中有很多技巧学习。1.在描述棋盘的时候使用m[24]来记录从上到下,从左到右每个位置上的数字。2.为了方便接下来的移动操作,使用常数数组line[8][7]来记录每条线上的棋子在m中的坐标。3.使用rev数组来记录反向移动,这也就解释了为什么line需要记录返现操作,这样就都变成了正向操作。4.剪枝操作h(),因为每一次移动最多移除一个数
2017-07-12 15:13:51
570
原创 Uva12325
/*这道题是使用枚举的方法做,不能计算性价比(价值/体积),先安排尽量多的性价比高的物品。因为,本题只能一次放整个物品,不能讲物品切割,放进去一部分,比如,宝箱体积100,物品1,体积80,价值80,物品2,体积25,价值24显然是物品1性价比更高,但是物品1只能放进去一个,物品2可以放进去4个,价值更多,因此还是使用枚举的放法。这道题一个trick就是当s1和s2都很小的时候,首先计
2017-07-12 09:56:10
481
原创 UVa11212
/*迭代加深搜索经典问题,迭代加深搜索的核心思想是通过不停加深搜索深度来控制解答树的深度和宽度,对于这一类题目,如果使用DFS,则会因为第一个可行解的深度太大而导致爆栈,因此搜索的对象是深度,通过控制深度,及时停止过深的搜索。2.也是搜索问题的共性,就是要有剪枝,寻找剪枝的方向是根据当前状态和剩下的可行步来计算最好情况下能否获得可行解,如果不行,那么就需要剪枝3.这中间
2017-07-12 08:49:13
645
原创 UVa140
/*因为最多有8个点,因此暴力搜索即可,最多时间复杂度8!1.按照提议处理数据,首先是读取字符串,处理边关系e[i][j]和标记使用的节点v[i]2.对于每一种排列,计算每个元素的位置pos[i],方便后面计算每个节点的带宽bd[i]3.更新结果带宽和对应的排序。*/#include #include#include#include#include#incl
2017-07-05 15:20:57
339
原创 UVa129
/*还是回溯法,但是这道题和之前题目不一样的地方是,这道题只要找到答案就会返回,而之前的题目都是遍历寻找所有可行解。因此这道题需要设定返回值,当找到答案时,及时结束程序。*/#include #include#include#include#include#include#includeusing namespace std;int n,L;
2017-07-05 13:40:53
295
原创 UVa524
/*还是回溯法,关键是编写DFS函数DFS函数是递归函数,因此第一步是递归终止条件,即已经搜索到底部,判断是否满足条件,决定是否输出。第二步是递归,当进入第二步时,首先是改变标记状态,然后继续调用DFS,最后恢复标记状态。*/#include #include#include#include#include#include#includeusing
2017-07-05 11:01:47
278
原创 八皇后
/*八皇后问题是典型的回溯法的使用在使用回溯法的时候,最主要的问题是标记已经使用的方案,然后向下搜索,结束搜索以后,取消标记*/#include #include#include#include#include#include#includeusing namespace std;int kase=0;//方便打印时候提示第几种解法int m
2017-07-05 09:11:26
349
原创 UVa725
/*本题是使用暴力搜索的方法解决的,关键是分析问题的特点针对除数b进行暴力搜索,其搜索范围是(1000,100000)被除数a=b*n,然后判断a和b是不是把0-9的数字全使用了,而且只使用一次这中间有一个问题,就是0可以没用过,然后在b的前面补0即可。*/#include #include#includeusing namespace std;bool
2017-07-04 13:27:29
386
原创 UVa572
/*本题是典型的DFS思路,即在读取当前位置为@时,即刻进行DFS,扫描周围八个方向的位置是否为@*/#include #include#include#include#include#include#includeusing namespace std;const int maxn=100+5;char ch[maxn][maxn];int
2017-07-02 10:07:53
591
原创 Uva699
/*这道题和UVa839很像,很容易想到是用DFS,其实二叉树的先序遍历就是一种DFS考虑到如果起始位置设为0的话,位置有正有负,需要用字典记录对应位置的值,如果起始位置设为大数组中间位置就没有这样的问题,这是第一个技巧其次,在确定了DFS思路以后,很容易想到在DFS函数内部读取一个数字处理一个数字,但是这样有一个问题,就是无法判断读取是否结束,就是在读取单个-1的时候,这时候
2017-07-02 09:47:53
711
原创 UVa839
/*本题是典型的动态规划问题,对于动态规划问题,每次只需要考虑当前问题的划分,也就是把当前问题划分成子问题和在当前问题和子问题之前问题的解决,而不需要去考虑子问题怎么解决。比如这道题就是把当前问题划分成左右两个节点输入的问题,然后判断当前节点是否是平衡状态即可不需要去考虑左右两个节点怎么平衡的问题,子问题是递归解决的。*/#include #include#incl
2017-07-01 18:27:00
384
原创 UVa122
/*题意很容易理解,就是给出一组描述二叉树节点的数据,然后判断二叉树是不是完整的,有两种情况是不完整的:第一种是,当在同一个节点两次插入不同的数值时候,判断为二叉树是不完整的。第二种是,当二叉树的节点没有父节点的时候,判断二叉树是不完整的。然后是描述二叉树节点的形式(num,s),其中num是节点的值,而s是描述从根节点怎么到当前节点,s是字符串,只有L和R构成。代码中的辅助函
2017-06-29 15:16:24
447
原创 UVa679
/*题意很容易理解,关键是分析每个小球下落的特征,也就是对于编号为I的小球是向左走还是向右走的问题。首先是分析给定的样例,理解题意,然后是分析1,2,3,4,5,6,7,8,。。。的下落选择,发现:对于Depth=i的节点,设k=1k/2,那么小球往右走,否则往左走。然后根据完全二叉树的编号特点,left=root*2,right=root*2+1,因此就能准确计算出小球最后的落点
2017-06-29 14:29:56
310
原创 MYSQl不能插入中文的解决办法
1.临时的解决方案,即修改当前表的属性show full COLUMNs from tablename;显示如下内容表示,当前列的编码不是utf8对每一列依次使用如下命令alter table tablename change columnname columnname varchar(256) character set utf8 collate utf8_unico
2017-06-27 16:00:00
767
原创 Ubuntu16.04 中科大源
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiversedeb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiversedeb http://mirrors.ustc.e
2017-06-27 09:25:57
6524
原创 UVa11988
/*关键是理解home和end的作用,home是在最前面插入字符,end是在最后输入字符。因此设置两个string,beg和end分别是在前面插入字符串和在最后插入字符串home表示在在最前面插入还是在最后插入。*/#include#include#include#include#include#include#include#include#i
2017-06-22 17:12:47
405
原创 UVa442
/*典型的表达式解析题目解析表达式一般是使用栈实现的*/#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){ char s[5];
2017-06-22 15:25:32
434
原创 UVa514
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;int main(){ int N,b[1005]; while(scanf("%d",&N)!=EOF&&N
2017-06-22 14:52:06
244
原创 UVa230
/*题意很容易理解,用set来记录在架图书和归还的图书,这样顺序是按照题目要求的。然后使用字典b2a记录图书的作者。*/#include#include#include#include#include#include#include#include#include#includeusing namespace std;int mai
2017-06-22 10:21:48
500
原创 UVa12100
/*关键是理解题意,如果当前取出的任务不是优先级最高的,那么就把该任务放在队列最后注意,此时是不会打印优先级最高的任务,也不会消耗时间*/#include#include#include#include#include#include#include#include#includeusing namespace std;int main()
2017-06-21 16:55:28
578
原创 UVa10391
/*题意很容易理解,输入是字典序的一些单词,要求找到其中哪些单词是由字典中两个单词拼接起来的。解题思路很简单,如果单词c是由单词a+b组成,那么a肯定是c的前缀,也就是在字典序中,c是排在a后面,也就是说,能由a作为前缀的字符串都是紧排在a后面的。刚开始一次WA的原因是输出有重复,因此后来改用set来记录结果,避免重复。给一组网上的测试数据aabcabcdebcdede如果
2017-06-21 11:12:13
497
原创 UVa10763
/*按照题意的理解,满足条件,需要a->b和b->a学生数量一样,因此设计map,int>dic来记录a->b学生数量,如果有b->a的,那么就a->b数量减1,最后字典中每个元素的value都是0的时候,即可满足交换条件,否则不满足。本题学习的地方是如何构造满足自己需要的hash函数,进而设计自定义的unordered_map*/#include#include
2017-06-20 16:32:20
1842
原创 UVa10935
/*根据题意,很容易理解,因为是第一张扔掉,第二张放在最后,所以相当于是在扔牌的时候每次前进两步,每一步都是没有被扔过的牌*/#include#include#include#include#includeusing namespace std;int main(){ int n,a[55],pos,cnt; while(sc
2017-06-20 15:40:44
712
原创 1594
/*本题本质上时在判断是否存在环的问题对于判断是否存在环的问题,最基本的方法就是设置两个变量,一个走一步,一个走两步,如果存在环,那么两个变量肯定会相遇*/#include#include#include#include#include#includeusing namespace std;void next(vectorint>&num
2017-06-20 15:06:48
295
原创 UVa1593
/*这道题最大的经验就是,不要使用没有定义的变量,也就是不要使用没有初始化的变量例如本题中在声明完len数组之后一定要调用memset把len数组初始化为0解题思路很简单,就是对于每行的输入,首先按照空格键进行拆分,记录每一列对应字符串的最大长度len[i]然后格式化输出,长度不够的要补齐*/#include#include#include#include
2017-06-19 11:04:08
367
原创 UVa400
#include #include #include #include #include #include #include#include#include#include #include#include#include#include#include#include#includeusing namespace std;c
2017-06-17 19:41:54
252
原创 UVa540
#include #include #include #include #include #include #include#include#include#include #include#include#include#include#includeusing namespace std;const int nmax=1000+1
2017-06-16 17:26:12
215
原创 UVa156
/*对于每一个输入的字符串s做归一化得到字符串no作为键值对构建字典,如果当前字符串s归一化之后的no已经出现过,那么就把dic[no]赋值为空字符串然后把dic中所有值不为空的值都放在strs中,排序输出即可*/#include #include #include #include #include #include #include#in
2017-06-16 16:30:15
229
原创 UVa1590
/*这道题的思路很简单就是,就是先把ip地址转成二进制,然后比较二进制的共同前缀,最后根据共同前缀计算子网掩码即可本质上的功能就是把十进制的string和二进制的string的相互转换*/#include #include #include #include #include #include #include#include#include
2017-06-16 14:16:44
623
原创 UVa201
/*本题按照题意,设置两个二维数组,分别记录水平连接和垂直连接即可。最坑的地方在于垂直连接时候,是先输入列,再输入行,这点注意。*/#include#include#include#include#include#include#include#include#includeusing namespace std;//#define
2017-06-15 16:14:23
614
原创 UVa1589
/*题意很简单,就是黑方只剩下一个将,红方还有很多子,而且当前的残局是红方正在将军,判断红方是否已经将死黑方红方只有四种棋子,帅,车,炮,马,因此按照每个棋子的运算规则,即可判断出红方已经能吃到的位置1。给棋子编码,炮是1,马是2,车是3,因为在对将的时候帅的作用和车是一样的,因此把帅也编成3号,按照车处理2.这中间使用两个棋盘来记录,mp是残局时每个棋子的位置,an记录判断后红方
2017-06-15 14:46:08
995
原创 UVa213
/*本题学习的主要是对标准输入输出的处理在在处理字符的时候可以一个一个的处理,即读取字符的时候一个一个处理,输出字符的时候也可以处理一个输出一个在处理和标准输入输出时,需要注意的是'\n','\r'和EOF三个字符的处理,尤其是使用getchar()的时候。另外的一个技巧是在while循环的时候,循环代码有一句必然执行,然后根据执行的结果判断是否继续执行剩下的循环代码这时候可以在w
2017-06-14 16:11:09
664
原创 UVa489
/*本题使用cnt数组记录s中每个字母出现的次数,m和n分别表示s和g的长度e表示猜错的次数*/#include#include#include#include#include#include#include#include#includeusing namespace std;//int cmp(const void *a,co
2017-06-13 21:19:25
452
原创 UVa1339
/*这道题最大的教训就是要注意结果大小写问题刚开始一直输出Yes和No,而要求的是YES和NO*/#include#include#include#include#include#include#include#include#includeusing namespace std;int cmp(const void *a,const
2017-06-13 20:33:06
228
原创 UVa1587
/*这道题主要是练习一下结构体的使用,包括初始化和运算符重载解题思路很简单,根据长方体六个面的结构特点,先把他们的长宽对进行排序那么0和1,2和3,4和5都应该是相等的然后判断他们的长度关系,0和2的宽应该是相等的,0和2的高分别是4的宽和高*/#include#include#include#include#include#include#
2017-06-12 17:21:37
965
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人