第22次 CCF CSP认证一二题题解及感悟

article/2025/9/28 18:54:35

第22次 CCF CSP认证一二题题解及感悟

    • 第一题灰度直方图
      • 题目重述
      • 题目分析
      • 代码及注释(C++)
    • 第二题邻域均值
      • 题目重述
      • 题目分析
      • 代码及注释(C++)
      • 感悟

第一题灰度直方图

题目重述

一幅长宽分别为 n 个像素和 m 个像素的灰度图像可以表示为一个 n×m 大小的矩阵 A。

其中每个元素 Aij(0≤i<n、0≤j<m)是一个 [0,L) 范围内的整数,表示对应位置像素的灰度值。

具体来说,一个 8 比特的灰度图像中每个像素的灰度范围是 [0,256)。

一副灰度图像的灰度统计直方图(以下简称“直方图”)可以表示为一个长度为 L 的数组 h,其中 h[x](0≤x<L)表示该图像中灰度值为 x 的像素个数。

显然,h[0] 到 h[L−1] 的总和应等于图像中的像素总数 n⋅m。

已知一副图像的灰度矩阵 A,试计算其灰度直方图 h[0],h[1],⋯,h[L−1]。

输入格式
输入共 n+1 行。

输入的第一行包含三个用空格分隔的正整数 n、m 和 L,含义如前文所述。

第二到第 n+1 行输入矩阵 A。第 i+2(0≤i<n)行包含用空格分隔的 m 个整数,依次为 Ai0,Ai1,⋯,Ai(m−1)。

输出格式
输出仅一行,包含用空格分隔的 L 个整数 h[0],h[1],⋯,h[L−1],表示输入图像的灰度直方图。

数据范围
0<n,m≤500,
4≤L≤256
输入样例1:
4 4 16
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
输出样例1:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

题目分析

简单来说,第一题是用来统计一个矩阵中数值相等的点的个数,不同数值的点构成一个数组,数组中存储各个数值的点的个数,最终输出该数组即可

代码及注释(C++)

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N = 510, M=510, L=266;int n,m,l;
int h[L];//灰度值个数数组 
int s[N][N];//矩阵数组int main()
{cin>>n>>m>>l;for(int i=0;i<n;i++)//三重循环,输入矩阵后进行统计{for(int j=0;j<m;j++){cin>>s[i][j];for(int k=0;k<l;k++)		{if(s[i][j]==k)h[k]++;}}	  }for(int i=0;i<l;i++) printf("%d ",h[i]);return 0;
}

第二题邻域均值

题目重述

顿顿在学习了数字图像处理后,想要对手上的一副灰度图像进行降噪处理。

不过该图像仅在较暗区域有很多噪点,如果贸然对全图进行降噪,会在抹去噪点的同时也模糊了原有图像。

因此顿顿打算先使用邻域均值来判断一个像素是否处于较暗区域,然后仅对处于较暗区域的像素进行降噪处理。

待处理的灰度图像长宽皆为 n 个像素,可以表示为一个 n×n 大小的矩阵 A,其中每个元素是一个 [0,L) 范围内的整数,表示对应位置像素的灰度值。

对于矩阵中任意一个元素 Aij(0≤i,j<n),其邻域定义为附近若干元素的集和:

Neighbor(i,j,r)={Axy|0≤x,y<n and |x−i|≤r and |y−j|≤r}
这里使用了一个额外的参数 r 来指明 Aij 附近元素的具体范围。

根据定义,易知 Neighbor(i,j,r) 最多有 (2r+1)2 个元素。

如果元素 Aij 邻域中所有元素的平均值小于或等于一个给定的阈值 t,我们就认为该元素对应位置的像素处于较暗区域。

现给定邻域参数 r 和阈值 t,试统计输入灰度图像中有多少像素处于较暗区域。

输入格式
输入共 n+1 行。

输入的第一行包含四个用空格分隔的正整数 n、L、r 和 t,含义如前文所述。

第二到第 n+1 行输入矩阵 A。第 i+2(0≤i<n)行包含用空格分隔的 n 个整数,依次为 Ai0,Ai1,⋯,Ai(n−1)。

输出格式
输出一个整数,表示输入灰度图像中处于较暗区域的像素总数。

数据范围
70% 的测试数据满足 n≤100、r≤10。
全部的测试数据满足 0<n≤600、0<r≤100 且 2≤t<L≤256。

