Educational Codeforces Round 121 (Rated for Div. 2) C. Monsters And Spells

news2024/11/23 3:49:56

翻译:

Monocarp又在玩电脑游戏了。他是个巫师学徒,只会一个咒语。幸运的是,这个法术可以伤害怪物。

他目前所在的关卡包含𝑛个怪物。他们中的𝑖-th在关卡开始后𝑘𝑖秒出现,并拥有ℎ𝑖生命值。作为附加约束,对于所有1≤𝑖≤𝑛,ℎ𝑖≤𝑘𝑖。所有𝑘𝑖都是不同的。

Monocarp可以在关卡开始后的正整数秒数的时刻施放法术:1、2、3、…如果他在前一秒没有施法,伤害为1。否则,让前一秒的伤害为𝑥。然后他可以选择伤害为𝑥+1或1。法术使用法力值:施放伤害为𝑥的法术使用𝑥法力值。法力值不会回复。

要杀死𝑖-th怪物,Monocarp必须在怪物出现的确切时刻施放至少ℎ𝑖的伤害法术,即𝑘𝑖。

注意,即使当前秒内没有怪物,单果也可以施放该法术。

施法所需的法力值是所有施法法术的法力值之和。计算Monocarp杀死所有怪物所需的最小法力值。

我们可以看到,在问题的限制条件下,玩家总是有可能杀死所有怪物。

输入
第一行包含一个整数𝑡(1≤𝑡≤104)——测试用例的数量。

测试用例的第一行包含一个整数𝑛(1≤𝑛≤100)——关卡中的怪物数量。

测试用例的第二行包含𝑛整数𝑘1<𝑘2<⋯<𝑘𝑛(1≤𝑘𝑖≤109)-从开始𝑖-th怪物出现的秒数。所有𝑘𝑖都是不同的,𝑘𝑖是按递增顺序提供的。

测试用例的第三行包含𝑛整数ℎ1,ℎ2,…,ℎ𝑛(1≤ℎ𝑖≤𝑘𝑖≤109)-𝑖-th怪物的生命值。

所有测试用例中𝑛的总和不超过104。

输出
对于每个测试用例,打印一个整数- Monocarp杀死所有怪物所需的最小法力值。

例子
inputCopy
3.
1
6
4
2
4个5
2 - 2
3.
5 7 9
2 1 2
outputCopy
10
6
7
请注意
在这个例子的第一个测试案例中,Monocarp可以在开始后3、4、5和6秒施放伤害分别为1、2、3和4的法术。6秒时造成的伤害为4,这确实大于或等于出现的怪物的生命值。

在这个例子的第二个测试用例中,Monocarp可以在开始时施放3、4和5秒的法术,伤害分别为1、2和3。

在这个例子的第三个测试案例中,Monocarp可以在开始时施放4,5,7,8,9秒的法术,伤害分别为1,2,1,1和2。

思路:

刚开始看到题,第一感觉是,只需要判断,中间区间能不能到达怪物的血量,后来想一下,如果后一个能到达,但是后后面的根据前一个不能到达该怎么办,那么不能到达的前边就不能再从1开始加,就需要从前的来继承。n只有100个,感觉可以暴力,每次也就往后暴力100个,如果当前减少,从当前的值开始加遍历后边的如果有不能到达,那就再退后前一个值,来累加,每次这样。最后肯定是能全部到达的,但是感觉太麻烦了(本人太懒了~~~,想了想有没有什么智慧方法,思维题的应该有更巧妙的做法,而不是 暴力(主要我太菜了,刚开始就想到了暴力,后来发现从后面来更新怪物要求血量,这样就可以保证每次可以到达,如果后一个减去中间区间大于当前值,那么如果取当前值肯定满足不了,那么我们就可以更新它,然后倒着来遍历一遍,我们在进行模拟即可。

代码:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long  ll;
int n,t;
inline __int128 read(){
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}

struct we{
    ll x,y;
}c[105];
void solv(){
    cin>>n;
    for (int i=1; i<=n; i++) {
        cin>>c[i].x;
    }
    for (int i=1; i<=n; i++) {
        cin>>c[i].y;
    }
    for (int i=n-1; i>=1; i--) {
        c[i].y=max(c[i].y,c[i+1].y-(c[i+1].x-c[i].x));
    }
    ll an=0;
    for (int i =1; i<=n; i++) {
        if (i==1) {
            an=(c[i].y+1)*c[i].y/2;
            continue;
        }
        if ((c[i].x-c[i-1].x)>=c[i].y) {
            an+=(c[i].y+1)*c[i].y/2;
        }
        else{
            an+=(c[i-1].y+c[i].x-c[i-1].x+c[i-1].y+1)*(c[i].x-c[i-1].x)/2;
            c[i].y=c[i-1].y+c[i].x-c[i-1].x;
        }
    }
    printf("%lld\n",an);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>t;
    while (t--) {
        solv();
    }
    return 0;
}
 

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

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

相关文章

Java石头剪刀布

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

【iMessage苹果源码家庭推】tils扩大软件安装大概释放事变是由程序员筑造的,很轻易发生MemoryLeak控制

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

[附源码]计算机毕业设计的小区宠物管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

小侃设计模式(十七)-中介者模式

1.概述 中介者模式&#xff08;Mediator Pattern&#xff09;是用来降低多个对象和类之间的通信复杂性&#xff0c;这种模式提供了一个中介类&#xff0c;来封装一组对象之间的交互&#xff0c;它将对象之间的交互委派给中介对象交互&#xff0c;避免了对象之间的直接交互。中…

Vue2基础总结

知识点学了太多还是需要总结复习&#xff0c;否则后面会因为零碎的知识点而感到繁杂&#xff0c;那么今天我来总结一下vue相关的知识点&#xff0c;新学习vue的朋友也可以把这当做一个细致总结&#xff1a; 1.Vue是什么&#xff08;重点&#xff09;&#xff1a; 对于Vue的总…

创建 Vue3.0 工程

1.使用 vue-cli 创建 官方文档 : https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create // 查看vue/cli版本&#xff0c;确保vue/cli版本在4.5.以上 vue --version vue -V// 安装或者升级你的vue/cli、 覆盖安装最新版本; npm install -g vue/cli//1.创建…

C++初阶 stack和queue的模拟实现

作者&#xff1a;小萌新 专栏&#xff1a;C初阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;模拟实现STL库中的stack和queue 考试周结束咯 狠狠的学&#xff01; stack和queue的模拟实现容器适配器Stack模拟实现接口函数一览代码…

艾美捷西妥昔单抗Cetuximab化学性质和文献参考

西妥昔单抗&#xff08;抗EGFR&#xff09;是表皮生长因子受体&#xff08;EGFR&#xff09;的抑制剂。 艾美捷西妥昔单抗Cetuximab 品名&#xff1a;西妥昔单抗&#xff0c;抑制剂 完整名称&#xff1a;西妥昔单抗&#xff08;抗EGFR&#xff09; 同义词名称&#xff1a;C2…

2022年电动车与车辆工程国际会议(CEVVE 2022)

2022年电动车与车辆工程国际会议&#xff08;CEVVE 2022&#xff09; 重要信息 会议网址&#xff1a;www.cevve.org 会议时间&#xff1a;2022年12月19-21日 召开地点&#xff1a;中国北海 截稿时间&#xff1a;2022年12月15日 录用通知&#xff1a;投稿后2周内 收录检索…

CPU、内存占用率高排查

CPU高占用 排查思路 top 命令查看CPU占用率高的进程top -H -p ${pid} 命令查看具体是进程的哪个线程占用CPUprintf ‘%x\n’ ${pid} 将线程的pid转为16进制jstack ${十六进制pid} | grep -A 20 查看线程的基本信息与方法调用栈 模拟排查 [rootVM-24-5-centos www]# top top…

vue可视化管理工具创建项目报错解决errno: -4058;连接超时

vue可视化管理工具创建项目报错解决errno: -4058 简介&#xff1a;vue创建项目时&#xff0c;errno&#xff1a;-4058问题解决&#xff0c;使用vue ui指令时会报连接超时问题解决。 基础材料&#xff1a; 使用的node.js版本&#xff1a;18.12.1 vue版本&#xff1a;4.5.15…

【shell脚本】监控磁盘/内存使用率·检测域名是否正常·一键部署LMNP·拉黑攻击服务器的异常ip

文章目录1、监控2台服务器硬盘利用率脚本实战2、批量检查 5个网站域名是否正常3、统计磁盘使用率&#xff0c;磁盘大于%5 就打印mail 小于 硬盘正常 内存也是一样4、有人攻击我服务器 就拉黑异常ip5、使用for循环安装 批量安装3台服务器 php环境 使用&#xff08;LAMP&#xff…

Web前端开发技术课程大作业:简单的网页制作期末作业——狐妖小红娘(6页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

PM说 | 如何精准的获取用户需求?需求分析到底分析什么?

如何精准获取用户需求&#xff1f;怎么做好需求分析? 文章目录如何精准获取用户需求&#xff1f;怎么做好需求分析?前言一、用户的正在需求是什么二、如何精准的获取用户需求三、实操项目分析四、需求分析的方法总结前言 不知你是否曾遇到这样的处境&#xff0c;听到需求&am…

多线程~实现多线程

实现多线程 进程&#xff1a;是正在运行的程序 是系统进行资源分配和调用的独立单位每一个进程都有它自己的内存空间和系统资源 线程&#xff1a;是进程中的单个顺序控制流&#xff0c;是一条执行路径 单线程&#xff1a;一个进程如果只有一条执行路径&#xff0c;则称为单…

小游戏开发指南及过程中的难点问题

如果仅仅针对个人开发者来讲&#xff0c;要独立开发一款大型游戏几乎无可能&#xff0c;更大成功的可能还是开发一款类似《羊了个羊》这样洗脑的小程序游戏。 所以这里主要论述小游戏开发的情况&#xff0c;也就是小程序游戏&#xff0c;首先从小游戏的开发流程来看&#xff1…

chatGPT:12.12 之后更新的 chatGPT 的本地部署和接口调用,解决 response 403 (无法连接openai服务器)问题

文章目录问题源代码改动Session token 的获取cf_clearance 的获取user-agent 的获取将 config.json.sample 内容修改并移动位置附注&#xff1a;环境配置python > 3.7特别提示playwright & cf_clearancerevChatGPT 版本httpxOpenAIAuth删除 import 中的错误后记问题 因…

web网页设计期末课程大作业:基于HTML+CSS+JavaScript个人书画作品展示HTML模板(6页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Matlab论文插图绘制模板第69期—带误差棒的折线图(Errorbar)

在之前的文章中&#xff0c;分享了一系列Matlab折线图的绘制模板&#xff1a; 这一次&#xff0c;再来分享一种特殊的折线图&#xff1a;带误差棒的折线图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系列&#xff0c;旨在降低大家使用Matl…

C语言判断一个整数是不是素数(质数)、求100以内的所有素数、求前50个素数

目录 一.什么是素数&#xff08;质数 Prime&#xff09; 二.判断一个整数是不是素数&#xff08;质数&#xff09;代码 三.求100以内的所有素数&#xff08;质数&#xff09; 四.输出前50个素数&#xff08;质数&#xff09; 一.什么是素数&#xff08;质数 Prime&#xff0…