Good Bye 2019E(点坐标缩小一半以区分奇偶性)
设某个点的坐标为(x,y),根据坐标奇偶性公可分为四类,0表示偶数,1表示奇数,(0,0),(0,1),(1,0),(1,1)。
如果所有点的坐标都属于一类,那么它们之间的距离都是4的倍数,无法分辨。
此时将它们的坐标缩小一半,直至区分出奇偶性。
只要有至少一个点的坐标和其他点不在一类里,则可以分为两类。
假设同时存在坐标和为奇数以及坐标和为偶数的点,那么以坐标和为奇数或偶数为标准划分,则两类点在同类中的距离均为4的倍数,而与不同类点的距离是奇数,显然不等,故可行。
如果不能满足上述条件,还可以假设同时存在(0,0)和(1,1)或者同时存在(0,1)和(1,0)的点,那么以横坐标是否为偶数进行划分,则两类点在同类中的距离均为4的倍数,而与不同类点的距离为4的倍数+2(两个奇数相加必定和为2,剩余部分为两个偶数的平方必定为4的倍数),显然距离不等,故可行。
所以关键在于将所有的点都通过缩小的方式把它们分为至少2类。
如果坐标很小的情况下,除以2会将其奇偶性抹去,所以可以先把点的坐标加上初始最大值1e6。
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio();
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
vector<pair<int, int>> p(n);
for (int i = ; i<n; i++) {cin>>p[i].first>>p[i].second; p[i].first+=1e6; p[i].second+=1e6;}
while (true){
vector<vector<int>> cnt(, vector<int>());
for (int i = ; i<n; i++) cnt[p[i].first%][p[i].second%]++;
if (cnt[][]+cnt[][]> && cnt[][]+cnt[][]>){
vector<int> A;
for (int i = ; i<n; i++) if ((p[i].first + p[i].second)%==) A.push_back(i);
cout<<A.size()<<endl;
for (auto it: A) cout<<it+<<' ';
return ;
}
if (cnt[][]+cnt[][]> && cnt[][]+cnt[][]>){
vector<int> A;
for (int i = ; i<n; i++) if (p[i].first%==) A.push_back(i);
cout<<A.size()<<endl;
for (auto it: A) cout<<it+<<' ';
return ;
}
int x, y;
for (int i = ; i<; i++)
for (int j = ; j<; j++) if (cnt[i][j]>) {x = i; y = j;}
for (int i = ; i<n; i++) {p[i].first = (p[i].first - x)/; p[i].second = (p[i].second - y)/;}
}
}
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int a[],b[];
int ans[];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int i=;i<=n;++i)
cin>>a[i]>>b[i];
int cnt=;
while(cnt==||cnt==n){
cnt=;
for(int i=;i<=n;++i){
if((a[i]+b[i])&)
ans[++cnt]=i;
int x=a[i],y=b[i];
a[i]=(x+y)>>;
b[i]=(x-y)>>;
}
}
cout<<cnt<<"\n";
for(int i=;i<=cnt;++i)
cout<<ans[i]<<" "; return ;
}
Good Bye 2019E(点坐标缩小一半以区分奇偶性)的更多相关文章
- 当鼠标移入div上时,div的背景色在4s之内渐变为灰色,同时在5s之内顺时针旋转45度,且尺寸缩小一半;当鼠标移走时,再渐变恢复初始样式
<style> #d1{ width:200px; height:200px; border:1px solid #000; transition:background 4s linear ...
- OpenGL中平移、旋转、缩放矩阵堆栈操作
在OpenGL中,图元的几何变换均为线性变换,通过矩阵变换实现.OpenGL中的坐标用齐次坐标表示,即(x,y,z)表示成(x',y',z',h),其中x=x'/h; y=y'/h; z=z'/h. ...
- 【短道速滑一】OpenCV中cvResize函数使用双线性插值缩小图像到长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。
今天,一个朋友想使用我的SSE优化Demo里的双线性插值算法,他已经在项目里使用了OpenCV,因此,我就建议他直接使用OpenCV,朋友的程序非常注意效率和实时性(因为是处理视频),因此希望我能测试 ...
- 在 .NET Core 下使用 SixLabors.ImageSharp 操作图片文件(放大、缩小、裁剪、加水印等等)的几个小示例
1. 基础 1.1 将图片的宽度和高度缩小一半 直接贴代码了: <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup ...
- 获取ArcMap窗口句柄,通过WinAPI获取工作空间中点击要素的系统桌面坐标实现窗体跟随
这里用了个“桌面坐标”,是希望区分一下ArcGis的“屏幕坐标”(与之对应的还有一个“地理坐标”). 什么是“屏幕坐标”呢?使用ITool接口的OnMouseDown方法获取的“x,y”值即是,其原点 ...
- CSharpGL(27)讲讲清楚OpenGL坐标变换
CSharpGL(27)讲讲清楚OpenGL坐标变换 在理解OpenGL的坐标变换问题的路上,有好几个难点和易错点.且OpenGL秉持着程序难以调试.难点互相纠缠的特色,更让人迷惑.本文依序整理出关于 ...
- zz Must read
http://www.opengpu.org/forum.php?mod=viewthread&tid=965&extra=page%3D1 游戏引擎剖析(Game Engine An ...
- bzoj2289: 【POJ Challenge】圆,圆,圆
Description 1tthinking随便地画了一些圆. ftiasch认为这些圆有交集(面积非零)的可能性不大.因为他实在画了太多圆,所以你被请来判断是否存在交集. Input 第1行,一个整 ...
- LK光流算法:提高计算精度和增加搜索范围
LK光流算法:提高计算精度和增加搜索范围 关于LK算法的基本理论,见:http://www.cnblogs.com/dzyBK/p/4960630.html 这里主要阐述如何提高LK算法的计算精度和在 ...
随机推荐
- ubuntu18.04 编译fortran出现 ‘没有f951这个文件’处理
机器自带了gcc所以可以编译fortran文件, 使用时, gcc **.for –o ***.out 提示,没有找到f951. 然后去网上找解决方案,有的人说在其他地方找到了f951,然后把他复制到 ...
- ubuntu apt 换源
修改配置文件/etc/apt/sources.list 内容替换为 阿里镜像源 deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted ...
- 关于wget安装mysql的过程
鄙人才疏学浅,写此文章是为了帮助我那些刚入门的朋友一点心意 第一步 安装yum源 安装mysql的yum源:wget https://dev.mysql.com/get/mysql80-commun ...
- SQL语句性能分析
SQL语句性能分析 explain执行计划 用法: explain select 语句 命令: show database; use mysql explain select * from user; ...
- 题解 SP27102/UVA1747 【Swap Space】
SP27102 [Swap Space] 双倍经验:UVA1747 Swap Space 用(a,b)表示每个硬盘的原容量和新文件系统下的容量.分两种情况考虑:a≤b和a>b 第一类a≤b格式化 ...
- 集成Log4Net到自己的Unity工程
需要使用的插件库说明: Loxodon Framework Log4NetVersion: 1.0.0© 2016, Clark Yang=============================== ...
- IntelliJ IDEA 2017.3尚硅谷-----取消更新
- MySQL转译
/* 案例3:查询员工名中第二个字符为 _ 的员工名 */ SELECT last_name, salary FROM employees WHERE last_name LIKE '_$_%' ES ...
- Ninject 2.x细说---2.绑定和作用域
Ninject 2.x细说---2.绑定和作用域 转载weixin_33725272 最后发布于2011-11-06 00:03:00 阅读数 9 收藏 Ninject中提供多种接口和实现类的绑 ...
- 生产环境实践:Cana实现MySQL到ES实时同步
注:由于文章篇幅有限,完整文档可扫下面二维码免费获取,更有深受好评的大数据实战精英+架构师好课等着你. 速点链接加入高手战队:http://www.dajiangtai.com/course/112. ...