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


前言

这是第二场CCF的练习赛,找找手感,顺便熟悉下赛氪OJ平台。

当前就做了5题,感觉还可以,部分题目质量蛮高的,但是易错。

第1题dp入门题, 第5属于诈骗题,第2和第3挺有难度的,第四题感觉放水了。
在这里插入图片描述


真题

Hotpot

在这里插入图片描述

思路: 状态机DP

这是时间复杂度为 o ( n ) o(n) o(n)

应该是存在矩阵幂的解法的

n = int(input())s0, s1, s2, s3 = 1, 0, 0, 0mod = 10 ** 9 + 7
for i in range(n):s0, s1, s2, s3 = s0 + s1 + s2 + s3, s0 + s2, s0 + s1, s0s0 %= mods1 %= mods2 %= mods3 %= modprint ((s0+s1+s2+s3)%mod)

Hearthstone

在这里插入图片描述

思路:环型DP

其实也是线性DP,无非多了一个环型限制,题目保证n为偶数。

# 思维题n = int(input())arr = []
for _ in range(n):v1, v2, v3 = list(map(int, input().split()))arr.append((v1, v2, v3))from math import inf
def solve(f, tag):if tag == 1 and f == 2:return 0if tag == 0 and f == 0:return 0dp = [-inf] * 3dp[f] = arr[0][f]for i in range(1, n):v1, v2, v3 = arr[i]dp2 = [-inf] * 3if i % 2 == tag:dp2[1] = dp[0] + v2dp2[2] = max(dp[0], dp[1]) + v3else:dp2[0] = max(dp[1], dp[2]) + v1dp2[1] = dp[2] + v2dp = dp2res = 0for i in range(3):if tag == 0 and f > i:res = max(res, dp[i])elif tag == 1 and f < i:res = max(res, dp[i])return resans = 0
for i in range(0, 3):for j in (0, 1):ans = max(ans, solve(i, j))print (ans)

Best Travel Plans

在这里插入图片描述

思路: 反悔堆

挺难的这题,一开始普通的BFS写法,TLE到奔溃

然后想了想,是不是可以枚举最远的位子,然后贪心求解。

这样的话,就可以构建反悔堆求解最优场景了。

n, T = list(map(int, input().split()))es = list(map(int, input().split()))
us = list(map(int, input().split()))
vs = list(map(int, input().split()))from math import inf
import heapqhq = []res = 0
tmp = 0
acc = 0
for i in range(n):if i > 0:acc += es[i - 1]if acc > T:breakwhile acc + len(hq) > T and len(hq) > 0:tmp -= heapq.heappop(hq)j = 0while True:ng = us[i] - j * vs[i]if ng <= 0:breakif acc + len(hq) < T:heapq.heappush(hq, ng)tmp += ngelse:if len(hq) > 0 and hq[0] >= ng:breaktmp -= heapq.heappop(hq)heapq.heappush(hq, ng)tmp += ngj += 1res = max(res, tmp)print (res)

Tree

在这里插入图片描述

解题突破口: n ≤ 1000 n \le 1000 n1000

这题就是单纯的模拟,就算二叉搜索树退化为链表,最多 O ( n 2 ) O(n^2) O(n2)

涉及DFS操作,采用java编写

import java.io.BufferedInputStream;
import java.util.Scanner;public class Main {static class TreeNode {int val;TreeNode left, right;public TreeNode(int val) {this.val = val;}public void insert(int v) {if (this.val == v) return;if (this.val > v) {if (this.left == null) {this.left = new TreeNode(v);return;}this.left.insert(v);} else if (this.val < v) {if (this.right == null) {this.right = new TreeNode(v);return;}this.right.insert(v);}}public int insert(int v, int depth) {if (this.val == v) return depth;else if (this.val > v) {if (this.left == null) {return depth + 1;}return this.left.insert(v, depth + 1);} else {if (this.right == null) {return depth + 1;}return this.right.insert(v, depth +1);}}}public static void main(String[] args) {Scanner sc = new Scanner(new BufferedInputStream(System.in));int n = sc.nextInt();TreeNode root = null;int v = sc.nextInt();root = new TreeNode(v);for (int i = 1; i < n; i++) {int t = sc.nextInt();root.insert(t);}for (int i = 0; i < n; i++) {int t = sc.nextInt();System.out.println(root.insert(t, 1));}}}

