CCF CAT- 全国算法精英大赛(2024第二场)往届真题练习 3 | 珂学家

news2024/11/18 23:42:08

前言

这是2024年第一场CCF初赛的题, 其实整场比赛,感觉不是特别难,就是码量大,偏模拟和数学。

对于A题,摩斯密码,很容易抄错,我一直在想有什么好办法可以规避它,是真的苦涩。

在这里插入图片描述


真题


摩斯密码

在这里插入图片描述

思路: 模拟题

真的太容易错了

from collections import defaultdict

mp = defaultdict(str)

mp['.-'] = 'A'
mp['-...'] = 'B'
mp['-.-.'] = 'C'
mp['-..'] = 'D'
mp['.'] = 'E'

mp['..-.'] = 'F'
mp['--.'] = 'G'
mp['....'] = 'H'
mp['..'] = 'I'
mp['.---'] = 'J'

mp['-.-'] = 'K'
mp['.-..'] = 'L'
mp['--'] = 'M'
mp['-.'] = 'N'
mp['---'] = 'O'

mp['.--.'] = 'P'
mp['--.-'] = 'Q'
mp['.-.'] = 'R'
mp['...'] = 'S'
mp['-'] = 'T'

mp['..-'] = 'U'
mp['...-'] = 'V'
mp['.--'] = 'W'
mp['-..-'] = 'X'
mp['-.--'] = 'Y'
mp['--..'] = 'Z'

mp['.----'] = '1'
mp['..---'] = '2'
mp['...--'] = '3'
mp['....-'] = '4'
mp['.....'] = '5'
mp['-....'] = '6'
mp['--...'] = '7'
mp['---..'] = '8'
mp['----.'] = '9'
mp['-----'] = '0'

mp['..--..'] = '?'
mp['-..-.'] = '/'
mp['-.--.-'] = '()'
mp['-....-'] = '-'
mp['.-.-.-'] = '.'

arr = input().split('.')

res = []
for s in arr:
  s = s.replace('1', '-')
  s = s.replace('0', '.')
  #print (mp[s])
  res.append(mp[s])
print(''.join(res))


光线折射

在这里插入图片描述

光线映射,引入方向,然后模拟之。

我在想,是不是可以用初中物理那种做法,然后映入坐标映射转换。

w, h = list(map(int, input().split()))

dirs = [(1, 1), (-1, 1), (-1, -1), (1, -1)]

x, y = 0, 0
d = 0
for _ in range(3):
  if d == 0:
    dy, dx = h - y, w - x
    if dy == dx:
      y, x = h, w
      d = 2
    elif dy > dx:
      y, x = y + (w - x), w
      d = 1
    else:
      y, x = h, x + (h - y)
      d = 3
  elif d == 1:
    dy, dx = abs(y - h), abs(x)
    if dy == dx:
      y, x = h, 0
      d = 3
    elif dy > dx:
      y, x = y + x, 0
      d = 0
    else:
      y, x = h, x - dy
      d = 2
  elif d == 2:
    dy, dx = y, x
    if dy == dx:
      y, x = 0, 0
      d = 0
    elif dy > dx:
      y, x = y - dx, 0
      d = 3
    else:
      y, x = 0, x - dy
      d = 0
  elif d == 3:
    dy, dx = y, w - x
    if dy == dx:
      y, x = 0, w
      d = 1
    elif dy > dx:
      y, x = y - dx, w
      d = 2
    else:
      y, x = 0, x + dy
      d = 0

print (x, y)

多项式还原

在这里插入图片描述

思路: n+1进制

诈骗题,如果能提取到关键的信息,其实就能快速秒了这题。

这题核心就是 n+1 进制构造

n, m = list(map(int, input().split()))

res = []
i = 0
while m > 0:
    r = m % (n + 1)
    if r > 0:
        res.append((r, i))
    i += 1
    m = m // (n + 1)

rs = []
for (k, v) in reversed(res):
    s = ""
    if k > 1:
        s += str(k)
        if v > 1:
            s += "x^" + str(v)
        elif v == 1:
            s += "x"
    else:
        if v > 1:
            s += "x^" + str(v)
        elif v == 1:
            s += "x"
        else:
            s += str(1)
    rs.append(s)

print('+'.join(rs))

开心消消乐

在这里插入图片描述

经典的回溯问题,很游戏向的一道题

其实蛮折磨人的一道题,即考察dfs又考察bfs。


n, m = list(map(int, input().split()))

grid = []
for _ in range(n):
    row = list(map(int, input().split()))
    grid.append(row)


from collections import deque
def bfs(chess, r, c, vis):
    res = []
    h, w = len(chess), len(chess[0])
    deq = deque()
    deq.append((r, c))
    vis[r][c] = True
    res.append((r, c))
    while len(deq) > 0:
        y, x = deq.popleft()
        for (dy, dx) in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
            ty, tx = y + dy, x + dx
            if 0 <= ty < h and 0 <= tx < w and not vis[ty][tx] and chess[ty][tx] == chess[r][c]:
                vis[ty][tx] = True
                res.append((ty, tx))
                deq.append((ty, tx))
    return res

