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. 整场考试实际在 ...
随机推荐
- spring boot 用@CONFIGURATIONPROPERTIES 和 @Configuration两种方法读取配置文件
spring cloud 读取 配置文件属性值 1.bean @Data public class LocalFileConfig { /** * 文件存储地址 */ private String ...
- Hadoop2.8.4集群配置
建hadoop用户 #添加用户hadoop adduser hadoop 这个过程中需要输入密码两次 Enter new password: Retype new password: passwd: ...
- git学习笔记 ---管理修改
现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...
- ABP 基于DDD的.NET开发框架 学习(六)创建新动态Api
我们想要这个服务暴露成一个Web API控制器,以方便客户端调用.ASP.NET Boilerplate能够自动且动态地为这个应用服务创建Web API 控制器,只需要一行配置代码即可完成. Dyna ...
- git 出现 fatal: remote origin already exists 错误
当输入$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 出现 如下错误: 解决办法如下: 1.先输入 ...
- vscode编辑器中文乱码问题
设置配置自动格式化: "[javascriptreact]": { "editor.defaultFormatter": "esbenp.pretti ...
- EhLib使用全攻略
使用 TDBSumList 组件 还记得以前有朋友问过这样一个问题:在 DBGrid 下如何像 Excel 一样能够做统计计算,实话说,使用 DBGrid 来做的话着实不易,不过现在有了这个咚咚, ...
- ASP.NET 取得 Request URL 的各个部分和通过ASP.NET获取URL地址的方法
网址:http://localhost:1897/News/Press/Content.aspx/123?id=1#toc Request.ApplicationPath / Request.Phys ...
- SQL SERVER-记录对表操作的触发器
CREATE TRIGGER [dbo].[KNMT_LOG] ON [dbo].[KNMT] FOR UPDATE, DELETE AS ) ) ) ) DECLARE @STATMT AS VAR ...
- SQL SERVER-Exclusive access could not be obtained because the database is in use. (Microsoft.SqlServer.SmoExtended)
Q:先在一个实例中恢复一个数据A,然后又想在恢复一次,取别名为A2,这是报异常SQL SERVER-Exclusive access could not be obtained because the ...