• 题解「LOJ2348 「JOI 2018 Final」美术展览」


    转载注明来源:https://www.cnblogs.com/syc233/p/13803903.html


    题面

    题意

    (n) 个物品,物品 (i) 有尺寸 (A_i) 和价值 (B_i) 。选择若干个物品,使得选择的物品的总价值 (S) 减尺寸的极差 (A_{max}-A_{min}) 最大。

    题解

    发现若固定 (A_{min})(A_{max}) ,那么一定将尺寸在 ([A_{min},A_{max}]) 中的物品选完,那么 (S) 的值就很好求得。将物品按 (A) 升序排序,那么选择的物品一定是一段区间。

    同时固定两个值有些困难,先固定一个值 (A_{min})。令 (A_{min}) 在排好序的物品中下标为 (i)(A_{max}) 的下标为 (j) ,有 (ileq j) 。则需要最大化的值即为:

    [sum_{k=i}^jB_k-(A_j-A_i) ]

    (sum) 表示 (B) 的前缀和,则有:

    [sum_j-sum_{i-1}-(A_j-A_i)=sum_j-A_j-(sum_{i-1}-A_i) ]

    从右到左枚举 (i) ,记录 (sum_j-A_j,jin [i,n]) 的最大值,依次更新答案即可。


    ( ext{Code}:)

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <climits>
    #define Rint register int
    #define INF 0x3f3f3f3f
    using namespace std;
    typedef long long lxl;
    const int maxn=5e5+5;
    
    template <typename T>
    inline void read(T &x)
    {
    	x=0;T f=1;char ch=getchar();
    	while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}
    	while(ch>='0'&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
    	x*=f;
    }
    
    struct Art
    {
    	lxl A,B;
    	Art(lxl A,lxl B):A(A),B(B){}
    	Art(){}
    	inline bool operator < (const Art &T)const
    	{
    		return A<T.A;
    	}
    }art[maxn];
    
    int n;
    lxl sum[maxn];
    
    int main()
    {
    	// freopen("#2348.in","r",stdin);
    	read(n);
    	for(int i=1;i<=n;++i)
    		read(art[i].A),read(art[i].B);
    	sort(art+1,art+n+1);
    	for(int i=1;i<=n;++i)
    		sum[i]=sum[i-1]+art[i].B;
    	lxl ans=LLONG_MIN,Max=LLONG_MIN;
    	for(int i=n;i>=1;--i)
    	{
    		Max=max(Max,sum[i]-art[i].A);
    		ans=max(ans,Max-sum[i-1]+art[i].A);
    	}
    	printf("%lld
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    软件测试面试题及答案【史上最全】
    Loadrunner参数(摘)
    Linux系统的目录结构
    关于梦想(七)
    Mysql基于Linux上的安装
    走进MySQL
    关于梦想(六)
    Jmeter的实例应用
    十种社会中最真实的人际关系
    有些人走了就走了,该在的还在就好
  • 原文地址:https://www.cnblogs.com/syc233/p/13803903.html
Copyright © 2020-2023  润新知