输入样例1:
4 16 1 6
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
输出样例1:
7

题目分析

题目定义了一个邻域,统计元素aij周围一个区域内的元素总和,再除以元素个数与阈值t比较,若小于等于t,则证明元素aij处于较暗区域,最终计算出较暗区域点的个数。

领域中元素个数最多为(2r+1)2,当领域左上角(x1,y1)或邻域右下角(x2,y2)超出边界时元素个数小于(2r+1)2,需要用(x2-x1+1)*(y2-y1+1)计算元素个数。

计算一个矩阵中子矩阵的部分可以使用前缀和,或者叫部分和。一维前缀和容易理解,如已知数组a[N],数组和s[N],求a3,a4,…,a10的和,利用前缀和计算:s[10]-s[2]。

本题使用二维前缀和,计算如图所示矩形面积,左上角坐标为(x1,y1),右下角坐标为(x2,y2),s[i][j]表示第i行j列格子左上部分所有元素的和,故所求面积为
s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]

二维前缀和

代码及注释(C++)

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N = 610;int n,l,r,t;
int a[N][N];//矩阵数组
int s[N][N];//二维前缀和数组int main()
{cin>>n>>l>>r>>t;for(int i=0;i<n;i++)for(int j=0;j<n;j++){cin>>a[i][j];s[i][j]=a[i][j]+s[i-1][j]+s[i][j-1]-s[i-1][j-1];//计算前缀和}	int res=0; for(int i=0;i<n;i++)for(int j=0;j<n;j++){int x1=max(0,i-r), y1=max(0,j-r);int x2=min(n-1,i+r), y2=min(n-1,j+r);int sum=s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];int cnt=(x2-x1+1)*(y2-y1+1);if(sum<=t*cnt)//sum/cnt可能产生小数,故将cnt与t相乘res++;}cout<<res;return 0;
} 

感悟

去年12月份我第一次考csp,只做出了第一题,说实话并不意外甚至是超常发挥,因为准备时间很短,连大一C语言的基础知识都忘记了;第二次是今年4月份,买了acwing的csp辅导课,看y总的直播课,感觉提高还是很多的,但是正式考试的时候老毛病又犯了,紧张到大脑停止思考,我觉得可能第一题都做不出来了,挣扎了快一个小时,终于做出来了,第二题有几个样例都通过了,但是没得分,这次的判分很严格,最终结果是和第一次一样的成绩,排名甚至到80%了。等到考试结束,听y总讲完,其实也没这么难。

说实话,csp前两题不难,多刷题就ok,第三题大模拟难度不大,但是很庞杂,细节很多,这次的dhcp服务器跟着y总的视频敲了一遍,之后自己看着题目又复盘了一次,考试估计很难做出来。

考csp的初衷是想免考研机试,顺便加点综测,开始刷题的时候觉得很难,难以下手,知识点很多,不知道怎么准备,也很迷茫,想过放弃。

考过两次之后,心态有变化了,就算最后考不到300分以上,也不会有遗憾了,毕竟在这个过程中,自己有了很多提高。希望下次更好,考个好分数 ,加油!


http://chatgpt.dhexx.cn/article/FqqYef1E.shtml

相关文章

CCF CSP认证2022年12月题解 现值计算、训练计划、JPEG 解码

题目 http://118.190.20.162/home.page T1 现值计算 思路 根据题意第 k k k年的 x x x元的当前价值为 x ( 1 i ) − k x\times (1i)^{-k} x(1i)−k计算各个价值&#xff0c;最后求和。 代码 int main() {int n; double i;scanf("%d %lf", &n, &i);i…

第29次CCFCSP认证经验总结

鄙人有幸参加了由中国计算机学会举办的第29次计算机软件能力认证考试&#xff0c;在此进行一些考试细节和经验的总结。 如果没有仔细了解过的小白去网上搜索CCFCSP&#xff0c;可能出现的是CSP-J/S&#xff0c;但是详细了解会发现&#xff0c;首先CSP-J/S分初试和复试&#xff…

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

第28次csp认证T3 JPEG 解码解析 题目说明 问题比较长&#xff0c;就只放个链接吧&#xff1a;http://118.190.20.162/view.page?gpidT158 经验分享 做这种大模拟的题目&#xff0c;对于经验不是很丰富的新手来说&#xff0c;更应该着眼于得分点&#xff0c;先做那些问题简单、…

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的数组,返回…