• 题意:有\(m\)个窗口,\(n\)个人排队,每个人都有各自的办理时间,只有办理完成窗口才能空出来,后面的人开始办理,求有多少人比后面的人开始办理的早但完成的晚.

  • 题解:我们可以用优先队列来模拟办理,用一个数组q来记录办理完成的时间,之后只要求q中逆序对的个数即可,既然求逆序对,那我们肯定用归并排序啦~

  • 代码:

    class Solution {
    public:
    /**
    * 求解合法的(i,j)对的数量
    * @param n int整型 n个人
    * @param m int整型 m个窗口
    * @param a int整型vector 长度为n的vector,顺序表示1-n号客人的办理业务所需时间
    * @return long长整型
    */ long long q[1000010];
    long long t[1000010];
    long long res;
    priority_queue<long long,vector<long long>,greater<long long>> h; long long merge_sort(long long q[],int l,int r){
    if(l==r) return 0;
    int mid=(l+r)>>1;
    res=merge_sort(q,l,mid)+merge_sort(q,mid+1,r);
    int i=l,j=mid+1;
    int cnt=0;
    while(i<=mid && j<=r){
    if(q[i]<=q[j]) t[++cnt]=q[i++];
    else{
    t[++cnt]=q[j++];
    res+=mid-i+1;
    }
    }
    while(i<=mid) t[++cnt]=q[i++];
    while(j<=r) t[++cnt]=q[j++]; for(int i=l,j=1;i<=r;++i,++j) q[i]=t[j]; return res;
    }
    long long getNumValidPairs(int n, int m, vector<int>& a) { for(int i=0;i<m;++i){
    h.push(0);
    } for(int i=0;i<n;++i){
    long long tmp=h.top()+a[i];
    q[i+1]=tmp;
    h.pop();
    h.push(tmp);
    } res=merge_sort(q,1,n); return res;
    }
    };

最新文章

  1. [bzoj 3732] Network (Kruskal重构树)
  2. WCF学习笔记之消息交换模式
  3. 为七牛云存储开发的PHP PEAR 包:Services_Qiniu
  4. KafkaSpout 浅析
  5. [LeetCode] 303. Range Sum Query - Immutable (Easy)
  6. 【锋利的jQuery】学习笔记03
  7. [转]python yield
  8. Apache Zeppelin
  9. 关于Integer与int
  10. GUI TextField
  11. 用Python解答百度测试开发算法面试题
  12. Mybatis内批量插入Oracle
  13. Python开发——11.异常及异常处理
  14. Python学习笔记【第十三篇】:Python网络编程一Socket基础
  15. Eclipse报错:!!MESSAGE Job found still running.......
  16. 基于Enterprise Architect完成数据库建模
  17. 使用python-aiohttp爬取今日头条
  18. laravel/lumen 的构造函数需要注意的地方
  19. 深度学习课程笔记(十三)深度强化学习 --- 策略梯度方法(Policy Gradient Methods)
  20. 添加MyEclipse WebSphere Portal Server支持(二)

热门文章

  1. 如何实现一个简易版的 Spring - 如何实现 Constructor 注入
  2. 【Linux】快速创建文件的命令方法
  3. CSAPP:Lab1 -DataLab 超详解
  4. SAP表的锁定与解锁
  5. 算法模板 - C++ 高精度运算
  6. 在Ubuntu18.04下编译出ffmpeg(支持推流H265成rtmp)
  7. 深度学习DeepLearning技术实战(12月18日---21日)
  8. 性能测试WAS内存使用的探索和分析
  9. JMeter去掉启动的cmd命令窗口和制作快捷方式
  10. 【转载】HTTP 协议详细介绍