当前位置: 首页 > news >正文

CSP认证准备第二天-第36/37次CCF认证

第37次CCF认证-第三题

  主要是间接赋值比较难。

  自己编写的代码如下,但是有问题,没有解决间接赋值的问题,可以参考一下deepseek的回答。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
long long n,x;
char a,c,d;
string b;
map<char,string> m;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        switch (x)
        {
        case 1:
            cin>>a>>b;
            m[a]=b;
            break;
        case 2:
        {
             cin >> a;           // 读取目标字符 'c'
             string src1, src2;  // 用于读取 "$a" 和 "$b"
             cin >> src1 >> src2;
             // 提取 '$' 后面的字符(假设格式一定是 "$X")
             c = src1[1];        // 取 "$a" 的第二个字符 'a'
             d = src2[1];        // 取 "$b" 的第二个字符 'b'
             m[a] = m[c] + m[d]; // 合并 m['a'] 和 m['b']
        }
            break;
        case 3: //case 标签之间不能有变量的初始化,除非使用大括号 {} 创建一个作用域来限制变量的生命周期。
         {
            cin>>a;         //还是不对,没办法更新,这里
            int len=m[a].size();
            int ans=len%1000000007;
            cout<<ans<<endl;
         }
            
            break;
        default:
            break;
        }
    }
    return 0;
}

  引入变量:

// 变量可以是直接赋值的字符串,或者是间接赋值的表达式
struct Variable {
    bool is_direct; // 是否是直接赋值
    string direct_value; // 直接赋值的值
    vector<string> expr; // 间接赋值的表达式(按空格分割的操作数)
};

map<string, Variable> variables; // 存储所有变量

  但是deepseek给的代码运行起来也有问题,我就没再继续研究下去了。开始做有题解的题目吧。

第36次CCF认证-第一题 移动

  笔者上次参加过第36次认证,菜菜的我只拿了190分,这次再重新做┭┮﹏┭┮

  第一题我就不重新写了,我记得当时好像被小坑了一下,在注意外围不能超过n时,下限也不能低于1。

第36次CCF认证-第二题

  笔者当时没有拿满分,这次看看题解再重新做一次吧。参考题解:CCF-CSP 梦境巡查-CSDN博客

#include <bits/stdc++.h>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n; // 输入区域数量 n
    int len = n + 1; // 区域编号 0~n,共 n+1 个区域
    vector<int> a(len, 0); // a[0]~a[n]:移动消耗的能量
    vector<int> b(len, 0); // b[1]~b[n]:补给的能量(b[0] = 0)

    // 输入 a[0]~a[n]
    for (int i = 0; i < len; i++) {
        cin >> a[i];
    }

    // 输入 b[1]~b[n]
    for (int i = 1; i < len; i++) {
        cin >> b[i];
    }

    // 遍历每个区域 i(1~n),计算当 b[i] = 0 时的最小初始能量 w(i)
    for (int i = 1; i < len; i++) {
        int ans = 0; // 记录剩余能量的最小值
        int sum = 0; // 当前剩余能量
        int temp = b[i]; // 保存 b[i] 的原始值
        b[i] = 0; // 模拟 b[i] = 0 的情况

        // 模拟巡查过程:从 0 出发,依次访问 1~n,最后返回 0
        for (int j = 0; j < len; j++) {
            sum = sum - a[j] + b[j]; // 移动消耗 a[j],到达后获得 b[j]
            ans = min(ans, sum); // 更新剩余能量的最小值
        }       //!如果是负数的话也没关系 本来就是要求缺多少

        b[i] = temp; // 恢复 b[i] 的原始值 注意这里需要回复b[i]的原始值
        cout << abs(ans) << " "; // w(i) = |min_energy|
    }

    cout << endl;
    return 0;
}

  我对中间的模拟还有一些疑惑,于是问了deepseek:

第36次CCF认证-第三题

  对该题有印象,甚至尝试了一下,但是好像只拿到了部分分数,今天再来研究研究。

相关文章:

  • wordpress 后门检测百度seo刷排名网址
  • 凡客vancl的网站标题厦门网站seo哪家好
  • 苏州网站建设极简幕枫百度网络营销中心客服电话
  • 网站建设的类型或分类百度识图在线识别
  • 温州手机网站制作公司电话竞价推广公司
  • 做网站运营有趣吗线上营销推广渠道
  • 3.IS-IS认证
  • 2143 最少刷题数
  • 【MySQL 删除数据详解】
  • H.264 NVMPI解码性能优化策略
  • Spring Security基本入门
  • python 基础:句子缩写
  • [leetcode]01背包问题
  • 架构设计之Redisson分布式锁-可重入同步锁(一)
  • 用labview写crc8校验
  • SQL优化算法解析 | PawSQL 如何将EXISTS子查询“秒拆“为JOIN连接
  • 告别复杂布线!PLC无线以太网互联的终极解决方案
  • Nodejs的后端看框架集合,你更喜欢那一个?
  • 网络原理
  • 【Linux】之【Get】 chroot 环境下安装deb包时 .postinst:行 9: 201 段错误 (核心已转储)ldconfig
  • 多卡分布式训练:torchrun --nproc_per_node=5
  • LeetCode 热题 100_零钱兑换(85_322_中等_C++)(动态规划)
  • 在cordova环境下配置IOS项目,并成功运行起来
  • jQuery 插件
  • npm、nvm、nrm
  • MySQL 优化教程:让你的数据库飞起来