[[toc]]
- 小技巧
1
2
3
4
5vector<int> in;
int n;
scanf("%d", &n);
in.resize(n)
结构体初始化和运算符重载
1 | struct node{ |
注意,由于set初始就是从小道大排的,所以重载<与cmp类似, 但是priority_queue初始是优先级大的在前面,因此重载<会不一样。
8.23 题目
1112 Stucked Keyboard
思路:
1 |
注意:
1113 Integer Set Partition
比较简单,排个序就行,15分钟 25分。
思路:从小到大排序,取前面一半和后面一半,sum相减即可。
1 |
|
注意:无。
1114 Family Property
思路:
1 |
注意:
1115 Counting Nodes in a Binary Search Tree
第一次做18分,但是思路太乱了,用静态节点,不熟悉,后面复习了下。下次记得写newNode函数。
思路:二叉搜索树的建立,并统计节点的layer,记录最低和第二低的层。
1 |
|
注意:每个节点的地址由编号Index递增。
8.24题目
1116 Come on!Let’s C
思路:一个简单的素数判断
1 |
|
1117 Eddington Number
思路:建个数组排序即可,思路简单
1 |
|
1118 Birds in Forest
思路:并查集,将相同照片的鸟加入一个集合。
1 |
|
1119 Pre- and Post-order Traversals
思路:前序后序,找左右子树,不存在时,将所有节点当左子树。
1 |
|
8.25 题目
1120 Friend Numbers
思路:利用set可以避免重复和直接排序。
1 |
|
1121 Damn single
思路:也是利用set并使用erase去除重复的数据。
1 |
|
1122 Humitonian Cycle
思路:用vis记录是否所有点都出现过,保证是回路。
1 |
|
1123 Is it a complete AVL tree
思路:AVL的模版要记牢,是否是完全二叉树只要判断子树前面是否有空就行,利用变量kong记录。
1 |
|
AVL中有些参数是node* &root,此时传入的地址也是实参,不是复制,有时会改变更节点的位置,因此&一定要加上。
8.26题目
1128 N Queens Puzzle
思路:只要判断是否在斜对角线上就行
1 |
|
注意:测试点一,可能出现在同一行的情况,要加条件判断, 是否所有数字都出现了。
1129 Recommedation System
思路:写的时候每次加入都去sort,有些答案超时了。方法1是自己写的,每次都去sort排序很浪费时间,但是想不到什么好的方法。方法二是柳神的,写的时候也用过set直接排序,不知道怎么两个排,set不支持sort,原来可以重载运算法,算是学到了。
1 |
|
方法二:set,重载,auto, 结构体初始化。
1 |
|
注意:因为可能有重复的node因此要做erase。
1130 infix Expression
思路:用了静态数组节点,最难的应该是什么时候加括号,经过发现当一个节点有左子树或者有右子树的时候,且不为根节点时加。
1 |
|
8.27 题目
1132 Cur Integer
思路:用string去截字符串即可,第一次做测试点二三报了浮点错误。了解到了浮点错误因为除零报错了。后面改了下代码,特判一下就行了。
1 |
|
1133 Splitting A Linked List
思路:创建三个vector,遍历链表的时候,顺序将范围中的树加入到相应数组中,最后合并到一个数组即可。
1 |
|
1134 Vertex Cover
思路:只要确保查询的节点中包含所有边就行了。用set存加入的边,当set.size == m,即可输出yes,反之输出no。
1 |
|
1135 Is it A Red-Black Tree
红黑树没学过,不了解,写不来。