Flower

在这里插入图片描述

思路: 排序即可

题目感觉有些绕,挺无语的,小诈骗吧

n, k = list(map(int, input().split()))arr = list(map(int, input().split()))
brr = list(map(int, input().split()))ls = brr
ls.sort(key=lambda x: -x)res = 0
for i in range(min(k, len(ls))):res += ls[i]
print (res)

写在最后

在这里插入图片描述

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

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

相关文章

【杂七杂八】Huawei Gt runner手表系统降级

文章目录 Step1&#xff1a;下载安装修改版华为运动与健康Step2&#xff1a;在APP里进行配置Step3&#xff1a;更新固件(时间会很长) 目前在使用用鸿蒙4 111版本的手表系统&#xff0c;但是感觉睡眠检测和运动心率检测一言难尽&#xff0c;于是想到是否能回退到以前的版本&…

力扣:349. 两个数组的交集

349. 两个数组的交集 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2]示例 2&#xff1a; …

P1638 逛画展

题目描述 博览馆正在展出由世上最佳的 &#x1d45a; 位画家所画的图画。 游客在购买门票时必须说明两个数字&#xff0c;&#x1d44e; 和 &#x1d44f;&#xff0c;代表他要看展览中的第 &#x1d44e; 幅至第 &#x1d44f; 幅画&#xff08;包含 &#x1d44e;,&#x1…

设计模式14——组合模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 组合模式&#xff08;Composit…

Flutter 中的 DropdownButtonFormField 小部件:全面指南

Flutter 中的 DropdownButtonFormField 小部件&#xff1a;全面指南 在Flutter中&#xff0c;DropdownButtonFormField是一个特殊的表单字段小部件&#xff0c;它结合了下拉选择框&#xff08;DropdownButton&#xff09;和表单字段&#xff08;FormField&#xff09;的功能。…

LeetCode199二叉树的右视图

题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 解析 这一题的关键其实就是找到怎么去得到当前是哪一层级&#xff0c;可以利用队列对二叉树进行层次遍历&#xff0c;但…

ICRA 2024: NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院等研究人员开发了精细操作的手术机器人

英伟达&#xff08;NVIDIA&#xff09;正与学术研究人员合作&#xff0c;研究手术机器人。 NVIDIA 联合多伦多大学、加州大学伯克利分校、苏黎世联邦理工学院和佐治亚理工学院的研究人员开发了 ORBIT-Surgical&#xff0c;一个训练机器人的模拟框架&#xff0c;可以提高手术团…

vue3的api风格

Vue的组件有两种不同的风格&#xff1a;组合式API 和 选项式API 选项式api 选项式API&#xff0c;可以用包含多个选项的对象来描述组件的逻辑&#xff0c;如&#xff1a;data&#xff0c;methods&#xff0c;mounted等。 组合式api setup&#xff1a;是一个标识&#xff0c;告…

我用Mybatis的方式封装了OLAP查询!

背景 相信做数据平台的朋友对OLAP并不陌生&#xff0c;主流的OLAP引擎有Clickhouse&#xff0c;Impala&#xff0c;Starrocks…以及公司二开的OLAP平台&#xff0c;本次要说的OLAP属于最后一种。 最近在做一个BI项目&#xff0c;业务背景很简单&#xff0c;就是一个数据展示平…

图像上下文学习|多模态基础模型中的多镜头情境学习

【原文】众所周知&#xff0c;大型语言模型在小样本上下文学习&#xff08;ICL&#xff09;方面非常有效。多模态基础模型的最新进展实现了前所未有的长上下文窗口&#xff0c;为探索其执行 ICL 的能力提供了机会&#xff0c;并提供了更多演示示例。在这项工作中&#xff0c;我…

