分析:开个1000*1000的数组,预处理矩阵和,然后分类讨论就好

时间复杂度:O(n)

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <ctime>
  4. #include <vector>
  5. #include <cmath>
  6. #include <map>
  7. #include <queue>
  8. #include <algorithm>
  9. #include <cstring>
  10. using namespace std;
  11. typedef long long LL;
  12. const int N=1e5+;
  13. const int INF=0x3f3f3f3f;
  14. const int mod=1e9+;
  15. struct Node{
  16. int x,y;
  17. }p[N];
  18. int a[][];
  19. int high[],low[],mid[];
  20. LL ret[];
  21. int main()
  22. {
  23. int n,m;
  24. while(~scanf("%d%d",&n,&m)){
  25. memset(a,,sizeof(a));
  26. memset(ret,,sizeof(ret));
  27. memset(high,,sizeof(high));
  28. memset(low,,sizeof(low));
  29. memset(mid,,sizeof(mid));
  30. for(int i=;i<=n;++i){
  31. scanf("%d%d",&p[i].x,&p[i].y);
  32. ++a[p[i].x][p[i].y];
  33. if(p[i].y>p[i].x)++high[p[i].x];
  34. else if(p[i].y==p[i].x)++mid[p[i].x];
  35. else ++low[p[i].x];
  36. }
  37. for(int i=;i<=m;++i){
  38. low[i]+=low[i-];
  39. mid[i]+=mid[i-];
  40. high[i]+=high[i-];
  41. }
  42. for(int i=;i<=m;++i)
  43. for(int j=;j<=m;++j)
  44. a[i][j]+=a[i-][j]+a[i][j-]-a[i-][j-];
  45. for(int i=;i<=n;++i){
  46. if(p[i].y>p[i].x){
  47. int tmp=,t;
  48. t=high[m]-high[p[i].y];
  49. tmp+=t;ret[]+=t;
  50. t=low[m]-low[p[i].y]+mid[m]-mid[p[i].y];
  51. tmp+=t;ret[]+=t;
  52. t=high[p[i].y]-high[p[i].y-];
  53. tmp+=t;ret[]+=t;
  54. t=high[p[i].y-]-high[p[i].x];
  55. tmp+=t;ret[]+=t;
  56. t=a[p[i].x][m]-a[p[i].x][p[i].y];
  57. tmp+=t;ret[]+=t;
  58. ret[]+=1ll*(n-tmp);
  59. }
  60. else if(p[i].x==p[i].y){
  61. int tmp=,t;
  62. t=high[m]-high[p[i].x];
  63. tmp+=t;ret[]+=t;
  64. t=low[p[i].x]+mid[p[i].x];
  65. tmp+=t;ret[]+=t;
  66. ret[]+=1ll*(n-tmp);
  67. }
  68. else {
  69. int tmp=,t;
  70. t=low[p[i].y]+mid[p[i].y];
  71. tmp+=t;ret[]+=t;
  72. t=high[m]-high[p[i].y];
  73. tmp+=t;ret[]+=t;
  74. ret[]+=1ll*(n-tmp);
  75. }
  76. }
  77. printf("%I64d %I64d %I64d %I64d\n",ret[],ret[],ret[],ret[]);
  78. }
  79. return ;
  80. }

XTUOJ1247 Pair-Pair 预处理+暴力的更多相关文章

  1. CodeForces 359D Pair of Numbers (暴力)

    题意:给定一个正整数数组,求最长的区间,使得该区间内存在一个元素,它能整除该区间的每个元素. 析:暴力每一个可能的区间,从数组的第一个元素开始考虑,向两边延伸,设延伸到的最左边的点为l, 最右边的点为 ...

  2. 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵  基准时间限制:1 秒 空 ...

  3. bzoj 3752: Hack 预处理+暴力dfs

    题目大意: 定义字符串的hash值\(h = \sum_{i=0}^{n-1}p^{n-i-1}s_i\) 现在给定K个长度不超过L的字符串S,对于每个字符串S,求字典序最小长度不超过L的字符串T使得 ...

  4. C++学习之Pair

    C++学习之Pair Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型, ...

  5. 找最大重复次数的数和重复次数(C++ Pair)

    Problem A: 第一集 你好,世界冠军 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 265  Solved: 50[Submit][Statu ...

  6. STL模板整理 pair

    pair pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同.如果一个函数有两个返回值的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就 ...

  7. C++编程-&gt;pair(对组)

    pair 是 一种模版类型.每一个pair 能够存储两个值.这两种值无限制,能够是tuple.vector ,string,struct等等. 首先来看一下pair的函数 初始化.复制等相关操作例如以 ...

  8. STL pair 常见用法详解

    <算法笔记>学习笔记 pair 常见用法详解 //pair是一个很实用的"小玩意",当想要将两个元素绑在一起作为一个合成元素, //又不想因此定义结构体时,使用pair ...

  9. C++ pair

    C++ pair Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一 ...

随机推荐

  1. 在C#中实现Python的分片技术

    在C#中实现Python的分片技术 前言 之前在学习Python的时候发现Python中的分片技术超好玩的,本人也是正则表达式热爱狂,平时用C#比较多,所以决定把Python中的分片技术在C#中实现, ...

  2. RMI

    Java RMI (Remote Method Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力.Java作为一种风靡一时的网络开发语言 ...

  3. 虚函数(virtual)为啥不能是static

    静态成员函数,可以不通过对象来调用,即没有隐藏的this指针. virtual函数一定要通过对象来调用,即有隐藏的this指针. static成员没有this指针是关键!static function ...

  4. Web应用程序简介

    1.HTTP通讯协议 根据联机方式与所使用的网络服务不同,会有不同的通信协议.例如,发送信件时会使用SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),传输文件会 ...

  5. linux下的共享库(动态库)和静态库

    1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不 ...

  6. NDK xxxxx could not be resolved解决方法

    Type '*****' could not be resolved Method '******' could not be resolved     问题解决   以下为未尝试方法,如果上面方法解 ...

  7. wordCount程序中MapReduce工作过程分析

    Map处理的是一个纯文本.Mapper处理的数据是由InputFormat分解过的数据集,其中InputFormat的作用是将数据集切割成小数据集InputSplit,每一个InputSplit将由一 ...

  8. iOS开原项目

    http://www.lanrenios.com/ios/project/2013/0729/1433.html http://www.cnblogs.com/xiaobaizhu/archive/2 ...

  9. Ubuntu 64位系统安装StarUML之最佳实践

    preview 相信很多使用Ubuntu的哥们在安装StarUML或者其他软件时都会遇到要求libgcrypt11的依赖.而遗憾的时,这个东西很多人根本找不到. 我将它分享到百度网盘,mark. 一. ...

  10. Codeforces Round #239 (Div. 2)

    做了三个题,先贴一下代码...终于涨分了 A. Line to Cashier 水题 #include <iostream> #include <cstdio> #includ ...