当前位置: 首页 > news >正文

Codeforces 2072E 题解

题目大意

在一个平面直角坐标系上设置 \(n\) 个点,第 \(i\) 个点的坐标为 \((x_i,y_i)\)。给定 \(k\),求一个恰有 \(k\) 个点对 \((i,j)\),满足这 2 个点的欧几里得距离和曼哈顿距离相等的设点方案。

题目思路

我们先思考在何种情况下会满足题目需要的条件,即 2 个点的欧几里得距离和曼哈顿距离相等。我们在坐标系上先假定 2 个点的位置。如图所示,\(A,B\) 两点的欧几里得距离为 \(c\),曼哈顿距离为 \(a+b\)

image

根据中学数学知识,我们知道:因为图中 \(a,b,c\) 所围成的三角形是直角三角形(由曼哈顿距离的定义可得知),所以 \(a+b>c\),而这与我们的题意是相悖的。

所以,当点 \(A,B\) 可围成一个三角形时,这个点对一定是不满足题意的。所以,我们可以得知:满足题意的点对,一定位于同一条平行于 \(x\) 轴或平行于 \(y\) 轴的直线上。

为统一做法,后文我们在构造的过程中,将所有符合条件的点对设置在同一条平行于 \(y\) 轴的直线上。

这样一来,这道题就变成了:设置 \(g\) 条平行于 \(y\) 轴且互相平行的直线 \(l_1,l_2,\dots,l_g\),在直线 \(l_i\) 上取 \(s_i\) 个点,使得 \(\sum s_i\le 500\)\(\sum\dfrac{s_i(s_i+1)}{2}=k\)(线段数求和公式,这个是初一数学内容,这里不再赘述)。

我们可以使用一个 while 循环,设置 \(x,y,t,tt\) 变量,其中 \(x\) 既代表了 \(l_x\),也代表了当前点的 \(x\) 坐标;\(y\) 代表当前点的 \(y\) 坐标;\(t\) 是直线 \(l_x\) 上目前的点数;\(tt\) 是一共设置了多少个点(即输出的 \(n\))。通过这种方式来得出每条直线上的点数以及具体坐标。最后输出即可。

参考代码

#include<bits/stdc++.h>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;const int INF=0x3f;
const double EPS=1e-8;template<typename T=int>
T rd(){char ch=getchar();T x=0,f=1;while(!isdigit(ch)){if(ch=='-') f*=-1;ch=getchar();}while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*f;
}void solve(){int k;cin>>k;set<ll> se;ll x=1,y=1,t=0,tt=0,s=k;queue<pii> q;while(s>0){if(se.count(y)){y+=x;continue;}se.insert(y);q.push({x,y});s-=t;y+=x;t++;tt++;if(t>s){t=0;x++;y=1;}}cout<<tt<<endl;while(!q.empty()){cout<<q.front().first<<" "<<q.front().second<<endl;q.pop();}
}int main(){cin.tie(nullptr)->sync_with_stdio(false);int T;cin>>T;while(T--){solve();}return 0;
}
http://www.jsqmd.com/news/290352/

相关文章:

  • 大模型微调完全指南:原理、实践与平台选择,让AI真正为你所用
  • 2026年出口工作服生产厂家TOP10推荐,选择靠谱供应商
  • 全网最全8个一键生成论文工具,专科生搞定毕业论文必备!
  • Perfetto笔记-1-Perfetto官方文档翻译-1-Trace Analysis-1-PerfettoSQL - Hello
  • 实用指南:【银尔达以太网DTU】YED-E100Y 以太网转RS485
  • 华为MetaERP实现ERP(企业资源计划)、MES(制造执行系统)和PLM(产品生命周期管理)的一体化,是其“自主可控”战略下的核心成果,旨在解决传统系统间“数据孤岛”和“流程割裂”的痛点。其一体化
  • 华为MetaERP的推出对中国ERP市场格局将产生深远影响,主要体现在以下几个方面
  • CTO血泪复盘:自建K8s三年烧了400万,早用Sealos能省一半
  • 智能物流仓库自动化操作手册 - 指南
  • vue表格 vxe-table 如何实现键盘导航时,按回车健向右移动,并到最后一行时按回车自动新增一行
  • 图论-并查集
  • 特价股票与公司长期气候适应能力的关系分析
  • .nvue页面实现画笔绘制功能,用原生html导入nvue页面使用还可以截图(画笔 清空 橡皮擦 改颜色 禁用画笔 截图-是视频画面加绘制合成一张图片截图)-我花80块钱找淘宝都没弄出来,自己写的
  • 搞懂大数据CAP定理,为你的职业发展添砖加瓦
  • WebGL Shader性能优化
  • 手机外壳平面度用什么设备检测快?SIMSCAN精细模式+自动报告方案推荐
  • 建筑BIM模型怎么从实体建筑生成?三维扫描仪推荐TrackScan-Sharp!
  • HBase与Quarkus:Kubernetes原生Java
  • 详细介绍:《 Linux 点滴漫谈: 四 》文件权限与用户管理
  • 阿里拟析平头哥以赴市:论芯片分拆之战略深意
  • 多边形剪裁算法
  • 铸件毛坯余量如何精准测量分析?自动生成偏差色谱图产品推荐
  • 2026年深圳APP定制开发外包公司权威榜单发布
  • 量具测不准太慢?模具精度检查难题破解!思看3DeVOK MT+Polyworks方案推荐
  • 提升大数据处理效率,聚焦 ETL 核心策略
  • 2026必备!继续教育必看!TOP10一键生成论文工具深度测评
  • 大数据领域数据服务在旅游科技领域的应用探索
  • URC 分流是什么意思 + 为什么必须做 + ESP-IDF 可直接用的代码框架
  • ESP_ERR_OTA_VALIDATE_FAILED 的意思非常明确
  • 结论是:不是单一问题,你这边至少有 2 类崩溃,而且都和 ML307 的 AT/UART收发链路 + 异常数据处理 强相关