- 博客(99)
- 资源 (1)
- 收藏
- 关注
原创 《算法笔记》 学习记录汇总目录
Part 1第一章 ~ 第二章 C/C++快速入门Part 2第三章 ~ 第四章 入门篇 传送门简单模拟,查找元素,图形输出,日期处理,进制转换,字符串处理排序,散列,递归,贪心,二分,tow pointers,其他高效技巧与算法Part 3第五章 数学问题 传送门Part 4第六章 C++标准模板库(STL)介绍 vector set strin...
2018-02-27 19:36:32 611
原创 ROS Tutorials 初级教程学习总结 1 - 4
ROS Tutorials 初级教程学习总结 1 - 4ROS wiki 教程1. 安装并配置ROS环境1.1 安装ROS见另一篇博客 Ubuntu16.04 ROS-Kinetic 安装1.2 管理环境通过类似apt的软件包管理器安装ROS软件包时会生成setup.*sh文件,*如果是通过 Ubuntu 上的 apt 工具来安装ROS的,那么将会在 ‘/opt/ros/<版本名>/’ 目录中看到 setup.sh 文件。如果是kinetic版本,则执行$ souce /opt/
2020-11-22 21:44:55 364
原创 PATA1052.Linked List Sorting
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>#include <algorithm>using namespace std;const int maxn = 100010;struct Node{ int key,address,next; bool flag=false;//结点是否在链表上}node[maxn];b...
2018-03-17 16:55:00 281
原创 PATA1032.Sharing
题目链接:点击打开链接知识点笔记:思路就是输入数据时候全部为false,然后按第一个链表走一遍,把第一个链表有的元素置为true,然后再按第二个链表走一遍,碰见第一个true就直接return 0退出程序scanf("%d %c %d",&address,&data,&next); 这里输入必须加空格AC代码:#include <cstdio>using n...
2018-03-17 15:06:40 330
原创 PATA1074.Reversing Linked List
题目链接:点击打开链接知识点笔记: AC代码:#include <iostream>using namespace std;int main(){ int first,k,n,count=0; cin>>first>>n>>k; int temp,data[100005],next[100005],list[100005],resul...
2018-03-17 10:12:29 204
原创 C++数据结构 栈和队列
栈PATA-1051 Pop Sequence#include <iostream>#include <stack>using namespace std;const int maxn = 1005;int arr[maxn]; //保存给定的出栈序列stack<int> st;int main() { int m,n,t; scanf("%d...
2018-03-16 16:21:48 426
原创 PATA1022.Digital Library
题目链接:点击打开链接知识点笔记: auto自动识别类型AC代码:#include <iostream>#include <map>#include <set>using namespace std;map<string,set<int> > mpTitle,mpAuthor,mpKey,mpPub,mpYear;...
2018-03-16 00:55:16 263
原创 PATA1071.Speech Patterns
题目链接:点击打开链接知识点笔记: <cctype>下几个常用方法 转小写tolower和转大写toupper isalpha如果是字母,返回一个非零数;否则返回为0 isalnum如果是字母或数字,返回一个非零数;否则返回为0 isdigit如果是数字(0-9)返回一个非零数;否则返回为0 本题需要注...
2018-03-15 23:40:23 191
原创 PATA1054.The Dominant Color
题目链接:点击打开链接知识点笔记: 本题如果不用map,思路:由于题目要求必须超过半数,因此有超过半数的数相同,如果采用两两不同的数相互抵消的做法,最后一定会剩下那个超过半数的数字。于是可以设置一个ans存放答案,设置另一个变量count计数ans出现的次数,然后在读入时判断ans与读入的数字是否相等,如果不相等,则令其抵消一次ans,如果相等,则令count加1.当然,如果某步co...
2018-03-14 16:20:34 216
原创 PATA1100.Mars Numbers
题目链接:点击打开链接知识点笔记: 题目中是整行输入,scanf("%d%*c",&n),另外cin是以空格结尾,getline是以回车结尾 由于题目的数只有两位,即0~168,所以直接可以打表实现 AC代码:#include <iostream>#include <string>#include <map>...
2018-03-14 14:40:23 231
原创 PATA1060.Are They Equal
题目链接:点击打开链接知识点笔记:AC代码:#include <cstdio>#include <cstring>using namespace std;int main() { int n, p = 0, q = 0; char a[10000], b[10000], A[10000], B[10000]; scanf("%d%s%s", &...
2018-03-12 22:45:01 249
原创 PATA1063.Set Similarity
题目链接:点击打开链接知识点笔记: --find函数的使用,find会挨个查找set,当到达set.end()时,也就是一个也没找到,返回endAC代码:#include <iostream>#include <set>using namespace std;const int N = 51;set<int> st[N];void compar...
2018-03-12 15:02:15 222
原创 PATA1047.Student List for Course
题目链接:点击打开链接知识点笔记: course[i]存放所有选第i门课的学生编号,如果某学生i选择了课程j,那么就将该学生的编号i存放到course[j]中 对每一门课i,将course[i]中的学生按姓名字典序从小到大排序,然后输出。AC代码:#include <iostream>#include <algorithm>#include <cstr...
2018-03-12 12:38:40 242
原创 PATA1039.Course List for Student
题目链接:点击打开链接知识点笔记: 字符串hash映射要掌握,题目给的字符串格式是三个大写字母加一个数字,所以是26*26*26*10-1.AC代码:#include <iostream>#include <cstring>#include <vector>#include <algorithm>using namespace ...
2018-03-11 15:21:31 208
原创 PATA1082.Read Number in Chinese
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>#include <cstring>using namespace std;char num[10][5] = { "ling","yi","er","san","si","wu","liu","qi",
2018-03-11 12:21:04 245
原创 PATA1077.Kuchiguse
题目链接:点击打开链接知识点笔记: 这题的关键是字符串的反置,也可以用reverse函数做AC代码:#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main() { int n,minLen=256,count=0; char...
2018-03-11 11:59:06 333
原创 PATA1035.Password
题目链接:点击打开链接知识点笔记: 注意输出的单复数判断,这个坑。。 AC代码:#include <iostream>#include <cstring>using namespace std;struct user{ char name[20]; char password[20]; bool modify=false;}users[1...
2018-03-11 00:14:31 348
原创 PATA1005.Spell It Right
题目链接:点击打开链接知识点笔记: 挺简单的,就是输入的数太大,需要用字符串处理AC代码:#include <iostream>#include <cstring>using namespace std;int main() { char res[10][10]={"zero","one","two","three","four",&qu
2018-03-10 22:55:17 303
原创 PATA.A+B Format
题目链接:点击打开链接知识点笔记: 注意一点,9,999(正确) 999,9(错误) AC代码:#include <iostream>using namespace std;int main() { int a,b; scanf("%d %d",&a,&b); int sum = a+b; if(sum<0){ printf("-"); ...
2018-03-10 20:59:55 276
原创 PATA1073.Scientific Notation
题目链接:点击打开链接知识点笔记: 这个题的关键是先得到E的位置pos,再得到指数exp的位置,exp的位置是pos+2 在exp>0时,比较难分析,小数点应该加在exp+2的位置上,原小数点和E之间的数字个数pos-3不能等于小数点右移的位数exp,因为此时是一个整数,不需要小数点。AC代码:#include <iostream>#include <cstr...
2018-03-10 16:55:37 247
原创 PATA1061.Dating
题目链接:点击打开链接知识点笔记: 一个小技巧,第一个和第二个循环都是处理str1和str2的,而且有先后顺序,可以将 i 设为循环外面 %02d运用AC代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;int main() { ...
2018-03-10 14:02:39 246
原创 PATA1058.A+B in Hogwarts
题目链接:点击打开链接知识点笔记: 第一次提交有一个2分的case没有过去,最后发现还是边界问题,g、s、k 和 sum都要用long long类型AC代码:#include <iostream>using namespace std;typedef long long ll;int main() { int Galleon = 17*29; int Sickle = ...
2018-03-10 12:34:18 287
原创 PATA1027.Colors in Mars
题目链接:点击打开链接知识点笔记: 自己的做法比较复杂,写了一个专门转换进制的函数,就不贴了,这个方法比较简洁,因为给的十进制数的范围是[0,168],168是小于13的平方的,所以直接一步转换就可以了。AC代码:#include <iostream>using namespace std;char radix[13]={'0','1','2','3','4','5...
2018-03-10 10:11:30 195
原创 PATA1019.General Palindromic Number
题目链接:点击打开链接知识点笔记: 对一个P进制数x转换为Q进制,需要两步 Step1:将P进制x转换为十进制数yint y=0,product=1; while(x!=0){ y = y + (x%10)*product; x /= 10; product *= P; } Step2:将十进制数y转换为Q进制数zint z[40],num=0; d...
2018-03-10 00:16:02 177
原创 PATA1031.Hello World for U
题目链接:点击打开链接知识点笔记: 主要是n1,n2,n3的求值,理解公式即可AC代码:#include <iostream>#include <cstring>using namespace std;int main() { char str[100]; gets(str); int N = strlen(str); int n1,n2,n3; n...
2018-03-09 23:10:52 258
原创 PATA1036.Boys vs Girls
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>#include <algorithm>using namespace std;struct student{ char name[15]; char gender; char id[15]; int grade;}low,high,temp;int main() {...
2018-03-09 16:55:26 210
原创 PATA1006.Sign In and Sign Out
题目链接:点击打开链接知识点笔记: 灵活运用比较函数AC代码:#include <iostream>using namespace std;struct admin{ char id[20]; int hh,mm,ss;}temp,ans1,ans2;bool cmp(admin a1,admin a2){ if(a1.hh!=a2.hh) return...
2018-03-09 16:21:09 288
原创 PATA1011.World Cup Betting
题目链接:点击打开链接知识点笔记: 送分题AC代码:#include <iostream>using namespace std;int main() { double w,t,l; double a[3]; for(int i=0;i<3;i++){ scanf("%lf %lf %lf",&w,&t,&l); a[i]=max(...
2018-03-09 14:51:00 172
原创 PATA1009.Product of Polynomials
题目链接:点击打开链接知识点笔记: 注意ans数组至少要开到2001,防止A和B如果都是最高幂次1000而越界,没有必要两个数组存放两个多项式然后读完系数再处理,只需第二个多项式的系数边读入边处理 AC代码:#include <iostream>using namespace std;struct Poly{ int exp; //指数 double cof;...
2018-03-09 10:11:40 236
原创 PATA1002.A+B for Polynomials
题目链接:点击打开链接知识点笔记: 首先学几个单词,Polynomial多项式,exponent指数,cofficient系数 对于这类关于方程的求解问题,灵活运用数组下标,a[e] = k,k为系数,e为指数AC代码:#include <iostream>using namespace std;const int maxn = 1010;int main() {...
2018-03-09 09:19:34 253
原创 PATA 1065.A+BandC
题目链接:点击打开链接知识点笔记: 显然此题需要用long long类型,但是仍然会溢出,long long类型是范围是[-2^63,2^63),是前闭后开区间,有一个测试点我在做的时候一直通过不了,就是因为后面这个开区间,long long类型取不了2^63这个值,当A、B都为正数时,A+B>= 2^63时会超过long long的正向最大值而发生正溢出。A和B的最大值为2^...
2018-03-08 23:46:17 462
原创 PATA1046.Shortest Distance
题目链接:点击打开链接知识点笔记: -- 做的时候有一个点没有想到,就是数组D[i]的设置,可以让查找的时间复杂度变为O(1)纠结了一段时间在D[0]上,其实D[i]的就是1沿着顺时针到i的下一个点的距离之和,那D[0]就是0的下一个就是1,就是1到1的距离,当然是0了。。AC代码:#include <iostream>#include <algorithm>us...
2018-03-08 21:47:23 276
原创 PATA1042.Shuffling Machine
题目链接:点击打开链接知识点笔记: -- 三个数组,start用于存放执行操作前的牌序,end用于存放执行操作后的牌序,next数组存放每个位置上的牌在操作后的位置。 -- 最后的输出循环,以后可以常用,一个空格加一个数据一组,第一组的空格不输出。AC代码:#include <iostream>using namespace std;const int N=54;ch...
2018-03-08 20:24:07 265
原创 PATB1017.A除以B(20)
题目链接:点击打开链接知识点笔记:AC代码:#include <iostream>#include <cstring>using namespace std;struct bign{ int num[1005]; int len; bign(){ memset(num,0,sizeof(num)); len = 0; }};bign chang...
2018-03-07 22:01:35 381
原创 《算法笔记》学习记录 Part 6 字符串专题
第十二章 字符串专题12.1 字符串hash进阶字符串hash是将一个字符串S映射为一个整数,使得该整数可以尽可能唯一地代替字符串S。使用散列函数,H[i] = ( H[i-1] * 26 + index(str[i]) ) % mod通过这种方式把字符串转换成范围上能接受的整数,在实践中发现,在int数据范围内,如果把进制数设为为一个10^7级别的素数p(如10000019),同时把mod设置...
2018-03-04 22:33:00 305
原创 《算法笔记》学习记录 Part 5 动态规划
第十一章 动态规划专题11.1 动态规划的递归写法和递推写法动态规划(Dynamic Programming,DP)是一种用来解决一类最优化问题的算法思想。简单来说,动态规划将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。需要注意的是,动态规划会将每个求解的子问题的解记录下来,这样当下一次碰到同样的子问题时,就可以直接使用之前的记录的结果,而不是重复计算一般可以使用...
2018-03-03 15:22:21 331
原创 第十章 数据结构专题 —— 图(下)
第十章 数据结构专题 —— 图(下)10.6 拓扑排序如果有一个有向图的任意顶点都无法通过一些有向边回到自身,那么称这个有向图为有向无环图(Directed Acyclic Graph,DAG)拓扑排序是将有向无环图G的所有顶点排成一个线性序列,使得对图G的任意两个顶点u、v,如果存在边u->v , 那么在序列中u一定在v前面。这个序列又称为拓扑序列。vector <int>...
2018-03-03 15:10:45 290
原创 《算法笔记》学习记录 Part 4 图(中)
第十章 数据结构专题 —— 图(中)10.4 最短路径对任意给出的图G(V,E)和起点S、终点T,如何求S到T的最短路径,解决最短路径问题的常用算法有Dijkstra算法,SPFA算法、Bellman-Ford算法、Floyd算法10.4.1 Dijkstra算法Dijkstra算法用来解决单源最短路径问题,即给定图G和起点S,通过算法得到S到其他每个顶点的最短距离。const int MA...
2018-03-03 12:29:43 246
原创 《算法笔记》学习记录 Part 4 图(上)
第十章 数据结构专题 —— 图(上)10.1 图的存储10.1.1 邻接矩阵设图G(V,E)的顶点标号为0,1,……,N-1,那么可以令二维数组G[N][N]的二维分别表示图的顶点标号,即如果G[i][j] = 1,则说明顶点i和顶尖j之间不存在边,而这个二维数组G[][]则被称为邻接矩阵,如果存在边权,令G[i][j]存放边权,对不存在的边可以设边权为0、-1、INF10.1.2 邻接表设...
2018-03-02 17:39:54 206
原创 《算法笔记》学习记录 Part 3 树(下)
第九章 数据结构专题 —— 树(下)9.7 堆 9.7.1 堆的定义与基本操作堆是一颗完全二叉树,树中的每个结点都不小于(或不大于)其左右结点孩子结点的值,分为大根堆和小根堆由于是完全二叉树,可以使用数组储存const int maxn = 100;//heap为堆,n为元素个数int heap[maxn],n=10;//对heap数组在[low,high]范围进行向下调整void...
2018-03-02 14:27:34 158
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人