【决策单调性】交与并

bzoj 2687。

举几个例子,会发现可能满足决策单调性,并且答案只能由两个区间组成。这里证明一下。

假设有 opt(y)=p<opt(x)=q<x<yopt(y)=p<opt(x)=q<x<y,且 4 个区间都有相交的地方。

定义 lx,rxl_x,r_x,分别为 x 的左右端点。那么会有:(下面式子只代表大小关系)

lp=1,lq=2,lx=3,ly=4,rp=5,rq=6,rx=7,ry=8l_p=1,l_q=2,l_x=3,l_y=4,r_p=5,r_q=6,r_x=7,r_y=8 (rylp)(rply)>(rylq)(rqly)(r_y-lp)(r_p-l_y) > (r_y-lq)(r_q-l_y) 858451+41>868462+4285-84-51+41 > 86-84-62+42 (rxlq)(rqlx)>(rxlp)(rplx)(r_x-l_q)(r_q-l_x) > (r_x-l_p)(r_p-l_x) 767362+32>757351+3176-73-62+32 > 75-73-51+31

两式相加,得:

858451+41+767362+32>868462+42+757351+3185-84-51+41+76-73-62+32 > 86-84-62+42+75-73-51+31 (78)(65)+(43)(12)>0(7-8)(6-5)+(4-3)(1-2) > 0

显然是矛盾的。

但还要考虑一个区间被包含的情况,具体可以看 zsw 的博客

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e6+10;
struct D{
    ll l,r;
}a[N],b[N];
ll ans,dp[N],n;
 
ll w(int l,int r) {
    if(l >= r) return -1e18;
    return (a[r].r - a[l].l) * (a[l].r - a[r].l);
}
void fz(int L,int R,int l,int r) {
    if(L > R) return ; int mid = L+R>>1; int opt = l;
    for(int i=l;i<=min(mid,r);i++)
        if(w(i,mid) > w(opt,mid)) opt = i;
    ans = max(ans,w(opt,mid));
    fz(L,mid-1,l,opt), fz(mid+1,R,opt,r);
}
int q[N];
int fd(int i,int L,int R) {
    while(L + 1 < R) {
        int mid = L + R >> 1;
        if(b[q[mid]].r >= b[i].r) R = mid;
        else L = mid;
    }
    return R; 
}
int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++){cin>>b[i].l>>b[i].r;}
    sort(b+1,b+n+1,[](D x,D y) {
        return x.l == y.l ? x.r > y.r : x.l < y.l;
    });
    int _n = 0;
    for(int i=1, R = 0;i<=n;i++) {
        if(b[i].r > a[_n].r) {
            while(R && b[i].r - b[i].l >= b[q[R]].r - b[q[R]].l) R--;
            q[++R] = i; a[++_n] = b[i];
        }
        else if(R){
            int x = q[fd(i,0,R+1)];
            ans = max(ans,(b[x].r-b[x].l) * (b[i].r - b[i].l));
        }
    }
    n = _n;
    fz(1,n,1,n);
    cout<<ans;
    return 0;
}

本文作者:cjrqwq

本文链接:https://www.cnblogs.com/yfzqwq/p/18492753

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   cjrqwq  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
展开
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.