【链接】点击打开链接


【题意】

实话实说,给 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. js --- 事件流

    1.事件流 事件发生时会在元素节点与根节点之间按照特定的顺序传播,路径所经过的所有节点都会收到该事件,这个传播过程即DOM事件流. 2.两种事件流模型 1.冒泡型事件流:事件的传播是从最特定的事件目标 ...

  2. html --- rem 媒体查询

    rem是一种相对长度单位,参考的基准是<html>标签定义的font-size. viewport 做移动端的h5,通常会在HTML文件中指定一个<meta>标签: <m ...

  3. js---跨域的问题

    一:跨域一般的报错情况  一般来说,如果你在开发中需要进行跨域操作(从一个非同源网站发送请求获取数据),一般而言,你在浏览器控制台看到的结果为: 二:同源策略 说到跨域就不得不提“同源策略”. 那么, ...

  4. Whitening

    The goal of whitening is to make the input less redundant; more formally, our desiderata are that ou ...

  5. C++ 补课 (三)

    1,枚举类型 —— 下标自0开始 enum 枚举类型名 { 常数表 } 2,C++ 的异常处理机制实际上是一种运行时通知机制 3,delete p;只是删除指针p指向内存区,并不是删除指针p,所以p还 ...

  6. iOS 创建静态库文件时去掉当中的Symbols

    在project中创建静态库文件时.默认会将一些Symbols加到静态库文件里.这样做有两个缺点: 1.假设引用静态库文件的project中发生了bug.就会直接跳转到静态库的源代码. 也许有人问:静 ...

  7. 重构insert update 比较两个datatbale

    #region 下载时重构insert(数据带null处理) public void DownDataInsert(DataTable _dt, string TableName,DBHelper d ...

  8. 华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery 及 root

    华为畅玩5 (CUN-AL00) 刷入第三方twrp Recovery  及 root 下载地址    http://pan.baidu.com/s/1hsn6VzA 1. 在官网申请解锁码    申 ...

  9. 分组的listview——ExpandableListView

    开发使用到的数据统计时可以用分组的ExpandablelistView 效果:

  10. AngularJsDEMO

    接触AngularJs时间不长,纯粹是学着好玩而已,因此没有深挖原理,针对理论性的知识,园子里面有很多介绍,我就不多介绍了. 这里写了个简单的DEMO,部署起来就可以直接运行了,里面 大概用了最基础的 ...