第十三次CCF-CSP认证(含C++源码)

第十三次CCF-CSP认证

  • 跳一跳
    • 满分题解
  • 碰撞的小球
    • 满分题解
      • 遇到的问题
  • 棋局评估
    • 满分题解

跳一跳

在这里插入图片描述
题目链接

满分题解

没什么好说的 基本思路就是如何用代码翻译题目所给的一些限制,以及变量应该如何更新,没像往常一样给一个n,怎么读入数据,但是总之
这题对于我就俩字 :《凌 驾》

#include <bits/stdc++.h>
using namespace std;
const int N =40;
int s[N];
int main()
{int i=0;s[0]=-1;//我的小细节while(s[i]!=0){cin>>s[i+1];i++;}//读入跳跃数组//如果是第一次跳跃或者上一次跳跃不是中心计2分int grade=0;int sum=2;for(int j=1;j<i+1;j++){while(s[j]==2){if(j==1 || s[j-1]==1 && j>1){grade+=2;sum=2;j++;}else if(s[j-1]==2 && j>1){sum+=2;grade+=sum;j++;}}if(s[j]!=0)grade++;}cout<<grade;
}

碰撞的小球

在这里插入图片描述

样例:

在这里插入图片描述

满分题解

遇到的问题

一开始感觉自己无敌了呀 一看这题目这么长 感觉这题 换做一个星期之前直接copy评论区了,后来通过慢慢分析基本上思路就清晰了,写完感觉这代码非常完美啊,还宏定义了一把,可读性很高啊,调试的时候样例也过了,一交发现就过了两个样例 我cnm,服了
在这里插入图片描述

后来发现:
是我的碰撞判断不完整:当前代码只检查了相邻小球的碰撞情况,实际上任意两个小球都可能发生碰撞,如果只检查初始相邻的两个小球是否碰撞,就会遗漏很多可能的碰撞情况。因此,需要使用两层循环遍历所有的小球对,以确保检查到任意两个小球之间是否发生了碰撞。

#include <iostream>
#include <vector>
using namespace std;#define RIGHT 1
#define LEFT -1struct ball {int div;int pos;
};int main() {int n, L, t;cin >> n >> L >> t;  // 读入 n 个小球,距离长度和时刻vector<ball> balls(n);  // 存储每一个小球的信息for (int i = 0; i < n; i++) {int index;cin >> index;balls[i].pos = index;balls[i].div = RIGHT;  // 一开始统一向右边走}  // 初始化完成while (t--) {// 小球移动for (int i = 0; i < n; i++) {if (balls[i].div == RIGHT) {balls[i].pos++;} else {balls[i].pos--;}}// 检查边界情况for (int j = 0; j < n; j++) {if (balls[j].pos == L) {  // 右端点的情况balls[j].div = LEFT;} else if (balls[j].pos == 0) {  // 左端点的情况balls[j].div = RIGHT;}}// 检查小球之间的碰撞情况for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {if (balls[i].pos == balls[j].pos) {balls[i].div = -balls[i].div;balls[j].div = -balls[j].div;}}}}for (int i = 0; i < n; i++) {cout << balls[i].pos << " ";}cout << endl;return 0;
}    

棋局评估

在这里插入图片描述
样例:
在这里插入图片描述

满分题解

题目非常好理解就是大家都玩过的井字棋,这题感觉更重思维,dfs很少,以我现在的水平是可以独立写一下的,明天再学一学
作者:cyzh
代码链接