# 经典的DFS回溯问题
def dfs(chess):
    score = 0
    h, w = len(chess), len(chess[0])
    vis = [[False] * w for _ in range(h)]
    for i in range(h):
        for j in range(w):
            if not vis[i][j] and chess[i][j] != 0:
                cs = bfs(chess, i, j, vis)
                if len(cs) >= 3:
                    nchess = [chess[x][:] for x in range(h)]
                    for (ty, tx) in cs:
                        nchess[ty][tx] = 0
                    for tx in range(w):
                        ty = h - 1
                        ty2 = h - 1
                        while ty >= 0:
                            while ty2 >= 0 and nchess[ty2][tx] == 0:
                                ty2 -= 1
                            if ty2 < 0:
                                nchess[ty][tx] = 0
                            else:
                                nchess[ty][tx] = nchess[ty2][tx]
                            ty -= 1
                            ty2 -= 1
                    r1 = dfs(nchess)
                    score = max(score, r1 + len(cs))
    return score

res = dfs(grid)
print (res)

等式

在这里插入图片描述

思路: 质数筛 + 分子分解

偏数论的一道题

要做好优化,不然容易TLE

大概是预处理筛表 O ( n ) O(n) O(n)+ m n , m 为 n 以内的质数个数 m \sqrt {n}, m为n以内的质数个数 mn ,mn以内的质数个数

import java.io.BufferedInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(new BufferedInputStream(System.in));
        int n = sc.nextInt();

        boolean[] vis = new boolean[n + 1];
        Arrays.fill(vis, true);
        vis[0] = vis[1] = false;
        List<Integer> primes = new ArrayList<>();
        List<Integer> primes2 = new ArrayList<>();
        for (int i = 2; i <= n; i++) {
            if (vis[i]) {
                primes.add(i);
                if (i > n / i) continue;
                primes2.add(i);
                for (int j = i * i; j <= n; j += i) {
                    vis[j] = false;
                }
            }
        }

        long res = 0;
        for (int v: primes) {
            if (n <= v) break;
            int r = 1;
            int cn = n - v;
            if (vis[cn]) continue;
            for (int u: primes2) {
                if (cn < u) break;
                if (u > cn / u) break;
                if (cn % u == 0) {
                    int t = 0;
                    while (cn % u == 0) {
                        t++;
                        cn /= u;
                    }
                    r = r * (t + 1);
                }
            }
            if (cn > 1) r = r * 2;
            res += r;
        }

        System.out.println(res);
    }

}

写在最后

在这里插入图片描述

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

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

相关文章

Linux系统启动原理

Linux系统启动原理及故障排除 Centos6系统启动过程 修改系统启动级别 vim /etc/inittabCentos7启动流程 加载BIOS信息&#xff0c;进行硬件检测 根据BIOS设定读取设备中的MBR&#xff0c;加载Boot loader 加载内核&#xff0c;内核初始化以后以模块的形式动态加载硬件 并且加…

死锁及线程与队列之间的等待关系

死锁及线程与队列之间的等待关系 死锁及线程与队列之间的等待关系案例一案例二案例三案例四案例五 结语 死锁及线程与队列之间的等待关系 我想要补充一下我之前GCD学习中没能理解清楚的死锁及线程与队列之间的等待关系&#xff0c;因为在看锁的博客时&#xff0c;有人给出了一…

如何在 Elasticsearch 中选择精确 kNN 搜索和近似 kNN 搜索

作者&#xff1a;来自 Elastic Carlos Delgado kNN 是什么&#xff1f; 语义搜索&#xff08;semantic search&#xff09;是相关性排名的强大工具。 它使你不仅可以使用关键字&#xff0c;还可以考虑文档和查询的实际含义。 语义搜索基于向量搜索&#xff08;vector search&…

Gradient-checkpointing的原理

原文&#xff1a; 将更大的网络安装到内存中。|by 雅罗斯拉夫布拉托夫 |张量流 |中等 (medium.com) 前向传播时&#xff0c;隔几层就保留一层activation数据&#xff0c;其余层的activation都释放掉&#xff1b; 反向传播时&#xff0c;从最近的checkpoint去重新跑forward&…

Docker部署SpringBoot项目(jar包+Mysql)

部署Java项目 项目准备准备Java项目镜像准备配置网络 部署项目细节展示 项目准备 准备Java项目 hmall项目是一个maven聚合项目&#xff0c;使用IDEA打开hmall项目&#xff0c;查看项目结构如图&#xff1a; 我们要部署的就是其中的hm-service&#xff0c;其中的配置文件采用…

前 9 名最佳视频转换器软件完全免费

前 9 名免费视频转换器是什么&#xff1f;在此视频转换器评论中&#xff0c;我们收集了一些有用的提示并列出了顶级免费视频转换器软件&#xff0c;并找出适合所有级别&#xff08;从初学者到专家&#xff09;的最佳免费视频转换器。 顶级视频转换器列表 在这一部分中&#xf…

