摘要:
开始以为时间限制比较紧,所以用二分实现的,O(logN logN)。 比较复杂,且只能确定大概位置,最后还要写一个小模拟。 模拟的特判不好写,容易漏掉情况。 想想有没有别的办法完成这个特判。 1 #include <bits/stdc++.h> 2 #define ll long long 3 4 阅读全文
摘要:
参考题解 条理清晰,十分优秀。 除了别人都说过的坑点以外,还要注意: 选服务窗口,不是找上次结束时间最小的,而应该是找下个顾客到来时第一个空闲下来的。 测试用例: 4 08:00:00 30 1 08:10:00 10 1 08:25:00 10 1 09:00:00 10 1 3 1 2 应输出: 阅读全文
摘要:
这题我是用queue写的BFS,超时了。 如果在每一层倒序遍历的话,有一个样例过不了,比答案多了1,如果用正序会超时。 我想正序遍历肯定不对,因为按照贪心的想法不对。倒序遍历,虽然是按照贪心思想,但是有可能前面的结果反而比后面的优,这种情况没办法处理。所以直接BFS不行。 因为这个含有单调性,每一个 阅读全文
摘要:
题目要求返回所有可能数组中的第 k 个 最小 数组和。 根据题目给出的矩阵每行均为单调递增的提示,可以得出下一个最小数组和是由之前得到过的数组转移过来的。 因为k的范围不大,所以可以使用优先队列+bfs思想模拟这个过程。 备忘这里的优先队列重载方法 class Solution { public: 阅读全文
摘要:
下面描述一下我的解题思路: 首先,我回忆了一下Nim博弈的规律,后来发现想不起来,决定自己想。但其实心里觉得自己肯定想不出来,可能又要看题解了。 在N小于等于4时,是可以直接推得结果的。看见题目中“你们是聪明人,每一步都是最优解。”,会不会要考虑平手的情况?我想起了SG博弈里的递归求解,后来我就想能 阅读全文
摘要:
这种用法实在太巧妙了,虽然粗略的学了一下,但是完全没想到可以这么求。 开始做题的时候以为是暴力得到每个数的逆序数,然后用树状数组来维护,后来觉得不对,这样复杂度太高了。但是不知道怎么求。 用数组维护已经出现的比当前的数小的数,就可以求出已经出现的比当前的数大的个数了。 参考博客 https://ww 阅读全文