第28次csp认证T3 JPEG 解码解析

article/2025/9/28 18:56:46

第28次csp认证T3 JPEG 解码解析

题目说明

问题比较长,就只放个链接吧:http://118.190.20.162/view.page?gpid=T158

经验分享

做这种大模拟的题目,对于经验不是很丰富的新手来说,更应该着眼于得分点,先做那些问题简单、数据规模小的子任务,不断调试,慢慢提高分数。考试基本是不限制提交次数的,如果一次性写完再调试,对于这种复杂的问题来说是一定会有很多出错误的,到时候语法、逻辑等等的失误都不容易被发现,所以最好是写一段小功能就测试一下,确保是正确的再向下进行,先拿到一部分分,不至于最后满盘皆输!针对这个题就需要一步一步对照题目给的数据的矩阵的变化是否正确,最终才更快调试准!

对于此类大模拟题目,问题背景基本可以不看,或者省略着看个大概。重点在于问题描述的输入输出,而且有一定概率完全按照问题描述的步骤去写代码即可得到正确答案,有时还需要选一个复杂度低一些的算法从70分优化到100等等。

题目详解

这个题在csp的第三题里面算是超级简单的一道题了,没有复杂的资源分配和时间逻辑,仅仅是一个jpeg的解码任务,任务明确且难度超级低,因为题目完全说明了步骤,只需要按步骤来做就可以。

真正的难点在于扫描数据的矩阵对应关系和对矩阵进行离散余弦变换。

对于前者,只需要确定好矩阵和输入的线性数据的映射关系即可,在这里我用了对角矩阵的映射关系,一种是从左下向右上,一种是从右上向左下。需要讨论i+j为奇数还是偶数的情况去对应上述两种情况,同时还需要注意斜对角超过了中间的斜线后每一条线穿过的小正方形会逐渐减少!也就是需要确定两个公式,下面的公式是通过等差数列求和推导出来的,要小心ij数组下标是从0开始的,以及某些数数中的+1-1问题,需要调试很多次!

  • 一、从左下到右上(i+j是偶数)

  1. i+j<=7的情况:map[i,j]=Line[(i+j)*(i+j+1)/2+j](就是计算ij这个位置前面的方块个数+j,因为此方向j是从0开始增加的)

  1. i+j>7的情况:map[i,j]=Line[36+(23-i-j)*(-8+i+j)/2+7-i](就是计算斜对角线前的36个方块+ij这个位置前面的斜对角线后面的方块个数+7-i,因为此方向7-i是从0开始增加的)

  • 二、从右上到左下的情况(i+j是奇数)

  1. i+j<=7的情况:map[i,j]= Line[(i+j)*(i+j+1)/2+i](思想同上)

  1. i+j>7的情况:map[i,j]=Line[36+ (23-i-j)*(-8+i+j)/2+7-j](思想同上)

分成上边两种情况再通过i+j是偶数还是奇数就可以用四种情况完成蛇形输入,不需要耗费其他大量代码模拟过程。

对于后者,只需要搞清楚是怎么计算的过程,保存好中间变量去计算就可以了,需要小心的地方也有,比如题目里的1/2,如果代码里也写成1/2,就会按照整数除法而算成0,需要写0.5才能当成double计算,还有开方,acos、cos等计算。

其余的点无非就是模拟,很简单,不再赘述。

满分代码

以下是我的调试过程:

