CF1968E.Cells Arrangement-构造(给个和题解不同的做法)

news/2024/10/12 12:24:49

link:https://codeforces.com/problemset/problem/1968/E
题意:需要构造一个 \(n\times n\) 的棋盘,在上面放 \(n\) 枚棋子,设集合 \(\mathcal{H}\) 表示两两之间曼哈顿距离构成的集合,要让 \(|\mathcal{H}|\) 最大。给出放棋子的方案。


首先说说题解的做法…考虑把距离为奇数和偶数的分开想…然后就会有下面这种,对角线放一堆,然后角落放两个的操作,非常合理…

但是我完全没想到这么造…

首先想的是,距离最近是 \(0\),最远是 \(2(n-1)=2n-2\),答案上界应该是 \(2n-1\),那我们就看看能不能取到上界,想这么一个构造:如果在左上角放了一排 \(L\) 个棋,可以得到 \([0,L-1]\) 的所有距离,至多可以造到 \([0,n-1]\),这不够用

如果把棋盘分成四份,左上角放 \(n/2\) 个,右下角放一个,会发生什么呢?

右下角能额外产生最小 \(n-1+(n/2)=\frac{3}{2} n-1\),最大 \(2n-2\) 的值,这样是把 \([0,2n-2]\) 的前后都覆盖住了,中间还有大约 \(n\) 个数,再放几个球:

绿色小球和左上角能产生 \([n/2,n/2-1+n/2]=[n/2,n-1]\) 的值,而黄色小球能产生 \([n/2+n/2-1,n-1+(n/2-1)]=[n-1,\frac{3}{2}n-2]\) 的值。

所以大约用了 \(\frac{n}{2}+3\) 个球就得到了最大值…剩下的随便乱放就好。
当然,具体实现的时候wa了一发, \(n=4\) 的时候太小会出问题,其他情况都能取得到。

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define endl '\n'
#define fastio ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
int main(){fastio;int tc;cin>>tc;while(tc--){int n;cin>>n;vector<pii> ans;int lst=n;if(n==4){ans.push_back({1,1});ans.push_back({1,3});ans.push_back({4,3});ans.push_back({4,4});}else{rep(i,1,(n+1)/2){ans.push_back({1,i});lst--;}ans.push_back({n,n});lst--;if(lst){ans.push_back({(n+1)/2,(n+1)/2+1});lst--;}if(lst){ans.push_back({(n+1)/2+1,n});lst--;}while(lst--)ans.push_back({n,n});}for(auto [x,y]:ans)cout<<x<<' '<<y<<endl;cout<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27274.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

可持久化 树

Nityacke 的部分没多少,主要是 lxl 的部分可持久化可持久化线段树注意到 这里的内容 可能包括了 狭义的 可持久化线段树,可持久化权值线段树,”主席树“,可持久化 \(Trie\)...Luogu P3919 【模板】可持久化线段树 1(可持久化数组) 特定版本 单点修改,特定版本 单点查询,…

Metasploit-即时入门(全)

Metasploit 即时入门(全)原文:annas-archive.org/md5/FDEA350254319975F23617766073DAB6 译者:飞龙 协议:CC BY-NC-SA 4.0第一章. 快速入门 Metasploit 欢迎阅读《快速入门 Metasploit》。本书特别为您提供了设置 Metasploit 所需的所有信息。您将学习 Metasploit 的基础知…

威联通NAS强制降级解决系统崩溃问题

远程修复威联通NAS升级系统或系统崩溃无法进入WebUI界面的问题。V1.0 2024年5月3日 序言正文:解决方法 通过SSH强制降级重装(远程、局域网)通过QFinder重置(局域网内有可用主机)参考链接序言威联通的系统不要轻易更新,特别是Public Beta版本,有一定概率遇到bug,有一定概…

webapi添加添加websocket中间件

添加位置 我按照MSDN的例子添加了一个复述客户端响应的中间件。需要注意的时,中间件采用那种方式添加,添加在哪。哪种方式 我选择创建一条管道分支,只要时ws的连接请求,就转到这个分支 因此,我们需要使用的是MapWhen()来创建管道分支。 添加在哪 要注意授权的问题,所以应…

团队作业5

这个作业属于哪个课程 <软件工程2024-双学位>这个作业要求在哪里 <团队作业5>代码地址:gitcode链接 一、功能介绍 登录账号功能查看课表功能与帮助和说明二、环境要求 该软件以微信小程序形式存在,需要能使用小程序的微信版本,无需特意安装,只需安装微信。 bug…

U423621 [HDK - NRC] Sqen Paradox

[HDK - NRC] Sqen Paradox 题目描述 给定一个长度为 \(n\) 的数列 \(S\). 询问在给定区间 \([l,r]\) 内最长的没有重复元素的区间长度. 输入格式 第一行两个整数 \(n,m\). 第二行 \(n\) 个整数,描述数列 \(S\). 随后 \(m\) 行,每行一个询问. 输出格式 \(m\) 行,请你对每个询…

Hexo-Matery主题评论插件

matery主题集成了各种评论模块,例如 gitalk、gitment、disqus、livere、valine、waline、Twikoo、utteranc 等,但我使用最好的还是 utteranc 这种集成在github种的评论插件,并且能够做到github邮箱通知。 1. 新建一个评论仓库 首先创建一个公开的评论仓库<自定义名称>…

DHU网络攻防靶场攻击记录

DHU网络靶场攻击记录 已知:靶场入口10.199.227.xxx 不完整的网络拓扑图:环境准备:kali/wsl-kali/虚拟机kali以及windows或其他操作系统的本机 工具准备:Fscan nmap laravel-CVE-2021-3129-EXP-main 哥斯拉 Burpsuite msfconsole(主要)目录DHU网络靶场攻击记录如何挂代理入…