[BZOJ2687]交与并[决策单调性]】的更多相关文章

题意 给定 \(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…
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…
原题传送门: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_…
BZOJ_2369_区间_决策单调性 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   在一行中输出最大权值…
以[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(…
其实是一个还算 trivial 的知识点吧--早在 2019 年我就接触过了,然鹅当时由于没认真学并没有把自己学懂,故今复学之( 1. 决策单调性 引入:在求解 DP 问题的过程中我们常常遇到这样的问题:我们列出了一个 \(dp\) 状态转移方程式形如 \(dp_i=\min\limits_{j<i}dp_j+w(j+1,i)\) 或类似的形式,暴力转移时间复杂度 \(\mathcal O(n^2)\) 过不去,但是你发现这里的代价函数 \(w(l,r)\) 有一些比较好的性质,譬如单调性或凹凸…
题目大意:有一个数列,将其分成m段,求最小方差 先弄出n^3的dp,打出决策点,然后发现决策点是单调递增的,决策单调性搞一搞就可以了 #include<bits/stdc++.h> #define ll long long #define maxn 3010 using namespace std; int n,m; int a[maxn],sum[maxn]; double f[maxn][maxn],x; double sqr(double x){return x*x;} void sol…
2739: 最远点 Time Limit: 20 Sec Memory Limit: 256 MB Description 给你一个N个点的凸多边形,求离每一个点最远的点. Input 本题有多组数据,第一行一个数T,表示数据组数. 每组数据第一行一个数N,表示凸多边形点的个数,接下来N对数,依次表示1~N这N个点的坐标,按照逆时针给出. Output 对于每组数据输出N个数,第i个数表示离第i个点最远的点的编号,如果有多个最远点,输出编号最小的. Sample Input 1 4 0 0 1…
题意 有一个长度为 \(n\) 的序列 \(A\) 和常数 \(L, P\) ,你需要将它分成若干段,每 \(P\) 一段的代价为 \(| \sum ( A_i ) − L|^P\) ,求最小代价的划分方案. \(n \le 10^5 , 1 \le P \le 10\) 题解 考虑暴力 \(O(n^2)\) dp. \[ dp_i = \min_{j = 0} ^ {i - 1} |sum_j - sum_i - L|^P + dp_j \] 这个方程是具有决策单调性的. 决策单调性是指,对于…