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

news2025/3/20 17:27:57

第十三次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 -1

struct 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下的话
            如果他能赢 返回f22
            Bob如果自己赢不了 他会先想到是否能平局 返回0
                Bob如果不能平局 他会想到怎么多拖一点时间, 返回 f12
        同理
        如果这一步是Alice下的话    
            如果他能赢 返回f11
            Alice如果自己赢不了 他会先想到是否能平局 返回0
                Alice如果不能平局 他会想到怎么多拖一点时间, 返回 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;//dfs

                if(tmp == 0) f0 = 1;//如果可以平局, f0 = ture
                else if(tmp < 0) f22 = min(f22, tmp), f21 = max(f21, tmp);//维护f22, f21
                else 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.coloradmin.cn/o/2318499.html

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

相关文章

swagger ui 界面清除登录信息的办法

我们在开发过程中&#xff0c;用swagger ui 测试接口的时候&#xff0c;可能会要修改当前登录的用户。 但是如果我们在谷歌中对调试的本地swagger ui 登录地址存储过账户密码&#xff0c;每次启动项目调试之后&#xff0c;都会自动登录swagger ui &#xff0c;登录界面一闪就…

TensorFlow 的基本概念和使用场景

TensorFlow 是一个由 Google 开发的开源机器学习框架&#xff0c;主要用于构建和训练深度学习模型。下面是一些 TensorFlow 的基本概念和使用场景&#xff1a; 基本概念&#xff1a; 张量&#xff08;Tensor&#xff09;&#xff1a;在 TensorFlow 中&#xff0c;数据以张量的…

基于x11vnc的ubuntu远程桌面

1、安装VNC服务 sudo apt install x11vnc -y2、创建连接密码 sudo x11vnc -storepasswd3、安装lightdm服务 x11vnc 在 默认的 GDM3 中不起作用&#xff0c;因此需要使用 lightdm 桌面管理环境 sudo apt install lightdm -y切换至lightdm&#xff0c;上一步已经切换则跳过该…

Cursor解锁Claude Max,助力AI编程新突破!

Cursor 最新推出的 Claude Max 模型&#xff0c;以其卓越的性能和创新的能力&#xff0c;正在重新定义我们对 AI 辅助编程的认知。这款搭载 Claude3.7 大脑的超级模型&#xff0c;不仅具备超强智能&#xff0c;还凭借一系列技术突破&#xff0c;向传统 AI 编程工具发起了挑战。…

ESP8266 与 ARM7 接口-LPC2148 创建 Web 服务器以控制 LED

ESP8266 与 ARM7 接口-LPC2148 创建 Web 服务器以控制 LED ESP8266 Wi-Fi 收发器提供了一种将微控制器连接到网络的方法。它被广泛用于物联网项目,因为它便宜、体积小且易于使用。 在本教程中,我们将 ESP8266 Wi-Fi 模块与 ARM7-LPC2148 微控制器连接,并创建一个 Web 服务…

通过C#脚本更改材质球的参数

// 设置贴图Texture mTexture Resources.Load("myTexture", typeof(Texture )) as Texture;material.SetTexture("_MainTex", mTexture );// 设置整数material.SetInt("_Int", 1);// 设置浮点material.SetFloat("_Float", 0.1f);// 设…

FPGA管脚约束

目录 前言 一、IO约束 二、延迟约束 前言 IO约束包括管脚约束和延迟约束。 一、IO约束 对管脚进行约束&#xff0c;对应的约束语句&#xff1a; set_property -dict {PACKAGE_PIN AJ16 IOSTANDARD LVCMOS18} [get_ports "led[0]" ] 上面是单端的管脚&…

实现前端.ttf字体包的压缩

前言 平常字体包都有1M的大小&#xff0c;所以网络请求耗时会比较长&#xff0c;所以对字体包的压缩也是前端优化的一个点。但是前端如果想要特点字符打包成字体包&#xff0c;网上查阅资料后&#xff0c;都是把前端代码里面的字符获取&#xff0c;但是对于动态的内容&#xf…

uni-app集成保利威直播、点播SDK经验FQ(二)|小程序直播/APP直播开发适用