Docker简单使用

1.简单认识 软件的打包技术&#xff0c;就是将打乱的多个文件打包为一个整体&#xff0c;比如想使用nginx&#xff0c;需要先有一台linux的虚拟机&#xff0c;然后在虚拟机上安装nginx.比如虚拟机大小1G&#xff0c;nginx100M。当有了docker后我们可以下载nginx 的镜像文件&am…

分布式锁1-分布式锁实现的三种方式

分布式锁概念 为什么使用分布式锁 假设有这样一个场景&#xff0c;双十一抢iphone15ProMax手机场景&#xff0c;可以抢多台。操作数据库接口如下&#xff1a; void reduceInventory(Long id,int count) {//1.拿到数量信息Product product mapper.selectById(id);//2.修改数量…

2024.05.24|生信早报【AI测试版】

植物再生领域重大突破 山农大团队发现植物“再生指挥官”REF1&#xff1a;中国科学院院士种康高度评价&#xff0c;认为这一发现对细胞分化与再生领域的基础科学研究和生物技术应用具有重大意义。 生物医药专业园区建设\n- 卫光生命科学园聚焦合成生物学、脑科学&#xff1a…

学习通项目总结:

1.字体大小和按钮的大小不统一导致很难看 2.只是做了基础的功能点没有自己的想法&#xff08;没有创新&#xff09; 3.使用了很多的线程不安全的集合&#xff0c;对于线程安全的认识还需要加强 4.对数据库的认识太少了&#xff0c;就只使用了最简单的增删改查&#xff0c;相…

详细介绍一下Votenet的工作原理及流程

Votenet是一种基于深度学习的三维目标检测和实例分割方法&#xff0c;其工作原理主要包括两个步骤&#xff1a;候选框生成和目标分类与分割。 1.候选框生成&#xff1a; 首先&#xff0c;Votenet通过将三维点云数据转化为连续的坐标网格&#xff0c;将三维目标检测问题转化为二…

【openlayers系统学习】1.6下载要素,将要素数据序列化为 GeoJSON并下载

六、下载要素 下载要素 上传数据并编辑后&#xff0c;我们想让用户下载结果。为此&#xff0c;我们将要素数据序列化为 GeoJSON&#xff0c;并创建一个带有 download​ 属性的 <a>​ 元素&#xff0c;该属性会触发浏览器的文件保存对话框。同时&#xff0c;我们将在地图…

Linux--07---查看CPU、内存、磁盘

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 常用命令1.查看CPU使用率1.1 top 命令第一行是任务队列信息&#xff1a; top第二行为进程的信息 Tasks第三行为CPU的信息Mem:Swap 1.2 vmstat命令参数详解每个参数的…

Axios配置中的请求响应拦截器

在 Axios 中&#xff0c;你可以配置请求拦截器&#xff08;Request Interceptors&#xff09;和响应拦截器&#xff08;Response Interceptors&#xff09;来处理在请求发送到服务器之前和服务器响应返回客户端之后的逻辑。 请求拦截器 请求拦截器可以在请求被发送到服务器之…

在 Visual Studio Code(VS Code)中调试 .NET Core 程序详细步骤

在 Visual Studio Code 中调试 .NET Core 程序 在 Visual Studio Code (VS Code) 中调试 .NET Core 程序需要配置和安装一些必要的扩展和调试配置。以下是详细步骤&#xff1a; 1. 安装必要的扩展 首先&#xff0c;确保已安装 Visual Studio Code&#xff0c;并添加必要的扩…

CentOS部署NFS

NFS服务端 部署NFS服务端 sudo yum install -y nfs-utils挂载目录 给 NFS 指定一个存储位置&#xff0c;也就是网络共享目录。一般来说&#xff0c;应该建立一个专门的 /data 目录&#xff0c;方便起见使用临时目录 /tmp/nfs&#xff1a; mkdir -p /tmp/nfs #修改权限 chmo…