CCF CSP认证2022年12月题解 现值计算、训练计划、JPEG 解码
迪丽瓦拉
2025-05-29 05:42:16
0

题目

http://118.190.20.162/home.page
在这里插入图片描述

T1 现值计算

思路

根据题意第kkk年的xxx元的当前价值为x×(1+i)−kx\times (1+i)^{-k}x×(1+i)−k计算各个价值,最后求和。

代码

int main() {int n; double i;scanf("%d %lf", &n, &i);i += 1;double x = 0, y, z;for (int k = 0; k <= n; k++) {scanf("%lf", &y);z = 1;for (int j = 0; j < k; j++) {z *= i;}x += (1.0 / z) * y;}printf("%f", x);return 0;
}

T2 训练计划

思路

dp,设项目耗时为c(i)c(i)c(i),
科目iii的最早开始时间为:
a(i)=a(pi)+c(pi)a(i)=a(p_i)+c(p_i)a(i)=a(pi​)+c(pi​)
其中a(i)a(i)a(i)初始化为1,最早可以从第1天开始训练。
科目iii的最晚开始时间为
b(i)=minpu=i(b(u)−c(u))b(i)=min_{p_{u}=i}(b(u)-c(u))b(i)=minpu​=i​(b(u)−c(u))
其中b(i)b(i)b(i)初始化为n+1−c(i)n+1-c(i)n+1−c(i),这样保证最后一天完成所有训练。
若存在b(i)<1b(i)<1b(i)<1,则顿顿无法nnn天内完成所有训练。
题目约束科目最多只有一个依赖,这样的图是森林,实际上,可以推广到DAG图上。

代码

vector q[105];
int a[105], b[105], c[105], g[105];
// 最早开始时间:所有先行项目完成的时间+1
// 最晚开始时间:所有后续项目所需的时间-1void solve() {int n, m, x;cin >> n >> m;for (int i = 1; i <= m; i++) {cin >> x;if (x) {g[i] = x, q[x].push_back(i);}   // 有x后续项目i(一个或多个)a[i] = 1;   // 所有项目最早可以在第1天开始}for (int i = 1; i <= m; i++) {cin >> c[i];b[i] = n - c[i] + 1;}for (int i = 1; i <= m; i++) {if (!q[i].empty()) {for (int k = 0; k < q[i].size(); k++) {a[q[i][k]] = a[i] + c[i];}}}bool ok = 1;for (int i = m; i >= 0; i--) {if (g[i]) {b[g[i]] = min(b[g[i]], b[i] - c[g[i]]);if (b[g[i]] < 1) { ok = 0; break; }}}for (int i = 1; i <= m; i++) cout << a[i] << " ";if (ok) {cout << '\n';for (int i = 1; i <= m; i++) cout << b[i] << " ";}
}

T3 JPEG 解码

思路

根据问题描述模拟:

  1. Z字形扫描,只有8×88\times88×8的大小,很多方法都可以,观察到在没有矩阵的内部(而不是在边缘),扫描遵循(x,y)(x,y)(x,y)均+1,−1+1,-1+1,−1的规律,维护一个方向变量dir,每次移动x,yx,yx,y同时加dir。在矩形的边缘,我是假想它根据方向变量进行扫描,发现出界了,再修正,同时将dir取反。

在这里插入图片描述

  1. 离散余弦变换,根据公式计算,4层的嵌套循环实现。

其他步骤略。

代码

const double pi = acos(-1);int a[10][10], b[10][10];
double c[10][10];void out() {for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {cout << b[i][j] << ' ';}   cout << '\n';}
}void solve() {for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {cin >> a[i][j];}}int n, t;cin >> n >> t;int x, y, k; x = y = k = 0;int dir = 1;for (int i = 0; i < n; i++) {cin >> b[x][y];x -= dir; y += dir;if (x < 0 || x > 7 || y < 0 || y > 7) {if (x + y > 7 || (x == 8 && y == -1)) {if (dir > 0) { x += 2, y--; }else x--, y += 2;dir = -dir;}   // (7,0)之后一步进入到另外一半else {// 出界,修正位置,更换方向if (dir > 0) x += dir;else y -= dir;dir = -dir;}}// printf("%d, %d\n", x, y);}if (!t) { out(); return; }for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {b[i][j] *= a[i][j];}}if (t == 1) { out(); return; }// 离散余弦逆变换for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {for (int u = 0; u < 8; u++) {for (int v = 0; v < 8; v++) {double au, av;auto get = [&](int k) -> double {if (!k) return sqrt(0.5);else return 1;};au = get(u), av = get(v);c[i][j] += au * av * b[u][v] * cos(pi / 8 * (0.5 + i) * u) * cos(pi / 8 * (0.5 + j) * v);}}c[i][j] *= 0.25;}}// 四舍五入for (int i = 0; i < 8; i++) {for (int j = 0; j < 8; j++) {b[i][j] = (int)(c[i][j] + 128.5);b[i][j] = max(0, b[i][j]);b[i][j] = min(255, b[i][j]);// cout << c[i][j] << ' ';}   // cout << '\n';}out();
}

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...