news 2026/6/10 15:54:18

洛谷 P1541 [NOIP 2010 提高组] 乌龟棋

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷 P1541 [NOIP 2010 提高组] 乌龟棋

题目背景

NOIP2010 提高组 T2

题目描述

小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。

乌龟棋的棋盘是一行 N 个格子,每个格子上一个分数(非负整数)。棋盘第 1 格是唯一的起点,第 N 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。

乌龟棋中 M 张爬行卡片,分成 4 种不同的类型(M 张卡片中不一定包含所有 4 种类型的卡片,见样例),每种类型的卡片上分别标有 1,2,3,4 四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。

游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到该格子相应的分数。玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的分数总和。

很明显,用不同的爬行卡片使用顺序会使得最终游戏的得分不同,小明想要找到一种卡片使用顺序使得最终游戏得分最多。

现在,告诉你棋盘上每个格子的分数和所有的爬行卡片,你能告诉小明,他最多能得到多少分吗?

输入格式

每行中两个数之间用一个空格隔开。

第 1 行 2 个正整数 N,M,分别表示棋盘格子数和爬行卡片数。

第 2 行 N 个非负整数,a1​,a2​,…,aN​,其中 ai​ 表示棋盘第 i 个格子上的分数。

第 3 行 M 个整数,b1​,b2​,…,bM​,表示 M 张爬行卡片上的数字。

输入数据保证到达终点时刚好用光 M 张爬行卡片。

输出格式

一个整数,表示小明最多能得到的分数。

输入输出样例

输入 #1复制

9 5 6 10 14 2 8 8 18 5 17 1 3 1 2 1

输出 #1复制

73

说明/提示

每个测试点 1s。

小明使用爬行卡片顺序为 1,1,3,1,2,得到的分数为 6+10+14+8+18+17=73。注意,由于起点是 1,所以自动获得第 1 格的分数 6。

对于 30% 的数据有 1≤N≤30,1≤M≤12。

对于 50% 的数据有 1≤N≤120,1≤M≤50,且 4 种爬行卡片,每种卡片的张数不会超过 20。

对于 100% 的数据有 1≤N≤350,1≤M≤120,且 4 种爬行卡片,每种卡片的张数不会超过 40;0≤ai​≤100(1≤i≤N),1≤bi​≤4(1≤i≤M)。

#include<bits/stdc++.h> using namespace std; const int N=360,M=50; int f[M][M][M][M],cnt[5]; int x[N]; int n,m; int main() { cin>>n>>m; for(int i=1;i<=n;i++) { cin>>x[i]; } for(int i=1;i<=m;i++) { int t; cin>>t; cnt[t]++; } f[0][0][0][0]=x[1]; for(int a=0;a<=cnt[1];a++) { for(int b=0;b<=cnt[2];b++) { for(int c=0;c<=cnt[3];c++) { for(int d=0;d<=cnt[4];d++) { int i=1+a+b*2+c*3+d*4; int& t=f[a][b][c][d]; if(a) t=max(t,f[a-1][b][c][d]+x[i]); if(b) t=max(t,f[a][b-1][c][d]+x[i]); if(c) t=max(t,f[a][b][c-1][d]+x[i]); if(d) t=max(t,f[a][b][c][d-1]+x[i]); } } } } cout<<f[cnt[1]][cnt[2]][cnt[3]][cnt[4]]<<endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:55:27

软件测试基本原则与核心价值探析

在数字化转型加速的当下&#xff0c;软件质量已成为企业核心竞争力的关键组成部分。根据2024年全球软件质量报告显示&#xff0c;因软件缺陷导致的业务损失较往年增长37%&#xff0c;这使得测试工作从传统的"找bug"角色&#xff0c;逐步演进为质量保障体系的战略枢纽…

作者头像 李华
网站建设 2026/6/10 2:54:23

AI核心概念解析:提示词、RAG与模型微调,掌握AI技术的关键要素!

简介 文章系统介绍大模型提示词工程基础知识&#xff0c;包括大语言模型、提示词、提示词模板、提示词工程、模型微调和RAG等核心概念。详细解析各技术的优缺点、适用场景及组合使用方法&#xff0c;强调提示词工程并非万能&#xff0c;需根据任务特点合理选择技术方案&#x…

作者头像 李华
网站建设 2026/6/9 15:43:33

AI元人文构想:迈向价值共生的学习型文明(三)

AI元人文构想&#xff1a;迈向价值共生的学习型文明&#xff08;三&#xff09;想象这样一个黎明&#xff1a;城市的自动驾驶网络在晨雾中苏醒。它们不再只是运输工具&#xff0c;更是一个个流动的伦理剧场。当不可避免的碰撞即将发生&#xff0c;系统不会默默执行某个遥远工程…

作者头像 李华
网站建设 2026/6/10 3:08:41

Open-AutoGLM课表自动同步从0到1(资深工程师私藏配置方案)

第一章&#xff1a;Open-AutoGLM课表同步的核心价值与应用场景Open-AutoGLM 作为一款面向教育场景的自动化课表同步工具&#xff0c;深度融合大语言模型能力与课程管理系统&#xff08;CMS&#xff09;&#xff0c;实现了跨平台、高精度的课程数据智能对接。其核心价值在于减少…

作者头像 李华
网站建设 2026/6/9 19:50:21

【探索实战】把 Kurator 写成“运维作业系统”:按 Day0/Day1/Day2 方法论落地 Fleet 多集群治理基线(交付/观测/策略/发布/备份/存储)

开篇 说明&#xff1a;本文所有能力描述、组件定位、依赖关系、安装/配置命令、YAML 示例字段均基于 Kurator 官方资料&#xff08;kurator.dev 官方文档、kurator-dev/kurator 官方仓库及其 examples、官方 Helm charts 等&#xff09;整理与“结构化改写”。 1&#xff09;为…

作者头像 李华