AT_abc218_d 题解
本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。
题目简述
给定一个平面内的 \(N\) 个点的坐标,求这 \(N\) 个点中选 \(4\) 个点可构成正方形的方案数。
注:构成的正方形的边需平行于 \(x\) 轴或 \(y\) 轴。
例如下图就不符合要求,则不考虑这种情况:
思路
此题基本纯思维题,算法考的不多。
一看数据范围,\(4 \le N \le 2000\)?既然数据范围这么小,那么 \(O(N^2)\) 的时间复杂度是能过的,但如果暴力枚举 \(4\) 个点的话时间复杂度是 \(O(N^4)\),时间复杂度爆炸啊。
所以还是需要一点小优化的,本蒟蒻一开始只想到了枚举 \(3\) 个点,接着判断另一个点是否存在,但这个想法的时间复杂度是 \(O(N^3)\),还是会超时。
那么我们沿袭这个思想就可以想到,直接 \(N^2\) 枚举 \(2\) 的点,接着判断另外两个点是否存在即可,但这枚举的两个点需为两个对角的点,这里我们枚举左上和右下两个点。
接着只需要解决如何判断另外两个点是否存在的问题即可,很容易想到用 map 容器去储存点是否存在的信息。
即可推出判断的语句:\(mp_{x_i,y_i}\) 且 \(mp_{x_j,y_j}\) 且 \(mp_{x_i,y_j}\) 且 \(mp_{x_j,y_i}\) 且 \(x_i<x_j\) 且 \(y_i<y_j\)。
map 容器的初始化直接在输入时初始化即可。
经过以上分析,即可得出代码:
#include<iostream>
#include<map>
using namespace std;
int n, x[2005], y[2005];
long long ans = 0; // 开 long long 好习惯
map<int, map<int, bool> > mp; // 不要写成 >>,中间要有空格
int main() {
cin >> n; // 输入
for(int i = 1; i <= n; i ++) {
cin >> x[i] >> y[i]; // 输入
mp[x[i]][y[i]] = true; // 初始化处理
}
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= n; j ++) {
if(i == j) continue; // 特判 i = j 的情况
if(mp[x[i]][y[i]] && mp[x[j]][y[j]] && mp[x[i]][y[j]] && mp[x[j]][y[i]] && x[i] < x[j] && y[i] < y[j]) ans ++; // 满足要求 ans++
}
}
cout << ans << endl; // 输出,记得换行
return 0;
}
\]
AT_abc218_d 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
- JSOI2016R3 瞎BB题解
题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...
随机推荐
- pod(四):pod的重启策略和生命周期
目录 一.系统环境 二.前言 三.pod的重启策略 四.pod的生命周期 一.系统环境 服务器版本 docker软件版本 Kubernetes(k8s)集群版本 CPU架构 CentOS Linux ...
- 一文读懂Spring的SPI机制
一. 从类加载说起 Java中的类加载器负载加载来自文件系统.网络或者其他来源的类文件.jvm的类加载器默认使用的是双亲委派模式.三种默认的类加载器Bootstrap ClassLoader.Exte ...
- webview2 示例 Samples Selenium
https://github.com/MicrosoftEdge/WebView2Samples https://learn.microsoft.com/zh-cn/microsoft-edge/we ...
- 怎么使用Stable diffusion中的models
Stable diffusion中的models Stable diffusion model也可以叫做checkpoint model,是预先训练好的Stable diffusion权重,用于生成特 ...
- 腾讯redis2.3集群搭建
环境规划: IP 主机名 组件 配置 备注 192.168.3.81 node1 8核16G 磁盘X2-50G 没有8核16G无法添加服务器 192.168.3.82 node2 cache,prox ...
- JavaSE的运算符
[Top] 算术运算 分类 运算符 算数运算符 * / + - % ++ -- 赋值运算符 +=, -=, /=, *=, %=(扩展赋值运算符), = 比较(关系)运算符 == != > &l ...
- mvn 打包报错:no compiler is provided in this environment
最近公司换了电脑,系统也从 win7 升级到 win11,开发环境都重新安装了一遍,然后在 idea 用mvn 执行打包命令 mvn clean package 报错: no compiler is ...
- git基础命令 gitHub
git 和 gitHub git : 本地项目版本管理工具 gitHub : 相当于一个有很多功能的百度云盘,存储本地项目版本,管 ...
- (三)xpath爬取4K高清美女壁纸
功能:通过xpath爬取彼岸图网的高清美女壁纸 url = 'http://pic.netbian.com/4kmeinv/' 1. 通过url请求整张页面的数据 2.通过页面的标签定位图片所在的位置 ...
- maven和gradle环境变量配置及idea相关的设置
1.maven 环境变量添加之后,重新打开cmd窗口,验证是否配置成功. idea File >> Settings idea配置之后的验证: 2.gradle 环境变量添加之后,重新 ...