XTU-OJ 1412-Rotate Again

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

大家可能也发现我是实时更新的,所以大家可以点赞、评论,如果讲解的不够详细或者看不懂的都可以留言。多给我些反馈,可以让我更好的编写博客内容。(但是别催更啊~~)

题目描述

一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动一个格子。 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大。请问最大子矩阵的元素累加和是多少?

输入

第一行是一个整数T(1≤T≤1000),表示样例的个数。 每个样例占4行,每行4个整数,所有元素在[1,1000]范围内。

输出

每行输出一个样例的结果。

样例输入

2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1 1 2 2
3 3 4 4
2 2 1 1
4 4 3 3

样例输出

56
15

提示

第一个样例,逆时钟旋转1格,得到最大子矩阵为

11 16
14 15


第二个样例,逆时钟旋转5格,得到最大子矩阵为

3 4
4 4

解题思路:本题最大的 2 * 2矩阵 就三种情况。 1: 内圈四元素、2: 内圈1元素+外圈3元素、 3: 内圈2元素+外圈2元素。  这题的两种方法,一种就是纯粹的用二维数组,然后一次一次的转动外圈,暴力求解 ,另一种就是把二维数组数据转化为一维数组,把外圈和内圈的数分别存在一个一维数组中,过程可能有些绕,但是解题思路还是很明确的。       

这里我用的是第二种方法:代码写的有些绕,就不写详细的题解了,直接对着代码讲解。

maxiner  == 内圈四个元素之和,in1 == 内圈四个元素中最大值,in2 == 内圈四个元素中两最大相邻数之和,out2 == 外圈十二个元素中两最大相邻数之和, out3 == 外圈十二个元素中三最大相邻数之和。

scanF() 输入函数之后,就把 外圈内圈元素都存在了一维数组中, 在comput()中 有个 取模的运算,这使一维数组转化成一个圈,实现了轮转的功能(到数组末尾后又跳转到数组开头)。

43行交换函数,把inter[2] 和 inter[3] 交换位置,是因为我用for循环直接输入,存入内圈数组的 第二个数就和第三个数相邻了。但实际上不是,第二是和第四相邻,第一和第三相邻的。(能否理解)

其他的应该看代码上的注释可以看懂,如有疑惑的请留言。

AC代码:

#include <stdio.h>

int outer[15],inter[5];
int left,right,ins,ans;
int T,maxiner,in1,in2,out2,out3;

void Swap(int &x,int &y){           // 交换函数,就为了换一次,小题大做了,但还是手痒
    int t;
    t = x, x = y, y = t;
}

int Max(int x,int y,int z)          // 比较函数,返回(x,y,z)中的最大值
{
    if (x >= y && x >= z)  return x;
    if (y >= x && y >= z)  return y;
    if (z >= x && z >= y)  return z;
    return 0;
}

void scanF()
{
    left = 6,right = 5,ins = -1;
    maxiner = in1 = in2 = out2 = out3 = 0;
    for (int i = 1; i <= 4; i ++)               // 输入第一行
        scanf("%d",&outer[++right]);
    for (int i = 1; i <= 2; i ++)               // 输入第二三行
    {
        scanf("%d",&outer[--left]);
        for (int j = 1; j <= 2; j ++)           // 注意这里直接输入有误,还需处理(43行)
        {
            scanf("%d",&inter[++ins]);
            maxiner += inter[ins];              //  内圈 2*2 元素和
            if (inter[ins] > in1)   in1 = inter[ins];   // 内圈最大值
        }
        scanf("%d",&outer[++right]);   
    }
    for (int i = 1; i <= 4; i ++)               // 输入第四行
        scanf("%d",&outer[--left]);
}

void comput()
{
    Swap(inter[2],inter[3]);
    for (int i = 0; i < 4; i ++)
    {
        int t1 = inter[i]+inter[(i+1)%4];
        if (t1 > in2)    in2 = t1;               // 内圈最大的两个相邻元素和
    }
    for (int i = 0; i < 12; i ++)
    {
        int t2 = outer[i] + outer[(i+1)%12];
        int t3 = t2 + outer[(i+2)%12];
        if (t2 > out2)      out2 = t2;          // 外圈最大的两个相邻元素和
        if (t3 > out3)      out3 = t3;          // 外圈最大的三个相邻元素和
    }
}

int main()
{
    scanf("%d",&T);
    while ( T --)
    {
        scanF();
        comput();
        ans = Max(maxiner,in1+out3,in2+out2);
        printf("%d\n",ans);
    }
    return 0;
}

Vector CANape的使用记录 开门见山,今天想和大家分享下CANape使用记录,分享原因是近日在分析一个客户现场软件问题时,需要用到CANape来实时的监测ECU中的变量,因为之前对CANape的认知比较浅薄,觉得标定工程师使用他就足够了,但是这次的经历让我觉得需要写点东西来记录自己学习并使用他的过程。 相信大家能够在网上找到很多关于如何使用CANape的文章,从新建Project到后面的数据的观测、保存以及回放等等。我个人也是这么学过来的,所以我不打算从那些方面着手去描述如何使用她,而是根据我的真实使用过程以及问题的抛出到如何解决来 阅读详情

相关推荐

Revit实战:从零到一,手把手教你用族(Family)搭建一个完整的水闸BIM模型

本文详细介绍了如何使用Revit的族(Family)功能从零开始构建一个完整的水闸BIM模型。通过参数化族设计,实现闸门开度调整自动关联流量计算等智能化功能,提升水利工程BIM模型的工程价值和应用效率。文章涵盖族库规划、核心构件创建、高级技巧及BIM数据深度应用,为水利工程数字化提供实用指南。

