noi.ac #42 模拟
\(des\)
二维平面上存在 \(m\) 个点,每个点会对该点的 \(8\) 个方向上的最近的点产生影响
问每个点会被影响多少次
\(sol\)
过每个点会产生 \(4\) 条线段
保存每条线段的斜率与截距
从平面的左上方向右下方扫描
判断每个点产生的 \(4\) 个斜率与截距是否存在
在遍历中更新该方向上的最后一次的斜率与截距
并且正反方向统计答案
\(code\)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#define Pair pair<int, int>
using namespace std;
const int N = 1e5 + 10, Inf = (1 << 30);
#define Rep(i, a, b) for(int i = a; i <= b; i ++)
int Answer[10];
int Ans[N];
map <Pair, int> Map;
#define gc getchar()
inline int read() {
int x = 0; char c = gc;
while(c < '0' || c > '9') c = gc;
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc;
return x;
}
struct Node {
int X, Y, K[5], B[5], id;
bool operator < (const Node a) const {
if(this-> Y == a.Y) return this-> X < a.X;
return this-> Y > a.Y;
}
} A[N];
int n, m;
void Get(Node &a) {
int x = a.X, y = a.Y;
a.K[1] = 1, a.B[1] = y - x;
a.K[2] = -1, a.B[2] = x + y;
a.K[3] = Inf, a.B[3] = x; // 上
a.K[4] = y, a.B[4] = Inf; // 左
}
int main() {
n = read(), m = read();
Rep(i, 1, m) {
A[i].X = read(), A[i].Y = read();
Get(A[i]);
}
sort(A + 1, A + m + 1);
Rep(i, 1, m) {
Rep(j, 1, 4) {
Pair now; now.first = A[i].K[j];
now.second = A[i].B[j];
if(Map[now]) {
int pre = Map[now];
Ans[pre] ++;
Ans[i] ++;
Map[now] = i;
} else {
Map[now] = i;
}
}
}
Rep(i, 1, m)
Answer[Ans[i]] ++;
Rep(i, 0, 8)
printf("%d ", Answer[i]);
return 0;
}
noi.ac #42 模拟的更多相关文章
- NOI.AC NOIP模拟赛 第五场 游记
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出 ...
- NOI.AC NOIP模拟赛 第六场 游记
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...
- NOI.AC NOIP模拟赛 第二场 补记
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
- NOI.AC NOIP模拟赛 第一场 补记
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗 ...
- NOI.AC NOIP模拟赛 第四场 补记
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...
- NOI.AC NOIP模拟赛 第三场 补记
NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不 ...
- NOI.AC WC模拟赛
4C(容斥) http://noi.ac/contest/56/problem/25 同时交换一行或一列对答案显然没有影响,于是将行列均从大到小排序,每次处理限制相同的一段行列(呈一个L形). 问题变 ...
- [NOI.AC 2018NOIP模拟赛 第三场 ] 染色 解题报告 (DP)
题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色 ...
- NOI.AC NOIP模拟赛R3解题报告
心路历程 预计得分:\(100+100+50=250\) 实际得分:\(10 +100 +50 = 160\) 三道原题,真好.T2做过,T1写了个错误思路,T3写了写50分状压dp. 整场考试实际在 ...
随机推荐
- 11.15java实习生面试总结
坐了两个小时的车,到了面试地点面了十五分钟左右就结束了,心里有一点难受,不过这也是刚开始,后面的路还长着呢,所以先把面试官问的题目记录下来. 1.C语言能否跨平台? 虽然我面的是java实习生,但是因 ...
- kubernetes第七章--管理存储资源
- 1+X证书学习日志 —— css样式表
## 因为初级的内容较多,所以选了一些有用的 需要记忆的内容写下 方便日后回顾 CSS语法 选择符{属性:属性值;} ## 所有的css代码 都要放在css样式表里面 ...
- 'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件—解决方法
Windows键 + R → 输入cmd → 输入adb,提示“adb不是内部或外部命令,也不是可运行的程序 或批处理文件“,错误信息如下: 解决方法: 此电脑(右击)→ 属性 → 高级系统设置 → ...
- HTML—链接
怎么看都觉得链接太神奇了,尤其是创建电子邮件的链接,于是决定单独写一篇关于HTML链接的内容,同时加深记忆 一.首先,超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,通过点击这些内容来跳转到 ...
- python(For/while循环语句)
一.循环语句 1.while循环 当我们在python中需要重复执行一些动作的时候,这时我们就要用到循环 while循环的结构,当条件成立的时候,就会执行里面的代码 while循环不断的运行,直到指定 ...
- Winserver-FailoverCluster验证异常
Q:新建的2台物理机,组成一个集群,第一遍没有问题,建成后,我想重建所以就destroy掉了,但是在重建时报 错误,尝试了各种清除集群指令和重新安装failover等方法都无效. 以后不在使用Dest ...
- CentOS7安装与优化
原文地址:https://www.cnblogs.com/blsnt/p/9556946.html
- sqlite3入门之sqlite3_get_table,sqlite3_free_table
sqlite3_get_table sqlite3_get_table函数原型: int sqlite3_get_table( sqlite3 *db, /* An open database */ ...
- h5中history实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...