#include<bits/stdc++.h>
using namespace std;int g[4][4];
int tt, oo;//数据组数,空格个数//判断是否有人获胜,如果Alice获胜返回1,如果Bob获胜返回2,否则返回0
int check(){for(int i = 0; i < 3; i++){if(g[i][0] == g[i][1] && g[i][1] == g[i][2] && g[i][2]) return g[i][2];if(g[0][i] == g[1][i] && g[1][i] == g[2][i] && g[2][i]) return g[2][i];}if(g[0][0] == g[1][1] && g[1][1] == g[2][2] && g[2][2]) return g[2][2];if(g[0][2] == g[1][1] && g[1][1] == g[2][0] && g[1][1]) return g[1][1];return 0;
}//返回值为题目要求的答案,u 表示剩下0的个数
int dfs(int u){if(check()){if(check() == 1) return u + 1;//Alice已经赢了else return - u - 1;//Bob已经赢了}if(u == 0) return 0;//没有格子可以下了//f11表示Alice赢的最优决策,f22表示Bob赢的最优决策//f12表示Alice赢的次优决策,f21表示Bob赢的次优决策/*为什么要分4个呢,因为如果这一步是Bob下的话如果他能赢 返回f22Bob如果自己赢不了 他会先想到是否能平局 返回0Bob如果不能平局 他会想到怎么多拖一点时间, 返回 f12同理如果这一步是Alice下的话    如果他能赢 返回f11Alice如果自己赢不了 他会先想到是否能平局 返回0Alice如果不能平局 他会想到怎么多拖一点时间, 返回 f21*/int f12 = 20, f21 = -20, f0 = 0, f11 = 0, f22 = 0, tmp;for(int i = 0; i < 3; i++)for(int j = 0; j < 3; j++){if(!g[i][j]){g[i][j] = !(u%2) + 1, tmp = dfs(u - 1), g[i][j] = 0;//dfsif(tmp == 0) f0 = 1;//如果可以平局, f0 = tureelse if(tmp < 0) f22 = min(f22, tmp), f21 = max(f21, tmp);//维护f22, f21else if(tmp > 0) f11 = max(f11, tmp), f12 = min(f12, tmp);//同理}}if(u % 2 && f11) return f11;//这一步是Alice来下 && Alice可以赢else if(!(u % 2) && f22 < 0) return f22;//这一步是Bob来下 && Bob可以赢if(f0) return 0;//可以平局if(u % 2) return f21;//这一步是Alice来下 && Alice 只能让Bob赢return f12;
}int main(){cin >> tt;while(tt--){oo = 0;for(int i = 0; i < 9; i++) cin >> g[i/3][i%3], oo += !g[i/3][i%3];//输入cout << dfs(oo) << endl;}
}

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

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

相关文章

Pytorch使用手册—自定义函数的双重反向传播与自定义函数融合卷积和批归一化(专题五十二)

1. 使用自定义函数的双重反向传播 有时候,在反向计算图中运行两次反向传播是有用的,例如计算高阶梯度。然而,支持双重反向传播需要对自动求导(autograd)有一定的理解,并且需要小心处理。支持单次反向传播的函数不一定能够支持双重反向传播。在本教程中,我们将展示如何编…

MySQL:数据库基础

数据库基础 1.什么是数据库&#xff1f;2.为什么要学习数据库&#xff1f;3.主流的数据库&#xff08;了解&#xff09;4.服务器&#xff0c;数据库&#xff0c;表之间的关系5.数据的逻辑存储6.MYSQL架构7.存储引擎 1.什么是数据库&#xff1f; 数据库(Database,简称DB)&#x…

Web Component 教程(五):从 Lit-html 到 LitElement,简化组件开发

前言 在现代前端开发中&#xff0c;Web 组件是一种非常流行的技术&#xff0c;它允许我们创建可重用的、自包含的 UI 元素。而 Lit-html 是一个简洁高效库&#xff0c;用于在 Web 组件中进行渲染。在这篇教程中&#xff0c;我们一步步学习如何 Lit-html 来创建 Web Component。…

【C++】二叉树和堆的链式结构(上)

本篇博客给大家带来的是用C语言来实现堆链式结构和二叉树的实现&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;数据结构 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff…

Devops之AWS:如何安装AWS CLI

AWS 命令行界面&#xff08;AWS CLI&#xff09;是一种开源工具&#xff0c;让我们能够使用命令行 Shell 中的命令与 AWS 服务进行交互。 安装步骤&#xff1a; 下载并运行AWS CLI的MSI安装程序&#xff1a; 点击如下的链接&#xff0c;即可下载MSI安装程序&#xff1a; htt…

PH2D数据集: 用人类演示数据提升人形机器人操作能力,助力跨实体学习

2025-03-18, 由加州大学圣地亚哥分校, 卡内基梅隆大学, 华盛顿大学, 麻省理工学院等机构联合收集了PH2D数据集。该数据集包含26824个任务导向的人类演示&#xff0c;采用消费者级VR设备收集&#xff0c;提供了准确的3D手部关键点姿态和语言注释。数据集覆盖了多种操作任务、不同…

python 数据可视化matplotib库安装与使用

要使用 matplotlib 库进行数据可视化&#xff0c;首先你需要确保已经安装了该库。如果你还没有安装&#xff0c;可以通过 Python 的包管理器 pip 来安装它。在你的命令行工具中运行以下命令来安装 matplotlib&#xff1a; pip install matplotlib安装完成后&#xff0c;你就可以…

【MySQL基础-10】MySQL中的LENGTH()函数:用法详解与实例分析

在MySQL数据库中&#xff0c;LENGTH()函数是一个非常常用的字符串函数&#xff0c;用于计算字符串的字节长度。理解并掌握LENGTH()函数的用法&#xff0c;对于处理字符串数据、优化查询以及进行数据验证都非常有帮助。本文将详细介绍LENGTH()函数的用法&#xff0c;并通过实例演…

Matlab 基于专家pid控制的时滞系统

1、内容简介 Matlab 185-基于专家pid控制的时滞系统 可以交流、咨询、答疑 2、内容说明 略 在处理时滞系统&#xff08;Time Delay Systems&#xff09;时&#xff0c;使用传统的PID控制可能会面临挑战&#xff0c;因为时滞会导致系统的不稳定或性能下降。专家PID控制通过结…

E902基于bash与VCS的仿真环境建立

网上看见很多E902仿真的文章&#xff0c;但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120&#xff0c;而我按照相应的步骤与对应的编译器&#xff0c;仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512&#xff0c;反而成功了。现在开…

SpringSecurity配置(自定义认证过滤器)

文末有本篇文章的项目源码文件可供下载学习 在这个案例中,我们已经实现了自定义登录URI的操作,登录成功之后,我们再次访问后端中的API的时候要在请求头中携带token,此时的token是jwt字符串,我们需要将该jwt字符串进行解析,查看解析后的User对象是否处于登录状态.登录状态下,将…

《UNIX网络编程卷1:套接字联网API》第1章 简介

《UNIX网络编程卷1&#xff1a;套接字联网API》第1章 简介 1.1 网络编程的核心价值与挑战 网络编程是实现跨设备通信的技术基础&#xff0c;其核心目标是通过协议栈实现数据的可靠传输与高效交换。在嵌入式系统、云计算、物联网等领域&#xff0c;网络编程能力直接决定了系统的…

D-Wave专用量子计算机登顶Science 率先展示在真实场景中的量子优势(内附下载)

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨浪味仙 行业动向&#xff1a;4200字丨16分钟阅读 摘要&#xff1a;加拿大专用量子计算机公司 D-Wave 在 Science 期刊发表了论文&#xff0c;题为《Beyond-Classical Compu…

在Ubuntu上安装MEAN Stack的4个步骤

在Ubuntu上安装MEAN Stack的4个步骤为&#xff1a;1.安装MEAN&#xff1b;2.安装MongoDB&#xff1b;3.安装NodeJS&#xff0c;Git和NPM&#xff1b;4.安装剩余的依赖项。 什么是MEAN Stack&#xff1f; 平均堆栈一直在很大程度上升高为基于稳健的基于JavaScript的开发堆栈。…

jmeter将返回的数据写入csv文件

举例说明&#xff0c;我需要接口返回体中的exampleid与todoid的数据信息&#xff08;使用边界提取器先将其提取&#xff09;&#xff0c;并将其写入csv文件进行保存 使用后置处理器BeanShell 脚本实例如下 import java.io.*;// 设置要写入的文件路径 String filePath "…

Linux下Redis哨兵集群模式搭建(1主2从+3哨兵)

Linux下Redis哨兵集群模式搭建&#xff08;1主2从3哨兵&#xff09; 一、Redis哨兵模式搭建 1.安装包下载 链接: https://pan.baidu.com/s/1_n2rCMi5MHX-mVkkyMo4LA 提取码: gbra 2.新建redis目录 mkdir -p /app/redis3.解压到/app/redis目录下 tar -zxvf redis-6.2.16.ta…

Debian 系统命令集合 |Debian 和 CentOS常见命令的异同

Debian 系统命令集合 Debian 是一个非常流行且稳定的 Linux 发行版&#xff0c;广泛用于服务器、桌面和工作站环境。 Debian 和 CentOS常见命令 使用方式的对比 注: 部分人&#xff08;比如我&#xff09;先学的centos&#xff0c;其实centos和debian 就记住几十个有区别命…

20250319在荣品的PRO-RK3566开发板的buildroot系统下使用集成的QT应用调试串口UART3

stty -F /dev/ttyS3 115200 -echo cat /dev/ttyS3 & echo serialdata > /dev/ttyS3 20250319在荣品的PRO-RK3566开发板的buildroot系统下使用集成的QT应用调试串口UART3 2025/3/19 14:17 缘起&#xff1a;在荣品的PRO-RK3566开发板的buildroot系统下&#xff0c;在命令…

深入理解 C# 反射 的使用

总目录 前言 反射是.NET框架中一个强大的特性&#xff0c;允许程序在运行时检查和操作类型信息。通过反射&#xff0c;开发者可以动态地创建对象、调用方法、访问属性等&#xff0c;为程序提供了极大的灵活性。本文将详细讲解C#反射的使用方法及其应用场景。 一、什么是反射&a…

YOLO+OpenCV强强联手:高精度跌倒检测技术实战解析

目录 关于摔倒检测 摔倒检测核心逻辑 摔倒检测:联合多种逻辑判断 原理详细解释 1. 导入必要的库 2. 定义函数和关键点连接关系 3. 筛选有效关键点并计算边界框 4. 计算人体上下半身中心点和角度 5. 绘制关键点和连接线 6. 绘制角度标注和检测跌倒 7. 返回处理后的图…