E. Divide Points(想法 黑白染色 坐标转换)
http://codeforces.com/problemset/problem/1270/E
题意:
给出n个点,分成两个阵营。要求:两个阵营之间的点的欧式距离不能与阵营内部的点的欧氏距离相同。
解析:
距离平方组成: d x 2 + d y 2 dx^2+dy^2 dx2+dy2,奇奇得偶,偶偶得偶,奇偶得奇。
- x+y为偶的阵营内部, d x , d y dx,dy dx,dy是奇奇或者偶偶
- x+y为奇的阵营内部, d x , d y dx,dy dx,dy是奇奇或者偶偶
- 两个之间, d x , d y dx,dy dx,dy是奇偶
如果全是一个阵营,考虑转换坐标再分。先转化为x+y为偶的阵营(x–),然后将当前点当作切比雪夫坐标系,转为曼哈顿坐标系。
x , y = x + y 2 , x − y 2 x,y=\dfrac{x+y}{2},\dfrac{x-y}{2} x,y=2x+y,2x−y
代码:
/** Author : Jk_Chen* Date : 2020-02-17-11.03.53*/
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define rep(i,a,b) for(int i=(int)(a);i<=(int)(b);i++)
#define per(i,a,b) for(int i=(int)(a);i>=(int)(b);i--)
#define mmm(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define pill pair<int, int>
#define fi first
#define se second
#define debug(x) cerr<<#x<<" = "<<x<<'\n'
const LL mod=1e9+7;
const int maxn=1e3+9;
const int inf=0x3f3f3f3f;
LL rd(){ LL ans=0; char last=' ',ch=getchar();while(!(ch>='0' && ch<='9'))last=ch,ch=getchar();while(ch>='0' && ch<='9')ans=ans*10+ch-'0',ch=getchar();if(last=='-')ans=-ans; return ans;
}
#define rd rd()
/*_________________________________________________________begin*/pill x[maxn];
bool vis[maxn];int main(){int n=rd;rep(i,1,n){x[i]={rd,rd};}while(1){int cnt=0;mmm(vis,0);rep(i,1,n){if(x[i].fi+x[i].se&1)vis[i]=1,cnt++;}if(cnt>0&&cnt<n){printf("%d\n",cnt);rep(i,1,n)if(vis[i])printf("%d ",i);puts("");break;}else{if(cnt)rep(i,1,n)x[i].fi--;rep(i,1,n){int a=x[i].fi+x[i].se>>1;int b=x[i].fi-x[i].se>>1;x[i]={a,b};}}}return 0;
}/*_________________________________________________________end*/
E. Divide Points(想法 黑白染色 坐标转换)相关推荐
- hdu 5285 二分图黑白染色
题意:给出 n 个人,以及 m 对互不认识的关系,剩余的人都互相认识,要将所有人分成两组,组内不能有互不认识的人,要求每组至少有一人,并且第一组人数尽量多,问两组人数或不可能时单独输出 BC 48 场 ...
- BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论
这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...
- Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色
传送门 文章目录 题意: 思路: 题意: 给你个不规则的网络格子,有nnn列,每列有aia_iai个格子,让你将1×21×21×2的多米诺骨牌无重叠的放进去,问最多能放多少个. 思路: 首先如果点数 ...
- AT2339-[AGC011C]Squared Graph【黑白染色】
正题 题目链接:https://www.luogu.com.cn/problem/AT2339 题目大意 给出nnn个点mmm条边的一张无向图,然后有一张n×nn\times nn×n的图,每个点是一 ...
- AGC 027D.Modulo Matrix(构造 黑白染色)
题目链接 \(Description\) 给定\(n\),要求构造一个\(n\times n\)的矩阵,矩阵内的元素两两不同,且任意相邻的两个元素\(x,y\),满足\(\max(x,y)\ \mat ...
- 黑白染色——封锁阳光大学
所谓黑白染色,就是指用bfs或dfs依次遍历每一个点,同时进行染色,一黑一白,如果遇到已经染过色的点并且点的颜色和即将要染的颜色冲突,就说明无法进行二分,无法满足染色.大概就是这样的. 下面我们看一道 ...
- AtCoder Beginner Contest 209 D - Collision「黑白染色」
D - Collision 题目描述: 给一颗树,q次询问,每次询问给两个点x和y,两个点上放两个人以相同的速度,沿着二者的最短路前进,问二者会在点上相遇,还是在边上相遇 思路: 不难发现,对于任意两 ...
- 【HDU】4859 海岸线 黑白染色+最小割
传送门:[HDU]4859 题目分析: 最小割的思想真是博大精深! 本题的模型是最小割. 我们需要最大化海岸线的长度,如果相邻两点属性不同才会存在海岸线(海和陆地),所以我们可以将题目转化成最小化不是 ...
- 2638: 黑白染色
题目链接 题目大意:黑白矩阵,每次可以选择一个四联通块染色,求最少操作次数 题解:将目标状态里相同颜色的联通块缩点,枚举起点,生成树里的最大节点深度就是需要的次数了 如果最大深度是白色的话记得-1 我 ...
最新文章
- 要锻炼二手交换的能力
- OpenCASCADE:环境变量
- [leetcode sort]56. Merge Intervals
- PL/SQL中的RSA加密
- matlab接口与编程,精通MATLAB接口与编程
- 产品总监基本功:从零到壹
- ViT (Vision Transformer) ----LSTM网络
- 安卓交叉编译环境配置
- Cogs 647. [Youdao2010] 有道搜索框(Trie树)
- DNS服务器设置正确,DNS服务器配置(DNS各属性详细介绍)
- 【每日一题】(D0723)strcpy 智能指针
- HITWH-PYTHON学习笔记(2)-20170706
- python 基于百度aip库 实现识别图片中的文字
- COCO数据集之gt_overlaps之分析
- 算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)
- 请简述一下 Ajax 的原理及实现步骤
- 飞冰一个很不错的网站
- 通过OpenCv的HoughCircles函数获取图片中的圆形
- 编辑距离算法原理及其实现
- 个人项目——基于STM32的智能教务显示系统
热门文章
- clap与slap_clap什么意思(slap与clap的区别)
- overleaf表格_Overleaf——LaTeX制表命令使用教程
- Java学习之旅(三四):包装类之 Double
- 微信小程序之图片上传 demo
- Android知识大全
- Install-package
- php 凯撒加密解密,PHP脚本实现凯撒加(解)密
- 记录下制作Ubuntu启动U盘踩的坑
- 工业机器人安装调试与维护课程试卷_工业机器人安装、调试与维护教学课件作者阙正湘项目五工业机器人机械结构件的维修...
- 普元中间件Primeton AppServer6.5部署SuperMap iServer