摘要:
男人八题中的签到题,因为懒得用单调队列优化,所以用了二进制优化,但是这样很卡时限 我第一次是用int数组来表示dp数组,然后通过01背包的加法求,之后判断,但是这样memset的时间会很长,所以建议用bool数组+或判断,因为我们只在乎是否存在而不在乎多少 #include<iostream> #i 阅读全文
posted @ 2020-03-08 22:39
朝暮不思
阅读(119)
评论(0)
推荐(0)
摘要:
#include<iostream> #include<cstring> using namespace std; const int N=3e5+10; int h[N],e[N],ne[N],idx; int w[N]; double f[N]; int in[N]; void add(int 阅读全文
posted @ 2020-03-08 17:34
朝暮不思
阅读(100)
评论(0)
推荐(0)
摘要:
这道题和poj1823 一毛一样 可以参考我的另一个题解 唯一的区别是,他要找的是最左边的,那么我们自然可以考虑越左越好 如果当前点的lmax能满足,直接返回 不然的话,如果当前点的左儿子的tmax满足,就去左节点 如果是横跨区间的,也直接返回 如果在右儿子,就去右儿子 注意,我之前已经特判过不满足 阅读全文
posted @ 2020-03-08 15:39
朝暮不思
阅读(138)
评论(0)
推荐(0)
摘要:
这道题主要是第三问较为复杂,但是我们曾经学过求一维上的最大子段和,这样自然想到设计lmax,rmax和tmax来表示最长连续的0 然后本题的懒标记可以设计为三种状态,但是在传递的时候只需当当前是全空和全满的时候传递,不然这个传递没有意义,传递下去就是为了更改子节点,如果当前父节点都是有空又满 那么只 阅读全文
posted @ 2020-03-08 14:45
朝暮不思
阅读(110)
评论(0)
推荐(0)
摘要:
这道题很容易看出是求最大值的最小值,然后我们发现每个边的取值范围都是一段区间,这就是常见的用区间表示是否满足题意,当左边界大于右边界的时候就不满足 #include<iostream> #include<queue> #include<map> #include<vector> #include<c 阅读全文
posted @ 2020-03-08 10:19
朝暮不思
阅读(107)
评论(0)
推荐(0)