#include<bits/stdc++.h>
using namespace std;int Q[8][8];
double M[8][8];
double MM[8][8];
int n;
int T;
int N[70];
int index;void t0(){for(int i=0;i<8;i++){for(int j=0;j<8;j++){if((i+j)%2==0){//偶数 if(i+j<=7){index = (i+j)*(i+j+1)/2+j;M[i][j] = N[index];}else{index = 36+(23-i-j)*(-8+i+j)/2+7-i;M[i][j] = N[index];}}else{//奇数 if(i+j<=7){index = (i+j)*(i+j+1)/2+i;M[i][j] = N[index];    }else{index =36+ (23-i-j)*(-8+i+j)/2+7-j;M[i][j] = N[index];}}}}
}void t1(){t0();for(int i=0;i<8;i++)for(int j=0;j<8;j++)M[i][j]*=Q[i][j];
}void t2(){t1();for(int i=0;i<8;i++){for(int j=0;j<8;j++){double tempres = 0;for(int u=0;u<8;u++){for(int v=0;v<8;v++){double temptempres = M[u][v];if(u==0) temptempres*=sqrt(0.5);if(v==0) temptempres*=sqrt(0.5);temptempres*=cos(acos(-1)/8*(i+0.5)*u)*cos(acos(-1)/8*(j+0.5)*v);tempres += temptempres;}}MM[i][j] = tempres/4+128;if(MM[i][j]>=255) MM[i][j] = 255;else if(MM[i][j]<=0) MM[i][j] = 0;else MM[i][j] =  round(MM[i][j]);}}for(int i=0;i<8;i++)for(int j=0;j<8;j++)M[i][j] = MM[i][j];
}int main(){for(int i=0;i<8;i++)for(int j=0;j<8;j++)cin>>Q[i][j];cin>>n>>T;for(int i=0;i<n;i++) cin>>N[i];if(T==0) t0();else if(T==1) t1();else if(T==2) t2();for(int i=0;i<8;i++){for(int j=0;j<8;j++){cout<<M[i][j]<<" ";}cout<<endl;}
}

http://chatgpt.dhexx.cn/article/6S7HZ8K2.shtml

相关文章

csp认证考试准备Day-3

昨天复习了一点点&#xff0c;今天浅浅做几个第一道的真题吧 &#xff08;1&#xff09;202212-1 #include<bits/stdc.h> using namespace std; int main() {double n,i,b;scanf("%lf", &n);scanf("%lf", &i);double a[60];for(int j0;j<…

csp认证考试准备Day-1

今天&#xff0c;开启了我的第一个专栏&#xff0c;用来记录我的2023年3月的csp认证考试。 语言&#xff1a;c 本人状况&#xff1a;半学期几乎没敲过代码&#xff0c;学过c和数据结构&#xff0c;csp第一题应该能做出来。 目标&#xff1a;保证在csp考试时做出一二题&#…

第23次CSP认证题解

这是我第一次参加CSP&#xff0c;一共得了260分&#xff0c;100,70,70,20,0。这两天试着写一下题解&#xff0c;大家哪里看不懂直接留言问我就好。 目录 第一题&#xff1a;数组推导&#xff08;100分&#xff09;第二题&#xff1a;非零段划分&#xff08;100分&#xff09;第…

csp认证真题

出行计划 要在t时刻进入场所&#xff0c;获得核酸检测结果的时间点&#xff08;tk应该在[t-c1,t]内&#xff08;上段文字中c值为24&#xff09;&#xff0c;核酸检测结果才能生效。由于获得核酸检测结果的时刻>1&#xff08;因为等待核酸检测结果的时间k>0&#xff0c;所…

【经验】CCF CSP认证问题

202109-4收集卡牌 状压dp&#xff0c;注意保留10位小数&#xff0c;是样例里给出的最长的&#xff0c;五位也不行&#xff0c;double保留到小数点后15位以后就不准了 202104-2 邻域均值 要利用前缀和&#xff0c;不然会超时 202012-2 期末预测之最佳阈值 也是要利用前缀和&…

有关CCF的CSP认证

有关CCF的CSP认证 一、CSP认证考点的知识要求 在数据结构中&#xff0c;线性表是基础&#xff0c;树是常考点&#xff0c;集合和映射要夕纪学。 背包问题&#xff08;动态规划&#xff09; 考试要求 二、考试题型 第一题&#xff1a;一般为水题&#xff0c;把C学扎实便可…

记 CSP 认证

欢迎访问我的CCF认证解题目录 现在越来越忙了&#xff0c;估计后面也不参加了&#xff0c;纯粹是记录贴。 先晒一下成绩吧&#xff0c;至于为什么参加这么多次&#xff0c;主要是学校可以报销&#xff0c;干就完了&#xff0c;哈哈。 分别是 17、18、20、21 第一次参加 c…

CSP认证

【CSP】试题编号 202212-2-训练计划 题目&#xff1a;训练计划计算最早/最晚开始时间最早开始时间发散最晚开始时间 代码与上机代码上机结果 题目&#xff1a;训练计划 此题目样例有坑&#xff1a;样例中没有正确输出过一个最晚开始时间 所以在最开始处理问题的时候&#xff0…

CCF CSP认证

文章目录 :heart:[CCF CSP认证 (cspro.org)](https://www.cspro.org/):heart:1.主办单位2.认证目的3.认证内容4.认证方式5.准备认证上机环境6. 选择考试语言7. 选择编译环境8. 选择IDE9.认证前模拟练习10.成绩效力&#xff1a; ❤️CCF CSP认证 (cspro.org)❤️ 1.主办单位 中…

四大含金量高的算法证书考试

证书考试推荐 一、PAT 计算机程序设计能力测试二、CCF CSP认证三、团体程序设计天梯赛四、蓝桥杯大赛 一、PAT 计算机程序设计能力测试 官网&#xff1a;PAT 计算机程序设计能力测试 PAT为浙江大学出的一款程序设计的测试网站&#xff0c;分为乙级、甲级、顶级三种&#xff0…

2阶实对称矩阵特征值和特征向量的简单求解方法

2阶实对称矩阵特性 定理&#xff1a;2阶实对称矩阵H的特征值是实数 H[a,b;b,c] a,b,c是实数&#xff0c;λ 是特征值 A[a-λ,b;b,c-λ] 特征值求解方法为&#xff1a;(a- λ )(c- λ) - b2 0 求解方程得到两个根为&#xff1a;λ&#xff08;ac&#xff09;&…

求解矩阵特征值的QR算法

1. 算法原理介绍&#xff1a; 1. Householder变换&#xff1a; 2. Givens变换&#xff1a; 3. 矩阵的QR分解 4. 计算特征值的QR方法 5. 上Hessenberg矩阵方法&#xff1a; 2. 实施过程&#xff1a; 1. 约化过程&#xff1a; 1. Householder变换&#xff1a; 2. Givens变换&a…

【OpenCV4】计算对称矩阵特征值和特征向量 cv::eigen() 用法详解和代码示例(c++)

函数原型&#xff1a; bool cv::eigen ( InputArray src,OutputArray eigenvalues,OutputArray eigenvectors noArray() ) 解析&#xff1a; src&#xff1a;输入矩阵&#xff0c;只能是 CV_32FC1 或 CV_64FC1 类型的方阵&#xff08;即矩阵转置后还是自己&#xff09;eig…

实对称矩阵的特征值求法_线性代数中的二次型,实际上是特征值的几何应用,概念需加强理解...

线性代数中的二次型,实际上是特征值的几何应用,概念仍需加强理解 二次型:实际上是特征值的几何应用 1、二次型化标准形:特征值、特征向量、相似对角化 2、二次型的正定性 3、合同:坐标变换 正交变换化二次型为标准形,标准为求二次型矩阵 A 的特征值,求坐标变换就是求 A 的特…

实对称矩阵的特征值求法_矩阵论系列——特征值篇

特征值篇1——特征值和特征向量 特征值篇1--特征值和特征向量_thompson的博客-CSDN博客​blog.csdn.net 特征值篇2——特征子空间 特征值篇2--特征子空间_thompson的博客-CSDN博客​blog.csdn.net 特征值篇3——矩阵可相似对角化的充要条件 特征值篇3--矩阵可相似对角化的充要条…

matlab矩阵特征值分解,矩阵特征值分解与奇异值分解含义解析及应用

原文在此,仅仅将原文的Matlab代码改为Python3版本。 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是“前一个矩阵的行乘以后一个矩阵的列”,还会一点的可能还会说“前一个矩阵的列数等于后一个矩阵的行数才能相乘”,然而,这里却会和你说——那都是表象。 矩…

c语言求矩阵特征值的程序,如何用C语言编写求对称矩阵的特征值和特征向量的程序编写对称矩阵的特征值和特征向量,其中矩阵用二维数组保存.特征向量要求有大到小放到数组里....

优质解答 //数值计算程序-特征值和特征向量 // //约化对称矩阵为三对角对称矩阵 //利用Householder变换将n阶实对称矩阵约化为对称三对角矩阵 //a-长度为n*n的数组,存放n阶实对称矩阵 //n-矩阵的阶数 //q-长度为n*n的数组,返回时存放Householder变换矩阵 //b-长度为n的数组,返回…

实对称矩阵的特征值求法_机器学习与线性代数 - 特殊矩阵

在线性代数中,有一些特殊的矩阵具有易于分析和操作的特性。它们的特征向量可能具有特定的特征值或特殊关系。还有一些方法可以将一个矩阵分解成这些“更简单”的矩阵。 操作复杂性的降低提高了可伸缩性。然而,即使这些矩阵都是特殊的,它们也不是罕见的。在机器学习和许多应用…

实对称矩阵特征值特征向量求解算法C语言实现

一 算法原理 雅可比方法用于求解实对称矩阵的特征值和特征向量,对于实对称矩阵 A A A,必有正交矩阵 U U U,使得 U T A U D U^{T}AUD UTAUD. D D D是一个对角阵,主对角线的元素是矩阵 A A A的特征值,正交矩阵 U U U的每一列对应于属于矩阵 D D D的主对角线对应元素的特征向量.…

【矩阵论】对称矩阵特征值的性质与直积

前言 在许多实际问题中&#xff0c;所产生的矩阵往往都是对称矩阵&#xff0c;比如我们耳熟能详的实对称矩阵也是重要的研究对象。以下就从实对称矩阵的角度出发&#xff0c;利用特征值的极小极大原理&#xff0c;从普通特征值问题 A x λ x Ax\lambda x Axλx衍生到广义特征…