6月6日
6月7日
b1005数组越界
a1048第三个测试点不过,m小于500,但是1000-m可能大于500
6月7日
b1020/a1070 浮点数double输入符号为%lf
a1033 难度爆炸,按着摩擦。注意思路的拟定,第一个加油站是特殊的。因为它必须在杭州附近。输出格式注意。
6月8日
a1037 不出结果,注意循环是否跳出。
a1067 测试点12超时,因为找不在位置上的数会可能会出现n^2的复杂度
a1038 需要学习6.3string用法再做,用char数组比较麻烦
6月9日
a1010 radix可以不止36
6月10日
a1085 long long = int *int 是错的,应该为long long = (long long )int *int;
6月12日
a1089 熟悉归并排序。并且初始序列不参与与目标序列的比较。
6月13日
a1101 先排序再比对时间复杂度度为nlog n,活用递推时间复杂度度为n.
6月14日
b1003 看懂题目意思。总结递推关系。
6月16日
a1078 quadratic probing 是二次探测法的意思。
6月17日
a1024 循环退出条件要注意。
6月17日
a1039 hash字符串计算,字母应该乘以26。会有重复两个id共用一个数字id的情况,出错。
6月18日
a1047 排序可以比较的内容不一定是内部数据,可以是它当指针对应的数据之间的比较。
6月18日
a1060 没有思路。
6月20日
a1100/b1044 可以把每个数字的表列出来string strtoint,map inttostring。也可以列出一些,再用算法计算。
a1054 程序的全局变量可用区间非常大。局部变量空间固定,而且比较小。因此大数组定义在全局区比较好。数组定义时 候,下标必须是常量而不能是变量。所以,必须用const,或者常数值。
6月23日
a1022 排序不一定一定用sort,可以用set,不过sort快一些。当用cout输出前面补充0的整数时。可以用iomanip这个头文件 设置输出的格式。setw()用来设置宽度,setfill(char)用来填充。
6月23日
广度优先搜索,需要队列可以直接用。使用front(),pop()之前需要用empty()判断队列是否为空的。
6月23日
没有front(),back()函数。只有top()访问队伍顶元素,优先级最高的。
6月23日
模拟递归,防止溢出。递归栈比较小。
6月23日
头文件#include
6月23日
max()min()abs(x)x必须是整数。swap(x,y)交换
6月24日
a1051 熟悉怎么用栈输出与输入,以及和一个排列比较,判断。
6月24日
a1056 清空队列时候的判定要注意。
6月25日
a1074 要考虑无效节点。要先列出算法,再写。会有整体性。
a1032 输入字符的时候记得把前面的缓存的空格给释放掉。好方法是,遍历链表一次,遍历过的标志1,另一个遍历,若访 问到标志位为1的,则证明开始重合了。
a1052 如果没有一个有效节点,应该输出-1。这个应该注意。
a1097 读懂题目意思,分成两列还是一列。输出格式要注意。
6月26日
a1103 整数的乘方应该用自己的函数比较方便,因为double转整数有误差。还有不一定是平方,开平方确定边界其实还是有 一部分余量。可以先把需要的数据列出一个vector,这样就是查询了。
6月27日
a1091 要注意编程的模块化。而且访问的时候,很容易超出边界。所以要判断坐标是否合法。
6月27日
a1020 注意post是后序遍历。创建二叉树可以返回,也可以传引用。创建指针的时候要注意,不能指向局部变量。因为局部 变量在函数结束的时候就失效了。这时候指针指向的是一个无效地址。
6月29日
a1086 注意题目。中序遍历,用栈的时候,入栈的顺序是先序序列。因此可以用入栈顺序和出栈顺序确定一个树。
a1102 反转树,可以先输出右子树再输出左子树。也可以存结点的时候,左右分开存。也可以遍历一遍反转树。
6月29日
a1079 可以用深度优先搜索也可以。需要用一个量代替当前深度。这个量应该作为参数传递。边界是子节点没有。还有理 解题目的意思。
7月2日
a1094 未考虑只有一层的情况。还有最后假如结果是最后一排,出去的结果没有。因为我写的程序是用下一排作为条件来修 改上一排的数据。
a1106 要注意层数与个数不要弄混了。段错误一般是访问了数组外。
a1053 注意循环结构是否包含了不该包含的。
7月3日
a1043 要注意递归函数的返回。要判定给出的顺序是否可以构成先序序列。可以将序列用插入的顺序构建BST。再遍历比 较。序列插入顺序可以构成二叉树不一定是先序序列。但是先序序列的构成的顺序二叉树它的先序序列一定相同。
a1064 要注意队列。对于为NULL的指针,不入队列,否则访问就会出错。而且,判断队列是否为空再输出空格应该在最后 判断,在入队完成之后。书里的方法是,按照程序便利的顺序编号,则完全二叉树的两个子节点是2n与2n+1。则可以先建立 一个以数组表示的二叉树。然后遍历过程中,把数据填进去。然后建立之后。按找数组的顺序遍历。就是层序遍历了一遍。
a1099 count这个在std空间里有重名,所以应该用c比较好。
7月4日
a1066 记住模板。max函数属于algorithm,要加命名空间std。
7月4日
a1107 vector的size()是一个无符号数,无符号数减1可能得到是最大的数。可能会访问出界。并查集记住模板。以及记住把 每个单元看作几个节点。自己与自己的一个节点。
7月4日
a1098 排序问题。和a1089是一类。要注意和中间序列一样的情况。必须是最后一个顺序一样。即下一步顺序就不一样了。
sort可以用来模拟插入排序。
7月5日
a1013 集合的问题都可以用并查集。并查集是个好东西。难用但是很精密。
a1021 可以试一试并查集。
a1034 这题太复杂。涉及字符串的处理,以及字符串与int之间的转化。还有遍历。以及点权和边权的问题。邻接矩阵好像有 用了。边权的时候。要计算全部的边权。就必须把所有的边枚举全。但是便利的过程不要兜圈。所以点的遍历不兜圈。为什 么不用是否访问了点来试图判断该点相关的边是否访问。因为图可能有环。而环在的话,这样会缺少一条边。因此还是每个 点的所有边枚举。访问了一条边,删除一条边。知道所有点访问完全。边也访问完全了。
7月6日
a1076 可能会存在回头路。这里只有点有用。还有需要知道当前在第几层。我觉得可以用两个东西来存高度和是否访问比较 好。一个比较难思考。
7月6日
a1003 要熟练记住模板,以及要思考里面的逻辑。常用之后应该就会用得心应手。最开始还是要抓原理和逻辑。而且,可以 在用Dijkstra算法生成最短距离的过程中。生成到达每个点的最短路径数。比如若是最短路径更新,则路径数等于前一个节 点路径数。若是经过最新节点的路径相等,则该点是一条新的路径。则路径数应该加上这个节点的路径数。同理点权也是。 若是路径更新。则点权必然更新。若是路径相等,则看点权优先级决定是否更新。这样比生成pre数组的好处是。过程中自 动生成,从源点到所有点的最短路径条数和点权最优数,便于查询。用DFS在逻辑复杂的问题里面。使用范围比单独用 Dijkstra大,最好生成路径,然后怎么操作就比较直观方便。
7月7日
a1018 题目意思理解错误。巨难。爆炸难度。隐藏的陷阱是,前往过程中调整,回来的路上不调整。而且有三个标尺。还有 要注意,你带的车,可能会变成你最后剩下的车,要自己带回来。**
a1030 第一遍dijkstra没有疑问,后面的DFS要注意两点。对于不存在的边权应该置为inf。因为邻接表,每个边都访问,会 出错。而且对于一些变量名字可能有冲突,要注意。用两遍dijkstra也可以。但是还不熟练,所以很混乱。
7月8日
a1072 典型的dijkstra。三重标尺。重要的是把编号改变过来。不要多访问,会出现段错误。
a1087 问题1,变量太多,导致全局变量和局部变量重名。影响结果。问题2,路径的下标不是map的下标。重要的是熟练, 在理解的基础上,多做题。还有要注意单个dijkstra的做法,重要的是覆盖与更新的思想。就是什么时候覆盖什么时候更新。 这个更简单,节省时间。但是思路没有dijksta加dfs清晰。
7月9日
a1007 需要注意,对于特殊情况应该先处理,分开处理比较好。比如特殊例子当全为0时输出-1等。如果要建立一个方案, 能包括这种特例,比较复杂。不如分开讨论,直观,逻辑好。这题某个测试点出错。就是这个特殊例子不好。因为会有特殊 情况没有考虑到。
a1045 问题没看懂。运用最长不下降子序列。可以灵活变通。比如给定一个顺序。可以把这个顺序映射成为一串数字,增长 的数字。预先处理数据,就可以用了。
模拟过程。用最长公共子序列。模板是一个对应一个,这里是一个对应多个。只需要稍微改一改就可以了。不需要剔除杂七 杂八的东西。
a1040 回文的模板要理解记住。矩阵只有半边矩阵有用。而且它是以距离遍历的。而不是坐标。
7月10日**
a1068 背包问题。要清楚上个状态和下一个状态的关系。
7月11日
a1040 要记住二分法。algorithm库函数。
7月11日
a1057 用来记录所有数的表,可能有重复的。这种思想在计算机操作系统中有。用来查找第几比较有用。
7月12日
a1057 用数状数组要掌握三个东西。一个是lowbit(i),还有update函数以及getsum函数。这个可以用来得到某点左边有多少 人。因为它可以得到到目前这个值包括这个值一共有多少个。所以重要的是要有一个排序的东西。
7月12日
a1105 要有画圈的概念。如果用两个变量存储目前的x,y值。要注意下x,y的运动轨迹,不要从路径上出去了。因为出去了不 好找回来。若是不用公共坐标,就不会出错。但是比较麻烦。
a1017 这里模拟排队。可以将窗口存一个数据。来的人存一组数据。人里面把一些不要的数据剔除。然后再依次到达。如果 到达的时间比上一个人结束时间早。就要等待。每次都是挑选窗口等待时间最短的窗口等待。所每次来人,窗口都要排序, 或者遍历找出最小的值,排队,然后更新这个窗口下一次空闲的时间。由于一个节点之后银行才工作。所以对于小于某个时 间的数据。要注意处理。总的思想就是。不仅人要记录信息。窗口也要记录信息。就是什么时候结束服务。这个对于每到来 的人处理等待时间是有必要的。
7月13日
a1014 要足以数组向量字符串的下标,容易弄混。要注意。这题是开始的时候在某一时刻之前就可以。而不是结束时候在某 一时刻之前。还有是大于还是大于等于要注意。用队列啊!!!用什么vector,然后把首元素删除,你这不是多此一举 吗???直接用队列不是很好吗。
7月14日
a1026 要注意理解题目意思。当vip队员到达的时候,如果有多个台子空闲,他也会选择vip台子。要记住四舍五入的表达。