A Coffee Break(二分&&筛法)
直接用素数筛法的感觉去筛选即可,就是要注意筛选的过程中如果没有恰好找到的话,那么需要二分搜索下一个位置,否则超时,然后还需要注意如果找了临近的下一个位置那么now一定要变成那个值!!!我比赛的时候因为这个wa了
代码
1 |
|
B Glider (二分)
这个题实际上需要先把空气流层和无重力环境的层两种情况进行都先分出来然后我们会发现只需要将无重力层开始后续加上一个原先的高度即可,也不需要考虑很复杂了。最后就是二分答案,枚举各个起点然后二分无重力层最多的情况,最后答案加上初始高度即可,比赛的时候想复杂了。。。
代码
1 |
|
C Bacteria(优先队列||堆)
优先队列大水题当时就是因为没敢用优先队列做,因为想到要pop两个出来感觉有点奇怪,实际上思路还是一样的。这个题大家都做出来了也不多说了
代码
1 |
|
D Masquerade strikes back(暴力)
直接暴力出奇迹,至于如何输出看代码即可,比赛的时候没有想到真要暴力啊都
代码
1 |
|
E Painting the Fence(set)
这个题真心的不好想也不好做,主要是一个离散化的过程,我们不可能用O(N*N)的时间复杂度做,如何把他们离散化呢?这里开出了set数组然后把这个数出现的位置先塞到set数组里面然后每一次染色都需要把两个位置之间的所有位置删除并且原来的数的位置也会删除。好需要加一个优化要不TLE TEST55就是如果当前删除的这个位置的数已经是被询问要染色过的话,那么他会只剩下一个终点这个时候就不要再循环暴力了,直接输出终点然后结束循环即可
代码
1 |
|
F Tickets(筛法)
直接预处理一次然后输出答案即可
代码
1 |
|
G Tree Reconstruction(贪心&&思维)
这个东西也是不好做,这里有一种简单的构造方法。首先判断如果最后一个节点不是最大值n的话那么肯定是不行的(这个地方确实是有点果断但是还是对的。。。)也就是说右边的节点必须得是n输入的时候否则就NO即可,然后我们升序排序把第一个最小的当成这个树的根,然后判断下一个小的数当前有两步
1.如果当前的数不等于上一个数,那么把这个数也放进答案同时set维护的值去掉这个数
2.否则的话看一看set顶端的最小的数是不是比当前的数小,如果是set顶端进入答案否则输出NO
代码
1 |
|
H Theater Square(数学)
好像都会做直接放码了
代码(昊哥版本)
1 |
|
I Heist(语法基础)
代码
1 |
|
J Buying a TV Set(数学)
代码(凯哥版本)
1 |
|
K Medians and Partition(数学&&规律)
反正直接放lsr大佬的代码就行了
1 |
|