bzoj2687】的更多相关文章

Description     对于一个区间集合{A1,A2……AK}(K>1,Ai<>Aj{i<>j}),我们定义其权值           W=|A1∪A2∪……∪AK|*|A1∩A2∩……AK|      当然,如果这些区间没有交集则权值为0. Input     给你N个各不相同的区间,请你从中找出若干个区间使其权值最大. 第一行N 接下来N行 l r(1<=l<r<=10^6) Output 最大权值 Sample Input 4 1 6 4 8…
题意 给定 \(n\) 个区间,我们定义区间集合 \(S(|S|>1)\) 的权值为 区间交 \(\times\) 区间并,找出权值最大的区间集合. \(n\le 10^6\) 分析 首先排除区间包含的情况,但是注意存在特殊情况:答案是两个区间,其中一个区间被另一个包含. 排除之后的区间左右端点都递增,我们的答案一定是一段连续的区间,记最左最右的区间为 \(i,j\) ,容易得到 \[ans=(R_j-L_i)\times(R_i-L_j)\] 将式子拆开: \[ans=R_iR_j+L_iL_…
Description 对于一个区间集合 {A1,A2--Ak}(K>1,Ai不等于Aj(i不等于J),定义其权值 S=|A1∪A2∪--AK|*|A1∩A2--∩Ak| 即它们的交区间的长度乘上它们并区间的长度. 显然,如果这些区间没有交集则权值为0. Your Task 给定你若干互不相等的区间,选出若干区间使其权值最大. Input 第一行n表示区间的个数 接下来n行每行两个整数l r描述一个区间[l,r] Output 在一行中输出最大权值 Sample Input 4 1 6 4 8…
原题传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2687 [题目大意] 给出若干区间,求一个区间的大于等于2的子集,使得 |区间并| 和 |区间交| 的乘积最大. $1\leq n,L_i,R_i\leq 10^6$ [题解] 把区间去掉包含情况,然后进行排序,变成$l_i$和$r_i$都递增的数列. 然后容易发现取得区间一定是连续的一段. 然后我们推一推决策单调性. 容易得出当$j$优于$k$的情况: $r_i * (r_j - r_…
整体二分+决策单调性 这个方法已经忘了... 决策单调性是指dp[i]由dp[1]->dp[i-1]更新,那么当dp[j]比dp[k]优且j>k时,对于i->n j都比k优 通过这个性质我们可以把dp优化到nlogn 具体做法是整体二分 solve(l,r,L,R)表示当前对于l->r的dp决策区间在L->R 那么我们选中(l+r)/2,并且枚举所有L->R满足的决策来更新,solve(l,mid-1,L,p) solve(mid+1,r,p,R) #include&l…
10/13 明天开始的三天 就要跟历史地理化学说拜拜了 以诚待之 好运 10/20 P三角形计数:一看就是叉积.因为去年迪子讲过.但是我已经忘记了.所以重新写了一遍.把所有的点有序化,将三角形面积转化为两个的叉积.因为要把绝对值去掉,所以每次都要做一遍快排.Then,不难发现它们具有前缀和性质.就可以敲起来了. bzoj4557侦察守卫:R老师讲的时候没听懂..百度题解发现了很精妙的写法..想法差不多RT了... #include<cstdio> #include<algorithm&g…
以[BZOJ2687]交与并为例给出代码. #include <bits/stdc++.h> #define rin(i,a,b) for(register int i=(a);i<=(b);++i) #define irin(i,a,b) for(register int i=(a);i>=(b);--i) #define trav(i,a) for(register int i=head[a];i;i=e[i].nxt) #define Size(a) (int)a.size(…