[COCI2016-2017#2] Prosječni 解题记录

[COCI2016-2017#2] Prosječni 解题记录


题意简述

构造一个 n × n n \times n n×n 的矩阵,使得每一行/列的平均都在这一行/列当中,并且矩阵内各个数字不相同。


题目分析

观察样例就可以轻松发现:当 n n n 为奇数时,矩阵内的各个元素就是 1 ∼ n 1 \sim n 1n 的按顺序排列。
证明:

  • 对于每一行,公差为 1 1 1,设每一行第一个数为 x x x,第 k k k 项为 x + ( k − 1 ) x+(k-1) x+(k1) 其中 1 ≤ k ≤ n 1 \leq k \leq n 1kn,那么这一行的和就是 ( x + x + n − 1 ) × n 2 \frac{(x+x+n-1)\times n}{2} 2(x+x+n1)×n,平均数是 x + x + n − 1 2 = x + ( n − 1 ) 2 \frac{x+x+n-1}{2}=x+\frac{(n-1)}{2} 2x+x+n1=x+2(n1)
  • 因为 n n n 是奇数,所以 n − 1 2 \frac{n-1}{2} 2n1 是整数,且 1 ≤ n − 1 2 ≤ n 1 \leq \frac{n-1}{2} \leq n 12n1n
  • 每一列同理。
    证毕。
    如果 n n n 为偶数,我们以同样的方式构造,每一行的平均数同样为 x + ( n − 1 ) 2 \frac{x+(n-1)}{2} 2x+(n1),但是这个时候它是小数,我们只需要对这个矩阵的每一项都 × 2 \times 2 ×2,这样平均数就变成了 x + ( n − 1 ) x+(n-1) x+(n1) 这个整数。但是它也是一个奇数,怎么办呢?因为我们构造的矩阵公差相同,所以和平均数最相近的两个数肯定是中间的,为了使和不变,我们可以将每一行的第 n ÷ 2 n\div2 n÷2 + 1 +1 +1,同时将第 n ÷ 2 + 1 n \div 2+1 n÷2+1 − 1 -1 1,那么每一行就构造完成了(这里也说明了只有 n = 2 n=2 n=2 的时候才无解)。
    接下来考虑每一列,只需要将最后一行加上 n 2 n^2 n2 即可满足条件。
    证明:
  • 对于每一列,公差为 2 n 2n 2n,设每一列第一个数为 x x x,第 k k k 项就为 x + ( k − 1 ) × 2 n x+(k-1)\times 2n x+(k1)×2n 其中 1 ≤ k ≤ n 1 \leq k \leq n 1kn,那么这一列的和就是 [ x + x + ( n − 1 ) × 2 n ] × n 2 \frac{[x+x+(n-1) \times 2n]\times n}{2} 2[x+x+(n1)×2n]×n,平均数是 x + x + ( n − 1 ) × 2 n 2 = x + n ( n − 1 ) = x + n − 1 2 × 2 n \frac{x+x+(n-1) \times 2n}{2}=x+n(n-1)=x+\frac{n-1}{2} \times 2n 2x+x+(n1)×2n=x+n(n1)=x+2n1×2n
  • 因为 n n n 是偶数,所以 n − 1 2 \frac{n-1}{2} 2n1 不是整数,但是 n 2 \frac{n}{2} 2n 是,所以考虑将每列的最后一项加上 n 2 n^2 n2,等价于将每一项加上 n n n,平均数也加上 n n n,变为 x + n 2 × 2 n x+\frac{n}{2} \times 2n x+2n×2n,其中 1 ≤ n 2 ≤ n 1\leq \frac{n}{2} \leq n 12nn
    证毕。

AC Code
#include<bits/stdc++.h>
#define arrout(a,n) rep(i,1,n)std::cout<<a[i]<<" "
#define arrin(a,n) rep(i,1,n)std::cin>>a[i]
#define rep(i,x,n) for(int i=x;i<=n;i++)
#define dep(i,x,n) for(int i=x;i>=n;i--)
#define erg(i,x) for(int i=head[x];i;i=e[i].nex)
#define dbg(x) std::cout<<#x<<":"<<x<<" "
#define mem(a,x) memset(a,x,sizeof a)
#define all(x) x.begin(),x.end()
#define arrall(a,n) a+1,a+1+n
#define PII std::pair<int,int>
#define m_p std::make_pair
#define u_b upper_bound
#define l_b lower_bound
#define p_b push_back
#define CD const double
#define CI const int
#define int long long
#define il inline
#define ss second
#define ff first
#define itn int
CI N=105;
int n,a[N][N];
signed main() {std::cin>>n;if(n==2) {puts("-1");exit(0);}int k=0;rep(i,1,n) {rep(j,1,n) {a[i][j]=++k;}}if(n&1) {rep(i,1,n) {rep(j,1,n) {std::cout<<a[i][j]<<" ";}puts("");}} else {rep(i,1,n) {rep(j,1,n) {a[i][j]*=2;}}rep(i,1,n) {a[i][n/2]++;a[i][n/2-1]--;}rep(i,1,n) {a[n][i]+=n*n;}rep(i,1,n) {rep(j,1,n) {std::cout<<a[i][j]<<" ";}puts("");}}return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源漏扫工具:DependencyCheck

开源漏扫工具&#xff1a;DependencyCheck Dependency-Check 是 OWASP&#xff08;Open Web Application Security Project&#xff09;的一个实用开源程序&#xff0c;用于识别项目依赖项并检查是否存在任何已知的&#xff0c;公开披露的漏洞。 DependencyCheck是一个开源的…

【并查集】模版

【模板】并查集 - 洛谷 #include <bits/stdc.h> using namespace std; const int N2e59; int a[N]; int Find(int x) {if(xa[x]){return x;}else{a[x]Find(a[x]);return a[x];} } void push(int x,int y) {a[Find(x)]Find(y);return ; } int main() {int n,m; cin>>…

vsto 多插件通信

if (Target.Column 5){Thread.Sleep(5000);Target.Interior.ColorIndex 55;//触发另外一个插件Target.Application.Calculation XlCalculation.xlCalculationAutomatic;Thread.Sleep(5000);//这行执行完之后&#xff0c;才会触发另外一个Target.Interior.ColorIndex 54;} …

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed 输出异常&#xff1a; (-2147352567, Exception occurred., (0, uMicrosoft Word, uCommand failed, uwdmain11.chm, 36966, -2146824090), None)调试之后&#xff0c;主要是下面几个原因: 路径…

前端实例:页面布局1(后端数据实现)

效果图 注&#xff1a;这里用到后端语言php&#xff08;页面是.php文件&#xff09;,提取纯html也可以用 inemployee_index.php <?php include(includes/session.inc); $Title _(内部员工首页); $ViewTopic 内部员工首页; $BookMark 内部员工首页; include(includes/…

Vue学习日记 Day6 —— Vuex

一、vuex概述 1、目标&#xff1a;明确vuex是什么&#xff0c;应用场景&#xff0c;优势 2、是什么&#xff1a;vuex是一个vue的状态管理工具&#xff0c;状态就是数据 (简述&#xff1a;vuex是一个插件&#xff0c;可以帮我们管理vue通用的数据) 3、场景&#xff1a; (1)…

物理隔离条件下,如何安全高效地进行内外网文件导入导出?

内外网文件导入导出通常指的是在内部网络&#xff08;内网&#xff09;和外部网络&#xff08;外网&#xff09;之间传输文件的过程。这在企业环境中尤其常见&#xff0c;因为内部网络通常包含敏感数据&#xff0c;而外部网络&#xff08;如互联网&#xff09;则允许更广泛的访…

基于 Spark 的电商用户行为分析系统

摘 要 针对传统的大数据处理框架 Hadoop 在执行计算任务时抽象层次低、运行速度慢、无法实时计算等问题, 提出了一种基于内存的分布式框架 Spark 作为计算引擎的方法。结合 Hadoop 框架中的分布式文件存储 技术,设计了一个电商用户行为分析系统。首先根据数据特点建立用户画…

生成对抗网络(GANs):技术演化与广泛应用

目录 前言1 技术原理1.1 基本构成1.2 训练过程1.3 数学原理 2 应用领域2.1 图像合成2.2 数据增强2.3 风格迁移2.4 超分辨率 结论 前言 生成对抗网络&#xff08;GANs&#xff09;&#xff0c;自2014年由Ian Goodfellow及其同事首次提出以来&#xff0c;已经引起了广泛的关注和…

JavaScript进阶:js的一些学习笔记-4

文章目录 1. 拷贝1. 浅拷贝2. 深拷贝 2. 异常处理 1. 拷贝 这里指的拷贝是指拷贝引用类型的数据(对象) 1. 浅拷贝 拷贝对象&#xff1a;Object.assign() 或者 {…obj} 展开运算符 const obj {name:liuze,age:23 } const o {...obj}; o.age 22; console.log(o); console.…

Sparse Convolution 讲解

文章目录 1. 标准卷积与Sparse Conv对比(1)普通卷积(2) 稀疏卷积(3) 改进的稀疏卷积(subm)2 Sparse Conv 官方API3. Sparse Conv 计算3. 1 Sparse Conv 计算流程3. 2 案例3.2.1 普通稀疏卷积3.2.2 subm模式的稀疏卷积3D点云数据非常稀疏,尤其体素化处理后(比如200k的点放…

【spring】@PropertySource 注解学习

PropertySource介绍 PropertySource是Spring框架中的一个注解&#xff0c;主要用于Java配置类中&#xff0c;用于引入额外的属性文件&#xff0c;以便在Spring应用上下文中使用这些属性。 在Spring 3.1引入Java配置后&#xff0c;我们可以通过Configuration注解的类和Bean注解…

独孤思维:你这样做副业,招人烦

01 做副业的&#xff0c;大家都不傻。 不要加群就bao粉。 只会招人烦。 不能靠价值吸引来的粉丝&#xff0c;你想想他对你的忠诚度能有多少&#xff1f; 无非是快速灌流量&#xff0c;得到心理上的慰藉。 02 我的主业&#xff0c;是互联网医疗。 最近&#xff0c;上线了…

Windows11企业版安装WSL2和Ubuntu发布版(避坑)

背景 win10企业版升级win11企业版后&#xff0c;安装WSL2&#xff0c;最后安装WSL的Ubuntu发布版&#xff0c;尝试网上各种方法&#xff0c;还是出现文章第三节所写的问题&#xff0c;差点被这问题搞放弃了&#xff0c;全网少有针对这个问题的答案&#xff0c;有也不顶用&…

【python】自动化工具Selenium与playwright去除webdriver检测

对这个世界如果你有太多的抱怨 跌倒了就不敢继续往前走 为什么人要这么的脆弱 堕落 请你打开电视看看 多少人为生命在努力勇敢的走下去 我们是不是该知足 珍惜一切 就算没有拥有 &#x1f3b5; 周杰伦《稻香》 # -*- coding:utf-8 -*- import timefrom s…

k8s-高可用etcd集群 26

reset掉k8s2&#xff0c;k8s3&#xff0c;k8s4节点 清理完网络插件后重启 快速创建一个k8s集群 修改初始化文件 添加master节点 备份 查看etcd配置 启动docker 将etcd二进制命令从容器拷贝到本机 备份 查看快照状态 删除集群资源 恢复 停掉所有的核心组件 从快照恢复 重启所有…

知识蒸馏Matching logits与RocketQAv2

知识蒸馏Matching logits 公式推导 刚开始的怎么来&#xff0c;可以转看下面证明梯度等于输出值-标签y C是一个交叉熵&#xff0c;我们要求解的是这个交叉熵对的这个梯度。就是你可以理解成第个类别的得分。就是student model&#xff0c;被蒸馏的模型&#xff0c;它所输出的…

RTT——stm32f103的can总线通信

1.创建工程 2.配置时钟和引脚 引脚配置使能CAN 时钟配置&#xff0c;采用外部高速时钟 生成MDK工程后复制相关初始化函数到RTT-studio中 将void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)函数复制至broad.c文件中 将时钟配置函数复制到drv_clk.c中&#xff0c;只复制函数…

C语言—打印如图矩阵

输出矩阵 在一个二维数组中形成并输出如下矩阵: #include <stdio.h> main() { int i,j,a[5][5];for(i0;i<4;i)for(j0;j<4;j)if(i<j) a[i][j]1;else a[i][j]i-j1;for(i0;i<4;i){ for(j0;j<4;j)printf("%d ",a[i][j]);printf("…

Xilinx FPGA模式配置

Xilinx FPGA模式配置 Xilinx UltraScale FPGA有7种配置模式&#xff0c;由模式输入引脚M[2:0]决定。七种模式如图1所示。 图1 7种配置模式 7种模式可分为3大类&#xff0c; 1、JTAG模式&#xff08;可归为从模式&#xff09;&#xff1b; 2、主模式&#xff1b; 3、从模式…