[题解]Magic Line-计算几何(2019牛客多校第三场H题)
题目链接:https://ac.nowcoder.com/acm/contest/883/H
题意:
给你偶数个点的坐标,找出一条直线将这n个点分成数量相等的两部分
并在这条直线上取不同的两个点,表示这条直线
思路:
看见这题的第一反应是,先定一个相对这些点无限远的定点
然后取扫一遍,取一个其中一个点,找到一条能将这些点分成m个和m+1个点
最后将斜率微微倾斜,在直线上再取一点即可
最后疯狂WA,不知道是算法问题还是代码问题
听了大佬的讲解,发现自己真的蠢
最后的做法:
将这n个点按x坐标从小到大排序,x坐标相同时按y坐标从小到大排序
这样就能找到中间偏左的一个点p(x0,y0),取一条竖直直线x=x0
然后将这条竖直直线,以点p为中心逆时针旋转一点点
设答案两点a(x1,y2),b(x2,y2),令x1=x0-1,x2=x0+1,y1=y0+1000000,y2=y0-1000000 就可以实现
这样就能将这些点分为成m个和m+1个点
最后保持a点不动,将b点上移一个单位长度 y2=y2+1
就能使点p也落在直线下面,成功分成数量相等的两堆
再次感叹一下自己好捞qaq
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define e 990000000 struct point{
int x,y;
}p[]; bool cmp(point a,point b){
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
} int main()
{
int n,m,t,x1,x2,y1,y2;
cin>>t;
while(t--){
cin>>n;
for(int i=;i<n;i++)
cin>>p[i].x>>p[i].y;
sort(p,p+n,cmp);
int m=n/-;
x1=p[m].x-,x2=p[m].x+,y1=p[m].y+e,y2=p[m].y-e+;
printf("%d %d %d %d\n",x1,y1,x2,y2);
}
return ;
}
[题解]Magic Line-计算几何(2019牛客多校第三场H题)的更多相关文章
- 2019牛客多校第三场H Magic Line 思维
Magic Line 题意 给出n(偶)个整点 整点范围1000,找出一条直线,把n个点分成均等的两部分 分析 因为都是整数,并且范围比较小,所以直接按x排序找到在中间那一部分,并且把中间那一部分的点 ...
- 2019 牛客多校第三场 H Magic Line
题目链接:https://ac.nowcoder.com/acm/contest/883/H 题目大意 给定 N 个不同的整数点,N 为偶数,求一条直线,这条直线能把这 N 个点对半分开,输出这条直线 ...
- [题解]Crazy Binary String-前缀和(2019牛客多校第三场B题)
题目链接:https://ac.nowcoder.com/acm/contest/883/B 题意: 给你一段长度为n,且只有 ‘0’ 和 ‘1’ 组成的字符串 a[0,...,n-1].求子串中 ‘ ...
- 启发式分治:2019牛客多校第三场 G题 Removing Stones
问题可以转换为求有多少个区间数字的总和除2向下取整大于等于最大值.或者解释为有多少个区间数字的总和大于等于最大值的两倍(但是若区间数字总和为奇数,需要算作减1) 启发式分治: 首先按最大值位置分治,遍 ...
- 2019牛客多校第八场 F题 Flowers 计算几何+线段树
2019牛客多校第八场 F题 Flowers 先枚举出三角形内部的点D. 下面所说的旋转没有指明逆时针还是顺时针则是指逆时针旋转. 固定内部点的答案的获取 anti(A)anti(A)anti(A)或 ...
- 2019牛客多校第三场H-Magic Line
Magic Line 题目传送门 解题思路 因为坐标的范围只有正负1000,且所有点坐标都是整数,所以所有点相连构成的最大斜率只有2000,而我们能够输出的的坐标范围是正负10^9.所以我们先把这n个 ...
- 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数
目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...
- [题解]Shorten IPv6 Address-模拟(2019牛客多校第六场B题)
题目链接:https://ac.nowcoder.com/acm/contest/886/B 题意: 您将获得一个IPv6地址,该地址是128位二进制字符串.请根据以下规则确定其最短的表示: 以十六进 ...
- 2019牛客多校第六场H Pair(数位DP 多个数相关)题解
题意: 传送门 给你\(A,B,C\),要求你给出有多少对\((x, y)\)满足\(x\in [1,A],y\in [1,B]\),且满足以下任意一个条件:\(x \& y > C\) ...
随机推荐
- 【Python—参数】*arg与**kwargs参数的用法
在python中,这两个是python中的可变参数,*arg表示任意多个无名参数,类型为tuple;**kwargs表示关键字参数,为dict. # *允许你传入0个或任意个参数,这些可变参数在函数调 ...
- 二进制安装kubernetes集群
链接地址 https://www.cnblogs.com/leleyao/p/10453848.html 安装etcd 证书制作 apiserver 证书 [root@master01 ssl]# ...
- [Linux Test Project] [PATCH] Fix an bad variable name erro in runltp script
[PATCH] Fix an bad variable name erro in runltp script (/opt/ltp/runltp) Hi All, I got an error fo ...
- Java负整数的左移、右移、无符号右移
转自 Java负整数的左移.右移.无符号右移 Java负整数的左移.右移.无符号右移.正数的位移没有涉及到符号,而且正数的原码.反码.补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆 ...
- sublime text3 安装插件
遇到的问题1: 软件中无此属性 打开Packages目录,Preferences > Browse Packages 就可以进入这个目录.$ cd Packages/$ git clone ht ...
- 有关css的兼容问题
兼容性 1 页面在不同浏览器中可能显示不同 在IE6下 子级的宽度会撑开父级设置好的宽度 温馨提示:和模型的计算一定要精确,IE浏览器可能显示不同 兼容性 2 在IE6中,元素浮 ...
- overload和override的含义和区别
重载(overload)和重写/覆盖(override)是Java多态性的不同表现形式. 重载(overload) (1) 重载是通过不同的方法参数来区分的,如不同的参数个数.顺序.类型. (2) 不 ...
- MySQL MHA+Keepalived
一.MHA的简单介绍MHA是由perl语言编写的,用外挂脚本的方式实现mysql主从复制的高可用性.MHA可以自动检测mysql是否宕机,如果宕机,在10-30s内完成new master的选举,应用 ...
- 11.IPFS搭建及上传获取数据——2019年12月12日
title: ipfs使用 date: "2019-09-26 10:17:16" tags: ipfs categories: 技术驿站 1.mac安装ipfs--使用npm工具 ...
- Vue中 let 关键字
let es6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. 不存在变量提升 var命令会发生”变量提升“现象,即变量可以在声明之前使用,值 ...