2019牛客暑期多校训练营(第三场)- H Magic Line (计算几何)
题目链接:https://ac.nowcoder.com/acm/contest/883/H
题意:给定n个点(n为偶数),求一条直线使得n个点平均分散在直线两端,即每端n/2个点。
思路:把n个点按x升序排列,x相等时按y升序排列,这时候我们取第n/2个点和第n/2+1个点,以它两为界限,把n个点均分。因为n个点的坐标<=1e3,而我们的直线的点可以<=1e9,那么一定可以找到一条很陡的直线满足条件。

图片来自:https://www.cnblogs.com/st1vdy/p/11245932.html
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std; int T,n; struct node{
int x,y;
}pt[]; bool cmp(node a,node b){
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
} int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d%d",&pt[i].x,&pt[i].y);
sort(pt+,pt+n+,cmp);
int x1=pt[n/].x,y1=pt[n/].y;
int x2=pt[n/+].x,y2=pt[n/+].y;
int xx1,xx2,yy1,yy2;
if((y1+y2)>=)
yy1=1e9,yy2=y1-(yy1-y2);
else
yy2=-*1e9,yy1=y2+(y1-yy2);
if((x1+x2)%==)
xx1=(x1+x2)/-,xx2=xx1+;
else
xx1=x1+(x2-x1)/,xx2=xx1+;
printf("%d %d %d %d\n",xx1,yy1,xx2,yy2);
}
return ;
}
2019牛客暑期多校训练营(第三场)- H Magic Line (计算几何)的更多相关文章
- 2019牛客暑期多校训练营(第三场)H题目
题意:给你一个N×N的矩阵,求最大的子矩阵 满足子矩阵中最大值和最小值之差小于等于m. 思路:这题是求满足条件的最大子矩阵,毫无疑问要遍历所有矩阵,并判断矩阵是某满足这个条件,那么我们大致只要解决两个 ...
- 2019牛客暑期多校训练营(第三场)- F Planting Trees
题目链接:https://ac.nowcoder.com/acm/contest/883/F 题意:给定n×n的矩阵,求最大子矩阵使得子矩阵中最大值和最小值的差值<=M. 思路:先看数据大小,注 ...
- 2019牛客暑期多校训练营(第三场) F.Planting Trees(单调队列)
题意:给你一个n*n的高度矩阵 要你找到里面最大的矩阵且最大的高度差不能超过m 思路:我们首先枚举上下右边界,然后我们可以用单调队列维护一个最左的边界 然后计算最大值 时间复杂度为O(n*n*n) # ...
- 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)
题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9: 对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可. 后者mod=1e9,5才 ...
- 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...
- 2019牛客暑期多校训练营(第一场) B Integration (数学)
链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...
- 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...
- 2019牛客暑期多校训练营(第二场)F.Partition problem
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...
- 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)
链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...
- [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem
链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...
随机推荐
- 11.EL(表达式语言)
一.EL概述 EL(Expression Language,表达式语言)是JSP2.0 中引入的新内容.通过EL可以简化在JSP中对对象的引用,从而规范页面代码,增加程序的可读性和可维护性. 1.EL ...
- P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
输入格式: 第1行:一个长度为111到666的大写字母串,表示彗星的名字. 第2行:一个长度为111到666的大写字母串,表示队伍的名字. 输出格式: 如果能搭配,就输出“GO”,否则输出“STAY” ...
- python基础_0623
命名的规则: project name package name python file name 1. 不能以数字开头,不能使用中文 2. 不能使用关键字 3. 英文 字母 ...
- docker启动常见报错
Docker启动时的报错汇总 22017.11.10 16:30:29字数 575阅读 27184 八个Docker常见故障 https://mp.weixin.qq.com/s/2GNKmRJtBG ...
- 8,聚类分析 fenxinhuag
1.K-Means聚类分析 2.系统聚类分析 样本间常用距离: 类间常用距离: 3.DBSCAN聚类分析
- Https 协议解析
1 概述1.1 HTTPS 使用SSL协议,对HTTP协议通信过程中的明文数据加密,这就是HTTPS.网络分层结构如下: SSL协议负责数据加密,解密,位于HTPP协议和TCP协议之间. ...
- C++面试出现频率最高的30道题目
http://blog.csdn.net/wangshihui512/article/details/9092439 1.new.delete.malloc.free关系 delete会调用对象的析构 ...
- js的window.onscroll事件兼容各大浏览器
为窗口添加滚动条事件其实非常的简单, window.onscroll=function(){}; 注意在获取滚动条距离的时候 谷歌不识别document.documentElement.scrollT ...
- ORA-00600: internal error code, arguments: [kdBlkCheckError]
ORA-00600: internal error code, arguments: [kdBlkCheckError] Table of Contents 1. 现象 2. 分析 3. 故障处理 1 ...
- 代码实现集合嵌套之ArrayList嵌套ArrayList
package com.loaderman.list; import java.util.ArrayList; import com.loaderman.bean.Person; public cla ...