解题思路
Part 1:贪心
我们可以累计每个 AiAi 的被求和次数 cici。容易贪心得到,被求和次数越多的肯定得放越大的数(可用邻项交换证明)(排序不等式)。

我们可以先统计原来的求和的总和 sumsum,再给 AA 数组和统计求和次数的数组 cc 从小到大排好序,最后依次相乘起来即 ∑i=1naici∑i=1naici 减去原来的总和 sumsum 便是答案。

Part 2:差分
统计求和次数时注意到只有修改操作而没有查询操作,于是可以用差分来维护。

具体地,我们建立一个都为 00 的差分数组 bb,当 l∼rl∼r 这段区间被求和时,就 将 blbl 加上 11,br+1br+1 减去 11 就可以了。然后在求前缀和

注意:原来的总和和最大总和都要用 long long 来存储。

时间复杂度:Θ(nlogn)Θ(nlog⁡n)。

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
typedef long long ll;
int a[N],b[N];
int n,m;
//差分 既可以构造差分又可以在一段区间上加数
void insert(int l,int r,int c)
{b[l]+=c;b[r+1]-=c;
}
int main()
{scanf("%d ",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);scanf("%d",&m);while(m--){int l,r;scanf("%d%d",&l,&r);insert(l,r,1);}//求前缀和,统计a数组中 每个数要加多少次for(int i=1;i<=n;i++) b[i]+=b[i-1];ll sum1=0,sum2=0;//没有移动之前的求和for(int i=1;i<=n;i++) sum1+=(ll)a[i]*b[i];//要想两数差最大,则让后者最大,让出现次数最多的与数最大的相匹配sort(a+1,a+1+n);sort(b+1,b+1+n);for(int i=1;i<=n;i++) sum2+=(ll)a[i]*b[i];cout<<sum2-sum1<<endl;return 0;
}

重新排序(差分,贪心,排序不等式)相关推荐

  1. 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子

    耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...

  2. 贪心---排序不等式、绝对值不等式、推公式

    1.排序不等式 1.1排队打水 #include<iostream> #include<algorithm> #include<cstring> using nam ...

  3. 【52. 贪心 - 排序不等式(排队打水)】

    分析 当第i个人打水时,n-i个人都要在等待,i从1到n-1: 则总时间为b[1](n - 1) + b[2](n-2)+···+b[n-1]*1. 所以我们可以看出,要想让排队等待时间综合最小,一定 ...

  4. 贪心——排序不等式——排队打水

    排队打水 总共n人 T=t1*(n-1)+t2*(n-2)+--+tn 按从小到大的顺序排序,等待时间最小 #include <iostream> #include <algorit ...

  5. 【模板题】贪心-排序不等式

    一.AcWing 913. 排队打水 [题目描述] 有nnn个人排队到111个水龙头处打水,第iii个人装满水桶所需的时间是tit_iti​,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小? ...

  6. 差分+排序不等式+贪心

    :加油加油,没几天就要比赛了 1.差分 差分的思想:给定a[1],a[2]-a[N],构造差分数组,使得a[i]=b[1]+b[2]+-b[i] 总的来说,a[i]就是b[1~i]的前缀和数组,那么构 ...

  7. 重新排序(排序不等式+差分)蓝桥

    重新排序 1.排序不等式 简单来说就是大的乘以大的,小的乘以小的,按顺序就可以排除最大的和 2.差分 由于题目涉及区间范围同时加上一个数,所以利用差分数组可以将复杂度降为O(n) 差分数组讲解 3.解 ...

  8. 排序不等式 AcWing 913. 排队打水

    排序不等式 AcWing 913. 排队打水 原题链接 AcWing 913. 排队打水 算法标签 贪心 排序不等式 思路 1 将nnn个人装满水桶所需的时间从小到大进行排序 2 从前往后枚举每一个人 ...

  9. ACM - 贪心 - 基础(区间问题 + Huffman树 + 排序不等式 + 绝对值不等式 + 推公式)

    贪心 经典母题 1.区间问题 AcWing 905. 区间选点 AcWing 908. 最大不相交区间数量 AcWing 906. 区间分组 AcWing 907. 区间覆盖 2.Huffman树 A ...

最新文章

  1. 全flash站制作剖析
  2. 沉入海底2年的微软数据中心浮出水面:故障率只有陆地上的1/8,除了长点贝类和藻类完全没问题...
  3. 【数据竞赛】2020首届海洋目标智能感知国际挑战赛冠军方案分享
  4. 数据科学与python语言——Matplotlib数据可视化基础
  5. Ubuntu16.04版安装VMwareTools的步骤和没法挂载目录问题的解决
  6. vue电子数字、时钟数字、的字体引入和使-详细步骤
  7. 计算机一级操作题题库在线,全国计算机一级操作题「题库」
  8. PROTEL网络教程前
  9. 手把手教你实现——Python文字(汉字)转语音教程,举一反三~
  10. iOS及Mac开源项目和学习资料【超级全面】
  11. 一款超漂亮的简历生成器,金三银四的你一定用得上
  12. Win7获取目录或文件trustedinstaller权限的方法
  13. 用Markdown来创建待办事项
  14. Laravel 6 结合网易/阿里邮箱基本邮件发送功能使用
  15. 原画师一般用什么软件画画?
  16. html js获取天气预报,js 读取天气预报信息 示例代码(百度地图天气接口)
  17. latch: cache buffers chains故障处理总结
  18. JAVA新手上路-2-javac编译
  19. Django ORM 查询重复记录并显示
  20. 闯关的lulu (有趣的规律题)

热门文章

  1. Linux:centos7安装下载工具aria2
  2. 【yiyi挑战】2.1搜索
  3. 静态成员函数存在的意义
  4. pn532中遇到的坑-----Mifare1 Card(一)
  5. k8s 中的资源配置
  6. JXTA HelloWorld on JXSE 2.5 【二】
  7. 移植UCOSII注意的问题
  8. STM32F767将数据写入SD卡
  9. 20150311,微软3月11日发布14个安全补丁
  10. ln 软件链接目录时,当链接文件已经存在时,结果非预期