weixin_28738165的博客 262

C语言名题精选百则——排列,组合与集合

C语言名题精选百则——排列,组合与集合   尊重他人的劳动,支持原创 本篇博文,D.S.Qiu将对《C语言名题精选百则——排列,组合和集合》进行整理推出,不光只是书上的名题,还会依据互联网的资源进行不断补充,加强。等全书各个章节都整理完,会做一个总汇。如果你有建议、批评或补充,请你不吝提出(email:gd.s.qiu@gmail.com,或者直接在本文末评论)。你的支持和鼓励(一个人整理...

qiudesuo的专栏 423

告别手动点鼠标:用Python脚本批量跑ADS版图仿真,效率提升10倍(附完整代码)

本文详细介绍了如何利用Python脚本自动化ADS版图仿真流程,显著提升射频工程师的工作效率。通过调用ADS底层接口,实现参数化修改、批量任务调度和结果自动收集,解决了手动操作中的常见问题,如仿真不更新等。附完整代码,帮助开发者快速实现10倍效率提升。

weixin_42523543的博客 331

xtu oj Rotate Again

的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动一个格子。我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大。请问最大子矩阵的元素累加和是多少?(1≤T≤1000),表示样例的个数。每个样例占4行,每行4个整数,所有元素在[1,1000]范围内。4*4矩阵有9个2*2的子矩阵,不要以为只有四个。wa一定是自己代码有问题,有地方没考虑到,多想想。第一个样例,逆时钟旋转1格,得到最大子矩阵为。第二个样例,逆时钟旋转5格,得到最大子矩阵为。每行输出一个样例的结果。

m0_75005390的博客 614

Polyworks脚本开发学习笔记(一)-脚本开发环境

详细的总结和记录了利用Polyworks进行脚本开发的一些方法和心得

qq_43662503的博客 6800

QT实现ftp服务器(附完整源码)

QT实现ftp服务器(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1783

XTU OJ 1412 rotate again

第一行是一个整数T(1≤T≤1000),表示样例的个数。每个样例占4行,每行4个整数,所有元素在[1,1000]范围内。我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大。一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,思路很简单,暴力就行了,转12圈,每次获得一个最大的子矩阵和。获得最大子矩阵和的思路:实现看代码吧,很简单的。第一个样例,逆时钟旋转1格,得到最大子矩阵为。第二个样例,逆时钟旋转5格,得到最大子矩阵为。每行输出一个样例的结果。

2301_76960767的博客 590

safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案

本文主要介绍了safetensors_rust.SafetensorError: Error while deserializing header: MetadataIncompleteBuffer解决方案,希望能对使用Python的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 Windows 2.2 Linux

weixin_43178406的博客 15万+

XTU oj 1412 Rotate again

第一行是一个整数T(1≤T≤1000),表示样例的个数。每个样例占4行,每行4个整数,所有元素在[1,1000]范围内。我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大。请问最大子矩阵的元素累加和是多少?一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,第一个样例,逆时钟旋转1格,得到最大子矩阵为。第二个样例,逆时钟旋转5格,得到最大子矩阵为。每行输出一个样例的结果。

2301_76691871的博客 973

python实现带符号的二进制数转换十进制数 (附完整源码)

python实现带符号的二进制数转换十进制数 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 554

Vue2 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码)

vue2,nuxt2,海康威视,海康监控,摄像头监控,vue对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue,海康,vue海康视频监控,海康开放平台,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue2对接海康监控设备,无法连

🏆 前端领域优质创作者 8245

XTU Oj 128

xtu oj记录

m0_56881159的博客 709

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

XTU oj 1412 Rotate Again

XTU OJ 1412 Rotate Again

2301_79612876的博客 1022

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

XTU-OJ 1412 Rotate Again

一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,。我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大。请问最大子矩阵的元素累加和是多少?

m0_65185750的博客 705

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

XTUOJ-1365 Rotate

XTUoj-1365Rotate题目描述输入输出样例输入样例输出 Rotate 题目描述 一个4×4的矩阵,我们可以把矩阵看成内外两圈,我们可以把外圈按顺时钟或者逆时钟转动,每次转动90度。 我们想得到一个2×2的子矩阵,使得这个子矩阵4个元素的累加和最大。请问最大子矩阵的元素累加和是多少? 输入 第一行是一个整数T(1≤T≤1000),表示样例的个数。 每个样例占4行,每行4个整数,所有元素在[1,1000]范围内。 输出 每行输出一个样例的结果。 样例输入 2 1 2 3 4 5 6 7 8 9 10

CrappyC的博客 1390

C创建一个4x4的矩阵,显示该矩阵。求该矩阵的外围元素之和、主对角线元素之和以及副对角线元素之和。

设行下标为i,列下标为j,考察三类元素的下标特征,外围元素要行下标i==0或者i==n-1(这里n为4)要么列下标j==0或者j==n-1;副对角线上的元素行下标和列下标之和等于 n-1(i+j== n -l)。编写程序,创建一个4x4的矩阵,矩阵的值为{{1,2,4,5},{6,7,8,9},{10,11,12,13},{14,15,16,17}},显示该矩阵。求三类元素的和,可以定义3 个不同的和变量,在遍历数组元素的循环中通过三次条件判分别进行三类元素的求和。

Leivzy的博客 4633

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 194

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 299

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 561

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 747

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 82

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 207
上一篇: XTU-OJ 1146-矩阵乘法
下一篇: XTU-OJ 1194-Recipient
Jay_is_Chou
博客等级 码龄5年 517粉丝 134原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值