[JOI2017/2018]美術展

题目大意:

有\(n(n\le5\times10^5)\)个物品,每个物品有两个属性:尺寸\(A_i\)和收益\(B_i\)。从中选取一个子集,总收益为\(\sum B_i-\max\{A_i\}-\min\{A_i\}\)。求总收益最大值。

思路:

将所有物品按照\(A_i\)排序,\(B_i\)前缀和记作\(S_i\)。答案相当于\(\max\{S_i-A_i+A_j-S_{j-1}\}\)。维护\(A_j-S_{j-1}\)前缀\(\max\)即可。

源代码:

#include<cstdio>
#include<cctype>
#include<algorithm>
typedef long long int64;
inline int64 getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int64 x=ch^'0';
while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
return x;
}
const int N=5e5+1;
struct Node {
int64 a,b;
bool operator < (const Node &rhs) const {
return a<rhs.a;
}
};
Node v[N];
int64 sum[N];
int main() {
const int n=getint();
for(register int i=1;i<=n;i++) {
v[i].a=getint();
v[i].b=getint();
}
std::sort(&v[1],&v[n]+1);
int64 max=0,ans=0;
for(register int i=1;i<=n;i++) {
sum[i]=sum[i-1]+v[i].b;
max=std::max(max,v[i].a-sum[i-1]);
ans=std::max(ans,sum[i]-v[i].a+max);
}
printf("%lld\n",ans);
return 0;
}

[JOI2017/2018]美術展的更多相关文章

  1. LOJ2350:[JOI2017/2018决赛]月票购买——题解

    https://loj.ac/problem/2350 比较简单的题,为什么我实现得这么sb? 第一个包其实已经给了提示(第一个包的解法就是在S->T所有最短路径上的所有点到V的最短路的最小值. ...

  2. LOJ2351:[JOI2017/2018决赛]毒蛇越狱——题解

    https://loj.ac/problem/2351 参考:https://www.cnblogs.com/ivorysi/p/9144676.html 但是参考博客讲解太吓人了,我们换一种通俗易懂 ...

  3. 2018美赛准备之路——Matlab基础——命令行功能函数

    clc 清屏(只清除显示内容) clear  清除所有变量(运算结果) who  显示workspace的所有变量 whos  详细显示workspace的所有变量  help sin 显示sin函数 ...

  4. 2018美赛准备之路——Matlab基础——基本运算符号表示

    π pi ln(x) log(x)   lg(x) log10(x) log2(x) log2(x) 根号 sqrt(x) x的y次方 x^y e的y次方 exp(y)    

  5. 自在因梦 | 威爾伯的Fourth Turning所引發的聯想

    2015-05-06                                                 胡因梦                                       ...

  6. N4复习考试总结

    一つ(ひとつ) 半分(はんぶん) 煙草(たばこ)を吸う(すう) 玄関(げんかん) ナイフ(刀)     財布(さいふ) 浅い(あさい) 薄い(うすい) 牛乳(ぎゅうにゅう) 皿(さら) 七日(なのか) ...

  7. (转)Unity原厂讲师大解密

    本文转载自:http://nedwu13.blogspot.tw/2013_11_01_archive.html   Asset Bundle工作流程及人物換裝實例 - 劉剛 Unity內部的資源有兩 ...

  8. Python 爬虫 数据提取

    一下子运行 七八十个  select 将会是什么样的体验呢? 业务部门提供了一个需要,要求从爬虫数据中提取出88家的数据, 并且也提供了一个excel表格,如下图: 这个时候我们可以通过拍卖行,拍卖时 ...

  9. ionic4 ion-picker用法

    ion-picker实际开发中肯定多处使用,所以封装成服务的形式调用 新建picker.service服务模块   ionic g service picker import { Injectable ...

随机推荐

  1. python http请求类

    # -*- coding: UTF-8 -*- # coding="utf-8" import httplib2 import json from urllib.parse imp ...

  2. C和C++ 中的const

    C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码: #include <iost ...

  3. mysql的innodb存储引擎

    innodb是支持事务的存储引擎,支持ACID特性的ACID(指数据库事务正确执行的四个基本要素的缩写) 包含:原子性(Atomicity).一致性(Consistency).隔离性(Isolatio ...

  4. Django 基模板布局设置

    Django 基模板布局设置 基模板 定义基础模板一般分为三块,css部分,body部分,js部分 将基础统一的部分写在基础模板中 差异部分直接 引用 {% block css %}{% endblo ...

  5. mysql如何添加一个表的外键

    1:创建一个父表,主键作为子表的外键: create table province( pId int primary key auto_increment, pName varchar() ); 2: ...

  6. vue生命周期探究(一)

    前言 在使用vue开发的过程中,我们经常会接触到生命周期的问题.那么你知道,一个标准的工程项目中,会有多少个生命周期勾子吗?让我们来一起来盘点一下: 根组件实例:8个 (beforeCreate.cr ...

  7. systemd创建自定义服务(Ubuntu)

    /lib/systemd/system下创建test.service文件 vim /lib/systemd/system/test.service [Unit] Description=test [S ...

  8. STL容器及泛型算法

    一.顺序容器 1.容器的选择 (1) 随机访问,选vector ,deque (2) 在中间插入或者删除元素,选list (3) 在头尾插入或删除元素 , 选deque 2.list的成员函数 (1) ...

  9. svn图标的含义

    http://www.cnblogs.com/genhaosan/articles/5129791.html

  10. linux 更新yum源 改成阿里云源

    1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的CentOS-Base ...