当前位置: 首页 > 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.gsyq.cn/news/99246.html

相关文章:

  • Ascend C 与 CUDA 的对比分析-为异构计算开发者提供迁移指南
  • 教程8:结构体的添加和使用-–-behaviac
  • macOS 的两款好用的免费截图软件: shottr 和 snipaste
  • TikTok达人合作订单太繁琐?影刀RPA一键智能处理,效率飙升10倍![特殊字符]
  • 前端保存用户登录信息 深入全面讲解
  • 投机推理原理及设计
  • 【Java毕设全套源码+文档】基于springboot的高校大学生心理咨询管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 【开题答辩全过程】以 高校篮球社团管理系统 为例,包含答辩的问题和答案
  • JavaScript闭包终极指南:从原理到实战(2025版)
  • 有关C语言中自加和自减与计算机底层硬件的关糸
  • 告别机房管理噩梦,首码磁控U位系统来“救场”
  • 课程设计(自主选题)
  • 基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出回归预测python代码
  • 25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货
  • 解码 Qt 核心技术 —— 组件、数据操作与多界面开发
  • what?动态规划?
  • 基于深度学习的脑肿瘤检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • 实习面试题-聚合搜索项目面试题
  • 探索 BMS 仿真:搭建电池管理系统的 Matlab 模型
  • Java后端第一次学习计划
  • 【大前端】【Android】把 Activity 重构成 MVVM 的对比示例
  • 【大前端】【Android】一文详解为什么ViewModel的observe能监听到数据的变化
  • 实习面试题-Shell 面试题
  • 5MW 风电机组 LQR 功率调节:带状态观测器的探索之旅
  • 基于Simulink的双向DCDC变换器系统仿真
  • 11、UNIX安装基础全解析
  • 2025年数字化转型:AI技能+CAIE认证夯实进阶根基
  • 大数据领域体系认知
  • 1、深入了解 UNIX 操作系统:特性、历史与哲学
  • React 新手村通关指南:状态、组件与魔法 UI