摘要:考虑这样一个事实:较小边与较小边比较,较大边与较大边比较一定最优 不然,较大边与较小边比较有可能不能塞入,较小边与较大边比较有可能浪费,不更优,或者说,后者能够塞入的前者一定能塞入,前者能塞入的后者不一定能塞入 考虑每次维护当前较小边的最大值和当前较大边的最大值即可 时间复杂度:O(n) #incl 阅读全文
posted @ 2020-05-05 00:10 chinakevin 阅读(18) 评论(0) 推荐(0) 编辑
摘要:考虑一个贪心:以AB为例,如果是a>b则a->b,如果b>a则b->a,否则a->b或b->a都可以 考虑这个贪心在什么时候是对的:我们的结论是当a+b+c>=3时,这个贪心是对的,证明略,除非第一次就是(0,0),否则一定有解 接下来考虑a+b+c==0,1的情况,直接判断就行了 考虑a+b+c= 阅读全文
posted @ 2020-05-04 00:29 chinakevin 阅读(57) 评论(0) 推荐(0) 编辑
摘要:首先考虑只按颜色分配的当前答案ans,那么最后剩下的果子数在[0,2k-2]之间,如果剩下的果子数在[0,k-1]之间,那么当前的ans就是最终答案,如果剩下的果子数在[k,2k-2]之间,那么最多答案还可以加一,也就是答案有可能是ans+1,下面我们用dp判断有无这种可能性 举个例子: n=1 k 阅读全文
posted @ 2020-05-02 17:55 chinakevin 阅读(109) 评论(0) 推荐(0) 编辑
摘要:考虑按照从大到小的顺序一个一个依次填充下去(平均分配) ans可以二分,也可以直接求 时间复杂度O(n+K) #include<bits/stdc++.h> using namespace std; #define N 200005 int n, K, i, now, ans, j, x, a[N] 阅读全文
posted @ 2020-04-27 17:00 chinakevin 阅读(54) 评论(0) 推荐(0) 编辑
摘要:考虑并查集按秩合并和暴力撤销 可以维护加边和删边的操作 考虑分块 详见 https://blog.csdn.net/weixin_44231553/article/details/100598481 时间复杂度 O(q*sqrt(q)*logn) 调一调参数可以过 我就是来贴个代码 #include 阅读全文
posted @ 2020-04-25 19:25 chinakevin 阅读(18) 评论(0) 推荐(0) 编辑
摘要:任意两个数如果在某位上有重叠那么这两个数就可以取 最小值一定是在取区间内两个数的时候取到 按位拆分成10棵线段树,记录当前区间的最小值和次小值 不要忘记合并 时间复杂度O(10(n+m)logn) #include<bits/stdc++.h> using namespace std; #defin 阅读全文
posted @ 2020-04-25 16:48 chinakevin 阅读(19) 评论(0) 推荐(0) 编辑
摘要:版权声明:本代码来自网络,版权归原博主所有,原博主地址:https://www.cnblogs.com/yidaixiaohui/p/8447637.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content= 阅读全文
posted @ 2020-04-25 16:28 chinakevin 阅读(52) 评论(0) 推荐(0) 编辑
摘要:对于每个i,已知ai,bi,枚举bj,求出唯一确定的aj,更新答案即可,时间复杂度O(n*maxb*logn)(可能是我写假了,有更好的复杂度请联系我,谢谢~ 阅读全文
posted @ 2020-04-18 22:16 chinakevin 阅读(33) 评论(0) 推荐(0) 编辑
摘要:10/12 阅读全文
posted @ 2020-01-16 15:54 chinakevin 阅读(39) 评论(0) 推荐(0) 编辑
摘要:新!博!客! 思考很久还是决定用一个博客来记录自己的点滴! 我也不知道它会存在多久!(如果能在众多大佬的包围下侥幸混入ACM/ICPC集训队的话大概能存在很久的 显然我现在太菜啦! 好文要顶 阅读全文
posted @ 2020-01-16 15:43 chinakevin 阅读(38) 评论(0) 推荐(0) 编辑