「AGC025D」 Choosing Points
「AGC025D」 Choosing Points
神仙构造题。
首先你会尝试暴力做,先随便选一个点,然后把当前能选得全选上,然后你发现这样样例都过不了。
然后我们可以这样考虑:你把距离为 \(\sqrt{D}\) 的点连起来,会得到一个二分图。
考虑分情况讨论:
\(D \equiv 3 \pmod 4\)
根据小学二年级的数学知识可知这种情况不存在。
\(D \equiv 1 \pmod 2\)
此时有 \((x_1-x_2)^2+(y_1-y_2)^2\equiv|x_1-x_2|+|y_1-y_2|\equiv (x_1-x_2)+(y_1-y_2)\equiv 1\pmod 2\)显然可以按照 \((x+y)\) 的奇偶性进行分组。
\(D \equiv 0 \pmod 2\)
现在好像处理不了了,我们可能需要继续分组。
\(D \equiv 2 \pmod 4\)
根据小学二年级得到数学知识显然没有 \(x^2\equiv 2\pmod 4\),所以一定有 \((x_1-x_2)^2\equiv 1 \and (y_1-y_2)^2\equiv 1\)。按照 \(x\) 的奇偶性分组后,有边相连的显然不在同一组。
\(D \equiv 0 \pmod 4\)
根据小学二年级得到数学知识显然没有 \(x^2\equiv 2\pmod 4\),所以一定有\((x_1-x_2)^2+(y_1-y_2)^2\equiv 0 \pmod 4\iff x_1\equiv x_2\pmod 2 \and y_1\equiv y_2\pmod 2\)
然后把有边相连的点看成一组,我们只需要证明每组都是二分图。这个东西只需要将所有的坐标都除以二向下取整,就转化成了范围更小的子问题。
然后你现在有两个 \(D\),每个 \(D\) 会把图划分成两部分,也就是说,我们会将原图分成至多四个部分,找最大的那个部分输出即可。
/*---Author:HenryHuang---*/
/*---Never Settle---*/
#include<bits/stdc++.h>
using namespace std;
int siz,d1,d2;
int vis[1010][1010];
void solve(int x){
int tim=0;
while(x%4==0) x/=4,++tim;
if(x&1){
for(int i=0;i<siz*2;++i)
for(int j=0;j<siz*2;++j)
if(((i>>tim)+(j>>tim))&1) vis[i][j]=1;
}
else{
for(int i=0;i<siz*2;++i)
for(int j=0;j<siz*2;++j)
if(((i>>tim))&1) vis[i][j]=1;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>siz>>d1>>d2;solve(d1),solve(d2);
int num=0;
for(int i=0;i<siz*2;++i)
for(int j=0;j<siz*2;++j){
if(!vis[i][j]) cout<<i<<' '<<j<<'\n',++num;
if(num==siz*siz) return 0;
}
return 0;
}
「AGC025D」 Choosing Points的更多相关文章
- 「CF643G」 Choosing Ads
「CF643G」 Choosing Ads 传送门 如果你知道摩尔投票法可以扩展事实上是个一眼题,又好写又好调. 首先摩尔投票法是用来求众数定义为超过所有数个数一半的数的一个算法. 大致算法流程: 将 ...
- [AGC025D]Choosing Points
[AGC025D]Choosing Points 题目大意: 输⼊\(n(n\le300),d_1,d_2\),你要找到\(n^2\)个整点\((x,y)\)满⾜\(0\le x,y<2n\). ...
- 洛谷比赛 「EZEC」 Round 4
洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...
- 「译」JUnit 5 系列:条件测试
原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...
- 「译」JUnit 5 系列:扩展模型(Extension Model)
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...
- JavaScript OOP 之「创建对象」
工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...
- 「C++」理解智能指针
维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...
- 「JavaScript」四种跨域方式详解
超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript 的同源策略,并且了解使用跨域跨域的理由. 1. JSONP 首先要介绍的跨域方法必然是 JSON ...
- 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management
写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...
随机推荐
- SQL Server 将两行或者多行拼接成一行数据
一个朋友,碰到一个问题. 就是查询出来的结果集,需要每隔三行.就将这三行数据以此拼接为一行显示.起初我想着用ROW_NUMBER加CASE WHEN去做,发现结果并非我预期那样. 结果如下: 由于别人 ...
- 树莓派3B+常用操作
安装Docker 替换成清华源 清华源地址https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/ echo "deb [arch=armhf ...
- YOLOv5目标检测源码重磅发布了!
YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...
- 大规模数据处理Apache Spark开发
大规模数据处理Apache Spark开发 Spark是用于大规模数据处理的统一分析引擎.它提供了Scala.Java.Python和R的高级api,以及一个支持用于数据分析的通用计算图的优化引擎.它 ...
- 如何为应用选择最佳的FPGA(上)
如何为应用选择最佳的FPGA(上) How To Select The Best FPGA For Your Application 在项目规划阶段,为任何一个项目选择一个FPGA部件是最关键的决策之 ...
- ng : 无法加载文件 C:\Users\szz\AppData\Roaming\npm\ng.ps1,因为在此系统上禁止运行脚本的解决方案
当安装好Angular CLI后想要查看该版本时在终端键入: ng version 后出现下图的错误提示 解决方案: 在win10 系统中有一个搜索框 输入 Windos PowerShell (一定 ...
- 从实力的角度出发来思考这道AOP题目
文/楠木大叔 技术更迭,一往无前.技术人总是要不断学习以适应社会的发展和行业对我们的要求.每隔一段时间,就会有纷至沓来的新技术,新知识,新概念,我们应该如何应对,是被逼到墙角,还是主动出击? 导读 从 ...
- .NET平台系列23:.NET Core/.NET5/.NET6 和 .NET Framework 的选择建议
系列目录 [已更新最新开发文章,点击查看详细] 有两种支持的 .NET 实现可用于生成服务器端应用: .NET Framework .NET Core/5+,包括 .NET Core..NET ...
- JUC下工具类CountDownLatch用法以及源码理解
CountDownLoatch是JUC下一个用于控制计数的计数器,比如我需要从6开始计数,每个线成运行完之后计数减一,等计数器到0时候开始执行其他任务. public static void main ...
- SpringBoot2 参数管理实践,入参出参与校验
一.参数管理 在编程系统中,为了能写出良好的代码,会根据是各种设计模式.原则.约束等去规范代码,从而提高代码的可读性.复用性.可修改,实际上个人觉得,如果写出的代码很好,即别人修改也无法破坏原作者的思 ...