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

CF1004D Sonya and Matrix - crazy-

思维,构造

题解

已知一个无限大的矩阵,其中每个格子的值表示其距离矩阵中心的曼哈顿距离。

如图是矩阵的一部分:

img

现在另一个矩阵,已知矩阵中全部的 \(t\) 个数,试在无限大的矩阵中截取出 \(n\times m =t\) 大小的矩阵,使得其出现的数与给定的相同。

输出矩阵大小以及 \(0\) 出现的位置。

\(1\leq t\leq 10^6\), \(0\leq a_i< t\)

题解

规定矩阵大小为 \(n\times m\)\(0\) 的坐标为 \((x,y)\)

很明显可以枚举 \(t\) 的因数求出 \(n,m\)

考虑如何确定 \(x,y\)。显然,对于第一个没有出现 \(4x\) 次的 \(x\),一定是因为被框起来了,可以据此判断出 \(x\)。(为了方便,规定 \((x,y)\) 在矩阵的左上部分)

\(y\) 也很好求,矩阵右下角的数是固定的,即所有数字的最大值 \(mx\)。那么 \(y=n+m-mx-x\)

对于每一组 \(n,m,x,y\) 暴力检验即可。

代码

#include<bits/stdc++.h>
// #define int long long
using namespace std;
const int Maxn=1e6+10;
int f[Maxn],g[Maxn];
int n,m,x,y,mx;
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int T; cin>>T;for(int i=1;i<=T;i++) {int x; cin>>x; f[x]++; mx=max(mx,x);}if(T==1){if(f[0]==1) cout<<"1 1"<<endl<<"1 1"<<endl;else cout<<-1<<endl;return 0;}else if(f[0]>1) return (cout<<-1<<endl,0);for(int i=1;i<=mx;i++) if(f[i]<4*i) {x=i;break;}for(int k=1;k<=T;k++) if(T%k==0){n=k,m=T/k;y=n+m-mx-x;memset(g,0,sizeof(g));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)g[abs(x-i)+abs(y-j)]++;bool flag=1;for(int i=1;i<=mx && flag;i++) if(f[i]!=g[i]) flag=0;if(flag) return (cout<<n<<" "<<m<<endl<<x<<" "<<y<<endl,0);}cout<<-1<<endl;return 0;
}
http://www.jsqmd.com/news/88906/

相关文章:

  • Markdown编辑完全指南
  • DAY37 早停策略和模型权重的保存
  • 西门子1200 PLC自由口通讯CRC校验程序实战
  • 【求解释】智子递归架构:基于互补递归与河洛调控的智能系统框架
  • Node.js `import.meta` 深入全面讲解
  • 影刀RPA发货大杀器!亚马逊订单批量发货效率提升2000%,告别手动煎熬![特殊字符]
  • CF1009F Dominant Indices - crazy-
  • 教程8:结构体的添加和使用-–-behaviac
  • 蓄电池与超级电容器混合储能并网的Simulink仿真探索
  • macOS 的两款好用的免费截图软件: shottr 和 snipaste
  • 教程9:枚举的添加和使用-–-behaviac
  • QSharedMemory 变量在对象析构的时候要怎么处理
  • TikTok达人合作订单太繁琐?影刀RPA一键智能处理,效率飙升10倍![特殊字符]
  • 投机推理原理及设计
  • 前端保存用户登录信息 深入全面讲解
  • 影刀RPA颠覆传统!TikTok售后工单智能处理,效率提升500%[特殊字符]
  • 【开题答辩全过程】以 基于PHP的乐高学习网站管理系统的设计实现为例,包含答辩的问题和答案
  • 【Java毕设全套源码+文档】基于springboot的高校大学生心理咨询管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 异步SAR Simulink模型及其在MATLAB仿真中的应用
  • 【开题答辩全过程】以 基于Node.js的医院预约挂号系统为例,包含答辩的问题和答案
  • vue基于Spring Boot框架的在线电影票购买系统的设计与实现_8xxt52nn
  • 学完这个C++内存池案例,你对内存管理的理解将超越大部份人
  • Cplusplus生成代码大小的说明-–-behaviac
  • 手把手拆解三菱PLC印字机实战项目
  • 【免费领源码】Python/Mysql数据库+53824中国传统服装微信小程序的设计与实现+ 计算机毕业设计项目推荐上万套实战教程JAVA、PHP,node.js,C++、python、大屏数据可视化
  • 开发功能开关-–-behaviac
  • 三菱PLC组装机学习笔记
  • Go 语言结构体
  • 当卷积网络遇上双向记忆:玩转时间序列预测新姿势
  • 【开题答辩全过程】以 高校篮球社团管理系统 为例,包含答辩的问题和答案