kcm的原题。。

貌似是个组合数(?

\(\sf {Solution}\)

对于每一个点,我们需要统计与它同一行的点数\(a\) 和同一列的点数\(b\) ,则该点对结果\(ans\) 的贡献为\((a-1)\times (b-1)\) 。

当然如果统计两重循环的话,那肯定是会TLE的啦。那么就要加一个预处理了:

  • 用两个map 数组分别统计\(a\) 和\(b\) 。

  • \(m1_i\) 就代表在第\(i\) 行的点数,\(m2_j\) 就代表在第\(j\) 列的点数。

(之所以考虑用map是因为开数组可能会炸,后来发现好像不会……)

\(\sf {P.S}\)

因为有乘运算,并且\(n\leq 10^5\) ,所以不开long long是要炸掉的哦。

\(\sf {Code}\)

#include<cstdio>
#include<algorithm>
#include<map>
using namespace std;
struct node
{
int x,y;
}a[100004];
int n;
long long ans;
map<long long,long long>m1,m2;//long long!
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d%d",&a[i].x,&a[i].y);//读入
for(int i=1;i<=n;++i)
++m1[a[i].x],++m2[a[i].y];//分别统计行和列
for(int i=1;i<=n;++i)
ans+=(m1[a[i].x]-1)*(m2[a[i].y]-1);//根据那啥算
printf("%lld",ans);
return 0;
}

最新文章

  1. 简历生成平台项目开发-STEP4第二次项目例会讨论
  2. .net framework 3.5sp1 安装不成功
  3. Oracle常用函数笔记
  4. Eight Popular Open Source Android Game Engines
  5. [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
  6. CSS——清除浮动
  7. php大力力 [003节]php在百度文库的几个基础教程mac环境下文本编辑工具
  8. 【译】Spark官方文档——Spark Configuration(Spark配置)
  9. 数据挖掘:Weka代码学习
  10. 【转】vc中使用SendMessage正确发送自定义消息的方法--不错
  11. AngularJS+NodeJS环境搭建
  12. hdoj 1395 2^x mod n = 1 【暴力】
  13. Object Pool
  14. css,js零散知识的整理
  15. mave 安装本地jar包到maven库
  16. C#又能出来装个B了。一步一步微信跳一跳自动外挂
  17. Java单例模式之饿汉模式与懒汉模式
  18. 【Python3练习题 005】输入三个整数x,y,z,请把这三个数由小到大输出
  19. Peter&#39;s smokes -poj 2509
  20. ConcurrentHashMap1.8源码解析

热门文章

  1. SwiftUI实战教程-土豆List
  2. 获取Windows正在运行的窗口进程
  3. python压缩pdf(指定缩放比例)
  4. Linux KVM创建虚拟机
  5. 几款优秀的点播、RTSP/RTMP直播播放器介绍
  6. 【设计模式】Java设计模式 - 观察者模式
  7. KingbaseES函数如何返回结果集
  8. 在Yarn集群上跑spark wordcount任务
  9. spark 写入数据到Geomesa(Hbase)
  10. 发现tab换成空格不起作用,然后解决如下。