【链接】点击打开链接


【题意】

实话实说,给 OIER 大神们排队这种工作是最让人头疼的事情了。因为同学们都有自尊 心,都不愿意排后面。 现在共有 n 个同学要排成一列,每个同学有两个属性:影响力和承受能力。给一个同学 造成的心理创伤指数等于所有在他前面同学的影响力之和减去他的承受能力。 请你帮忙安排一下点名顺序,尽量使受到心理创伤最大的同学少受创伤。

1≤n≤50000,1≤影响力≤10000,1≤承受能力≤10^9

【题解】


假设n个人的位置已经随便安排好了(不一定最优);
考虑两个相邻的人i,j;(i<j)
我们下面讨论这两个人要交换位置的条件是什么;
假设他们的影响力和承受力分别为a[],b[],然后1..max(i,j)这些人中,除了这两个人之外,a[]的和为sum.
假设顺序是i,j;
则i所受伤害为sum-b[i],j所受伤害为sum+a[i]-b[j]
假设顺序是j,i
则j所受伤害为sum-b[j],i所受伤害为sum+a[j]-b[i]
要比较的是
max(sum-b[i],sum+a[i]-b[j])和
max(sum-b[j],sum+a[j]-b[i]);
因为
sum-b[i]<sum+a[j]-b[i];
sum-b[j] <sum+a[i]-b[j];
则我们只需要再比较一下sum+a[i]-b[j]和sum+a[j]-b[i]的值就好了.
因为
如果sum+a[i]-b[j]<sum+a[j]-b[i] ①

图中箭头指向的是较大的那个。
会发现,sum+aj-b[i]会是那个最大的数字.
然后前者会都比那个最大值小。
(而前者是按(i,j)的顺序放的)
说明按照(i,j)的顺序放,得到的最大值比较小。
(如果①式反过来..显然就是(j,i)这样放比较小了)
所以如果①式成立
也即a[i]-b[j]<a[j]-b[i]
->a[i]+b[i]<a[j]+b[j]
则按照(i,j)顺序放;
否则调换(i,j)顺序。
则一开始就按照a+b的值升序排一下,就能确定最后的顺序了。

【错的次数】


0

【反思】


在这了写反思

【代码】

#include <bits/stdc++.h>
using namespace std; const int N = 5e4; int n,a[N+10],b[N+10];
pair <int, int> c[N + 10]; int main() {
//    freopen("F:\\rush.txt", "r", stdin);
    ios::sync_with_stdio(0), cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i] >> b[i];
        c[i].first = a[i] + b[i], c[i].second = i;
    }
    sort(c + 1, c + 1 + n);
    int ans = 0 - b[c[1].second],temp = 0;
    for (int i = 2; i <= n; i++) {
        temp += a[c[i - 1].second];
        ans = max(ans, temp - b[c[i].second]);
    }
    cout << ans << endl;
    return 0;
}

【】queue的更多相关文章

  1. 【数据结构】 Queue 的简单实现

    [数据结构] Queue 的简单实现 public class XQueue<T> { /// <summary> /// 第一个元素 /// </summary> ...

  2. NYIST 1070 诡异的电梯【Ⅰ】

    诡异的电梯[Ⅰ]时间限制:1000 ms | 内存限制:65535 KB难度:3 描述新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里, 为了节 ...

  3. 【&】位与运算符【|】位或运算符之权限控制算法

    [&]位与运算符: 按位与运算符"&"是双目运算符. 其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数 ...

  4. 存储过程 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果

    use TTgoif exists (select * from sysobjects where name='Tonge')drop table Tongecreate table Tonge( I ...

  5. 普通方式 分页【NOT IN】和【>】效率大PK 千万级别数据测试结果

    首现创建一张表,然后插入1000+万条数据,接下来进行测试. use TTgoif exists (select * from sysobjects where name='Tonge')drop t ...

  6. java byte【】数组与文件读写(增加新功能)

    今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: ...

  7. Spring 当 @PathVariable 遇上 【. # /】等特殊字符

    @PathVariable注解应该不是新鲜东西了Spring3.0就开始有了 URL中通过加占位符把参数传向后台 举个栗子,如下比较要说的内容比较简单就大概齐的写一下 画面侧 $.ajax({ typ ...

  8. 【php正则】php正则匹配UTF-8格式的中文汉字 和 【,】【,】【。】等符号

    1.php正则匹配UTF-8格式的中文汉字 和 [,][,][.]等符号 if (preg_match_all("/([\x{4e00}-\x{9fa5}]+((,)?)+((,)?)+(( ...

  9. 公式中表达单个双引号【"】和空值【""】的方法及说明

    http://club.excelhome.net/thread-661904-1-1.html 有人问为什么不用三个双引号"""来表示单个双引号["]呢,如果 ...

随机推荐

  1. [Python] Execute a Python Script

    Python scripts can be executed by passing the script name to the python command or created as execut ...

  2. MySQL架构组成之逻辑模块组成

    MySQL 能够看成是二层架构   第一层SQL Layer.包含权限推断.sql 解析.运行计划优化,query cache 的处理等等.   第二层存储引擎层(Storage Engine Lay ...

  3. Redisclient连接方式Hiredis简单封装使用,连接池、屏蔽连接细节

    工作须要对Hiredis进行了简单封装,实现功能: 1.API进行统一,对外仅仅提供一个接口. 2.屏蔽上层应用对连接的细节处理: 3.底层採用队列的方式保持连接池,保存连接会话. 4.重连时採用时间 ...

  4. python Tricks —— list 镜像复制与 list comprehension 列表解析的顺序

    0. 对 list 镜像复制,a = [1, 2, 3] ⇒ [1, 2, 3, 3, 2, 1] a*2 ⇒ a = [1, 2, 3, 1, 2, 3] a.extend(reversed(a)) ...

  5. HDP和HDF

    参考文档: HDP安装: 官方文档:https://docs.hortonworks.com/HDPDocuments/Ambari-2.5.0.3/bk_ambari-installation/co ...

  6. HDU 1576 A/B 数论水题

    http://acm.hdu.edu.cn/showproblem.php?pid=1576 写了个ex_gcd的模板...太蠢导致推了很久的公式 这里推导一下: 因为 1 = BX + 9973Y ...

  7. 洛谷——P2093 零件分组

    https://www.luogu.org/problem/show?pid=2093 题目描述 某工厂生产一批棍状零件,每个零件都有一定的长度(Li)和重量(Wi).现在为了加工需要,要将它们分成若 ...

  8. cogs P1578【模板】 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  9. golang 数组

    数组是Go语言编程中最常用的数据结构之一.顾名思义,数组就是指一系列同一类型数据的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度. 在Go语言中数组 ...

  10. 一个简单RPC框架是怎样炼成的(II)——制定RPC消息

    开局篇我们说了,RPC框架的四个核心内容 RPC数据的传输. RPC消息 协议 RPC服务注冊 RPC消息处理 以下,我们先看一个普通的过程调用 class Client(object): def _ ...