go 爬虫之 colly 简单示例

1. 背景 colly 是 Go 实现的比较有名的一款爬虫框架&#xff0c;而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速&#xff0c;设计非常优雅&#xff0c;并且分布式的支持也非常简单&#xff0c;易于扩展。 2. 官方文档 https://go-col…

【简单易用,新人友好】一个轻量级生物信息学流程框架,从此解决99%的生物信息学流程搭建问题...

生物信息学数据分析流程的搭建是一项繁重而复杂的工作。随着行业的发展&#xff0c;各种生信流程框架层出不穷&#xff0c;比如有: NextflowSnakemakeCWLWDL 各种标准&#xff0c;各种规则&#xff0c;令人眼花缭乱。选择太多&#xff0c;往往令人无所适从。特别是新进入行业的…

03自动辅助导航驾驶NOP其实就是NOA

蔚来NOP是什么意思&#xff1f;蔚来NOP是啥 蔚来NOP的意思就是NavigateonPilot智能辅助导航驾驶&#xff0c;也就是大家俗称的高阶辅助驾驶&#xff0c;在车主设定好导航路线&#xff0c;并且符合开启NOP条件的前提下&#xff0c;蔚来NOP可以代替驾驶员完成从A点到B点的智能辅助…

<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript

由Anaconda创建的PyScript是一项实验性的但很有前途的新技术&#xff0c;它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly&#xff0c;这是许多言语&#xff08;如C、C和Rust&#xff09;能够编译的高速运转时…

springboot项目,@Test写法 @Before @After

某文件示例 package cn.xxx.crm.boss;import cn.xxxx.crm.manager.mq.rabbit.AliyunCredentialsProvider; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; im…

大模型提示词Prompt学习

引言 关于chatGPT的Prompt Engineer&#xff0c;大家肯定耳朵都听起茧了。但是它的来由&#xff1f;&#xff0c;怎么能用好&#xff1f;很多人可能并不觉得并不是一个问题&#xff0c;或者说认定是一个很快会过时的概念。但其实也不能说得非常清楚&#xff08;因为觉得没必要深…

x264 码率控制中实现 VBV 算法源码分析

关于 VBV 的解释与原理可以参考x264 码率控制 VBV 原理。 x264中 VBV 算法执行的流程 vbv 参数配置相关函数 x264_param_default函数 功能:编码参数默认设置,关于 vbv的参数的默认设置;函数内vbv相关代码:/* ... */ //代码有删减 param->rc.i_vbv_max_bitrate = 0; par…

《软件方法(下)》8.3.4.3 关于“整体-部分”结构

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.3 建模步骤C-2 识别类的关系 8.3.4 识别关联关系 8.3.4.2 关联的进一步细分 是否进一步细分各种关联&#xff0c;各种面向对象方法学观点不同。有的认为关联就是关联&#xff0c;…

mvc的常见注解

问文心一言的&#xff0c;记录一下。 PathVariable 路径变量注解 PathVariable 是 Spring MVC 提供的一个注解&#xff0c;它用于从 URI 模板变量中绑定值到控制器方法的参数上。当你在 RequestMapping、GetMapping、PostMapping、PutMapping、DeleteMapping 等注解的 URL 路…

maven默认src下的xml,properties文件不打包到classes文件夹下

一、第一种是建立src/main/resources文件夹&#xff0c;将xml&#xff0c;properties等资源文件放置到这个目录中。maven工具默认在编译的时候&#xff0c;会将resources文件夹中的资源文件一块打包进classes目录中。 这时候注意把resources设置成resource目录&#xff0c;已经…

操作系统 c语言模仿 动态分区存储管理方式的主存分配回收

1&#xff0e;实验目的 深入了解动态分区存储管理方式的主存分配回收的实现。 2&#xff0e;实验预备知识 存储管理中动态分区的管理方式。 3&#xff0e;实验内容 编写程序完成动态分区存储管理方式的主存分配回收的实现。实验具体包括&#xff1a;首先确定主存空间分配表&…

Android 布局中@NULL的使用和代码实现方式详解

文章目录 1、使用场景2、示例代码实现2.1、移除背景2.2 、移除文本2.3、移除布局宽度或高度2.4、移除提示文本2.5、移除图像资源 3、综合示例3.1、布局文件 activity_main.xml3.2、主活动文件 MainActivity.java3.4、资源文件3.5、运行结果 4、优点5、缺点6、综合分析6.1、适用…

地下城游戏(leetcode)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 地下城游戏https://leetcode.cn/problems/dungeon-game/description/ 图解分析&#xff1a; 代码 class Solution { public:int calculateMinimumHP(vector<vector<int>>& vv) {int row vv.size(), col …

【云原生】Kubernetes基础命令合集

目录 引言 一、命令概述 &#xff08;一&#xff09;命令分类 &#xff08;二&#xff09;基本语法 二、查看基本信息 &#xff08;一&#xff09;环境指令 1.查看版本信息 2.查看资源对象简写 3.添加补全信息 4.查看日志 5.查看集群信息 &#xff08;二&#xff0…