通过uniapp集成保利威直播、点播SDK来开发小程序/APP的视频直播能力&#xff0c;在实际开发中可能会遇到的疑问和解决方案&#xff0c;下篇。更多疑问请咨询19924784795。 1.ios不能后台挂起uniapp插件 ios端使用后台音频播放和画中画功能&#xff0c;没有在 manifest.json 进…

Sensodrive机器人力控关节模组SensoJoint在海洋垃圾清理机器人中的拓展应用

海洋污染已成为全球性的环境挑战&#xff0c;其中海底垃圾的清理尤为困难。据研究&#xff0c;海洋中约有2600万至6600万吨垃圾&#xff0c;超过90%沉积在海底。传统上&#xff0c;潜水员收集海底垃圾不仅成本高昂&#xff0c;而且充满风险。为解决这一问题&#xff0c;欧盟资助…

Git的基本指令

一、回滚 1.git init 在项目文件夹中打开bash生成一个.git的子目录&#xff0c;产生一个仓库 2.git status 查看当前目录下的所有文件的状态 3.git add . 将该目录下的所有文件提交到暂存区 4.git add 文件名 将该目录下的指定文件提交到暂存区 5.git commit -m 备注信…

Vitis 2024.1 无法正常编译custom ip的bug(因为Makefile里的wildcard)

现象&#xff1a;如果在vivado中&#xff0c;添加了自己的custom IP&#xff0c;比如AXI4 IP&#xff0c;那么在Vitis&#xff08;2024.1&#xff09;编译导出的原本的.xsa的时候&#xff0c;会构建build失败。报错代码是&#xff1a; "Compiling blank_test_ip..."…

Elasticsearch 在航空行业:数据管理的游戏规则改变者

作者&#xff1a;来自 Elastic Adam La Roche 数字化客户体验不再是奢侈品&#xff0c;而是欧洲航空公司必不可少的需求。它推动了客户满意度&#xff0c;提升了运营效率&#xff0c;并创造了可持续的竞争优势。随着行业的不断发展&#xff0c;优先投资前沿数字技术和平台的航空…

DeepSeek 模型的成本效益深度解析:低成本、高性能的AI新选择

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

利用knn算法实现手写数字分类

利用knn算法实现手写数字分类 1.作者介绍2.KNN算法2.1KNN&#xff08;K-Nearest Neighbors&#xff09;算法核心思想2.2KNN算法的工作流程2.3优缺点2.4 KNN算法图示介绍 3.实验过程3.1安装所需库3.2 MNIST数据集3.3 导入手写数字图像进行分类3.4 完整代码3.5 实验结果 1.作者介…

基于springboot+vue的调查问卷平台

一、系统架构 前端&#xff1a;vue | element-ui | echarts 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven 二、代码及数据 三、功能介绍 01. 注册 02. 登录 03. web端-问卷中心 04. web端-文章中心 05. 管理端-…

美摄接入DeepSeek等大模型,用多模态融合重构视频创作新边界!

今年以来&#xff0c;DeepSeek凭借其强大的深度推理分析能力&#xff0c;在AI领域掀起新的热潮。美摄科技快速响应市场需求&#xff0c;迅速接入以DeepSeek、通义千问、商汤、文心一言为代表的大模型&#xff0c;为企业视频创作生产带来全新体验。 传统视频创作面临着同质化、…

网络编程之客户端聊天(服务器加客户端共三种方式)

最终效果&#xff1a; serve.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/select.h>#define MAX_CLIENTS 2 // 只允许两个客户端 #define BUF_SIZE 1024i…

图莫斯TOOMOSS上位机TCANLINPro使用CAN UDS功能时 编写、加载27服务dll解锁算法文件

【本文发布于https://blog.csdn.net/Stack_/article/details/146303690&#xff0c;未经许可不得转载&#xff0c;转载须注明出处】 软件安装目录下找到如下压缩包&#xff0c;此为dll文件示例工程 使用VisualStudio打开工程GenerateKeyExImpl.vcxproj&#xff0c;可能会提示版…

vue+echarts实现饼图组件(实现左右联动并且数据量大时可滚动)

pieChart.vue(直接cv即可) <template><div class"rBox1"><div id"rBox1"></div></div> </template><script> export default {name: "pieChart",dicts: [],props: {subtext: {type: String,default…