
倍增
TA201314
这个作者很懒,什么都没留下…
展开
-
动态树 解题报告
这个题我做的时候没有考虑到一个性质,导致多了一个log,然后麻烦了好多好多。 就是说合并两个区间的时候,我以为左边的最小值会接管右边第一个比它小的左边的一段,所以我要求这一段的最大值。 但是实际上,如果右边右段的最大值比右边左段的最大值大的话,显然这是无论如何都不能更新答案的,所以我们直接用右边的最大值就好了。#include<cstdio> #include<cstring> #include原创 2015-07-06 19:57:23 · 780 阅读 · 0 评论 -
[Apio2009]CONVENTION会议中心 解题报告
这题并不会做。。 这道题的主要问题是如何求一个区间的最大不相交线段覆盖,思路是可以用倍增来加速贪心。就是说我们本来是求一个区间里最多有多少条线段,我们把它转换成二分/倍增线段数,求其最短的区间是多少。 代码:#include<cstdio> #include<iostream> using namespace std; #include<algorithm> #include<cstring>原创 2016-04-05 09:56:29 · 2371 阅读 · 0 评论 -
calc(陈立杰) 解题报告
感觉最近状态真是烂到爆。。首先不妨令序列有序,然后再乘n!即可。一上来先想到可以倍增,设f[i][j]表示在1~j中选i个数,那么有j->2j,便可以通过枚举一边选了几个得到。但是算错了复杂度以为是O(n3logn)O(n^3\log n)的。。(矩阵乘习惯了一倍增就感觉是三方挂logn。。)(没想到看了题解以后这竟然就是标算。。)然后又想,既然倍增是三次方的。。。那只能看看暴力转移了。f(i,j)原创 2016-10-08 07:01:11 · 6688 阅读 · 0 评论