Toxel 与 PCPC II

embedded/2024/10/18 5:44:36/

题目

Problem L. Toxel 与 PCPC II Toxel 正在参加 PCPC(Pokémon Center Programming Contest)比赛。它写的一段代码中有不少 bug,正在调试。这份代码总共有 n 行,而且经验丰富的 Toxel 已经知道了其中 m 行代码有 bug,并锁 定了这 m 行的具体位置。但是 Toxel 还需要进行一些调试以了解错误的具体细节并修复它们。 Toxel 会进行多次调试。每次调试时,Toxel 可以任选一个 i,使得程序从第 1 行开始,顺序运行完 第 i 行后退出。Toxel 可以通过这 i 行代码运行的一些输出结果来进行 debug。运行这 i 行代码总共需要 i 秒。接下来,Toxel 会一次性地 debug 这 i 行代码,并修复所有这 i 行中的所有 bug。bug 数量越多,修 复所需的时间也越多。设这 i 行代码中现存的 bug 数量为 x,那么 Toxel 需要 x 4 秒来 debug 并完成修 复。修复后,这 i 行代码中将不再存在任何 bug。 PCPC 的赛场争分夺秒。请你帮 Toxel 计算一下,它最短需要多少秒才能完成 debug,修复整个代 码中的所有漏洞? 输入格式 第一行包含两个整数 n,m(1 ≤ m ≤ n ≤ 2 × 105)。 第二行包含 m 个整数 a1, a2, . . . , am(1 ≤ a1 < a2 < · · · < am ≤ n),表示代码中所有有 bug 的行编 号。 输出格式 输出一行一个整数,表示答案。 样例 standard input standard output 3 2 1 3 6 1 1 1 2 20 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 221 提示 对于第一个样例,Toxel 应该选择先运行前 1 行代码,运行消耗 1 秒,debug 消耗 1 4 = 1 秒。接下来 Toxel 应该选择运行前 3 行代码,运行消耗 3 秒,debug 消耗 1 4 = 1 秒。总计消耗 1 + 1 + 3 + 1 = 6 秒。 对于第三个样例,Toxel 可以分别运行前 1, 2, 3, . . . , 13, 14, 16, 18, 20 行来得到最优解

做法

dfs(超时)

#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[200010];
int dfs(int x, int num)
{if (x == m) return a[x] + num * num * num * num;return min(dfs(x + 1, num + 1),a[x]+dfs(x + 1, 1) + num * num * num * num);
}
int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= m; i++)scanf("%d", &a[i]);cout << dfs(1, 1);
}

正解

#include <bits/stdc++.h>
using namespace std;
int n, m;
long long a[200010];
long long dp[200010];
int main()
{scanf("%d%d", &n, &m);for (int i = 1; i <= m; i++)scanf("%lld", &a[i]);sort(a+1,a+1+m);for(int i=1;i<=m;i++) dp[i]=0x3f3f3f3f3f3f3f3f;for(int i=1;i<=m;i++){//dp[i]=a[i]+1ll*i*i*i*i;爆long long了 int j=0;if(i>50) j=i-50;//因为4次方很大,所以bug的数量不可能留很多(减少枚举数量)for(;j<i;j++){dp[i]=min(dp[i],dp[j]+1ll*(i-j)*(i-j)*(i-j)*(i-j)+a[i]);}}cout<<dp[m];
}

wa的原因

1.爆long long了

2.运算过程中没转long long

总结

只想到了dfs写法,没想到怎么转成dp,还想着能不能用二维或多维来处理bug的个数,但感觉行不通。结果题解直接两重for循环解决了。感觉是先确定dp数组的含义?本题dp数组的含义是前i行debug的最短时间。


http://www.ppmy.cn/embedded/44634.html

相关文章

创新入门 | 精益创业:创新企业成功的关键策略

探索精益创业方法如何帮助初创企业在不确定的市场环境中快速成长。了解Steve Blank与Eric Ries如何通过客户验证、快速失败和最小可行产品&#xff08;MVP&#xff09;等原则&#xff0c;引导企业实现持续创新和有效资源利用。本文深入分析精益创业的实践案例&#xff0c;揭示其…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

HarmonyOS 鸿蒙DevEco:导入无法运行提示Sync failed

场景&#xff1a;导入官网下载的案例后导入发现无法运行模拟机&#xff0c;Notifications提示Sync failed... 解决&#xff1a;查看Cause发现是版本问题&#xff0c;通过修改相关内容来解决该问题 1、打开案例地址找到hvigor文件夹 2、打开hvigor-config.json5&#xff0c;将&…

webpack如何实现懒加载

Webpack实现懒加载主要通过代码分割&#xff08;Code Splitting&#xff09;技术&#xff0c;它允许将代码拆分成多个bundle&#xff0c;然后根据需要动态加载这些bundle。以下是Webpack实现懒加载的主要步骤和要点&#xff1a; 理解懒加载原理&#xff1a; 懒加载&#xff0…

mysql 函数实现删除字符串中重复的字符

以下是一個使用 MySQL REPLACE 函數去除字符串中重複字符的函數&#xff1a; CREATE FUNCTION remove_duplicate_chars(input_string VARCHAR(255)) RETURNS VARCHAR(255) BEGINDECLARE result VARCHAR(255) DEFAULT ;DECLARE i INT DEFAULT 1;DECLARE j INT DEFAULT 1;DECLARE…

m1系列芯片aarch64架构使用docker-compose安装seata

之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 seata 镜像, 所以就尝试的安装了下, 亲测可用: 使用该命令查看正在运行的 seata 容器 docker ps | grep seata 一. docker-compose.yml 命令编写 volumes 命令所指定的宿主机映射地址, 需要根据自己的电脑环境更换 环…

tsconfig.json配置详解

tsconfig.json配置详解 概述&#xff1a; tsconfig.json 是 TypeScript 编译器的配置文件。通过这个文件&#xff0c;我们可以设置编译选项、指定需要编译的文件、排除不需要编译的文件等。在项目根目录下创建 tsconfig. json, TypeScript Zi7nzi 取该文件并根据其中的配置…

在Linux系统中,使用OpenSSL生成私有证书文件,并提取私钥的步骤如下:

在Linux系统中&#xff0c;使用OpenSSL生成私有证书文件&#xff0c;并提取私钥的步骤如下&#xff1a; 生成私钥&#xff08;如果还没有私钥的话&#xff09;&#xff1a; openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 生成自签名证书&…