D. Berserk And Fireball(模拟)
题意:
n个战士排成一排,分别有个武力值ai。你有两种法术,一个是火球(花费x个法力,消灭连续k个战士),一个是激怒(花费y个法力,选择相邻两个战士,武力值大的会消灭武力值小的)。求最后留下的战士排列成bi需要的最小法力花费
思路:
因为每个数都不同,所以肯定是划分成多个区间,对每个区间进行操作。
1)1)1) 如果当前区间的长度 len<klen < klen<k :
①区间最大值大于左右端点,那么无解。因为无法消去最大值。
②区间最大值小于等于左右端点,消费就是 len∗ylen*ylen∗y
2)2)2) 如果当前区间的长度 len≥klen ≥ klen≥k :
①区间最大值大于左右端点,那么必须花费一个 xxx ,来把最大值消掉。如果火球更优,那么答案就是 len/k∗x+(len%k)∗ylen/k*x + (len\%k)*ylen/k∗x+(len%k)∗y。可以用最大值把 len%klen\%klen%k 个战士消掉,然后用火球消去连续的 k 。一定有解。如果激怒更优,那么答案就是 x+(len−k)∗yx + (len-k)*yx+(len−k)∗y
②区间最大值小于左右端点,不是必须花费 xxx ,则就直接判断哪种方式更优,同上。
代码有点细节
code
#include<bits/stdc++.h>
using namespace std;
const int man = 2e5+10;
#define ll long long
int a[man],b[man];signed main() {int n,m;scanf("%d%d",&n,&m);int x,k,y;scanf("%d%d%d",&x,&k,&y);for(int i = 1;i <= n;++i)scanf("%d",a+i);for(int i = 1;i <= m;++i)scanf("%d",b+i);a[n+1] = b[m+1] = -1;ll ans = 0;for(int i = 1,j = 0;i <= m+1;++i){int l = j+1,r = j+1,len = 0,maxx =-1;while(r<=n+1&&a[r]!=b[i])maxx = max(maxx,a[r]),r++;if(r>n+1){ans = -1;break;}len = r - l;if(len<k){if(maxx>max(a[l-1],a[r])){ans = -1;break;}else ans += 1ll*y*len;}else{if(maxx>max(a[l-1],a[r])){ans += 1ll*x;len -= k;if(x<1ll*k*y)ans += 1ll*(len/k)*x + 1ll*(len%k)*y;else ans += 1ll*y*len;}else{if(x<1ll*k*y)ans += 1ll*(len/k)*x + 1ll*(len%k)*y;else ans += 1ll*y*len;}}if(a[r]!=b[i])j = r + 1;else j = r;}printf("%lld\n",ans);return 0;
}
D. Berserk And Fireball(模拟)相关推荐
- 使用webgl(three.js)搭建一个3D建筑,3D消防模拟——第三课
使用webgl(three.js)搭建一个3D建筑,3D消防模拟--第三课 项目背景 消防安全一直是各大都市关注的重要课题,在消防体系中,特别是高楼消防体系中,消防系统整体布控与监控,火情有效准确定位 ...
- SDUWH 新星赛线上模拟赛
7-1 factorial 题目描述 In many applications very large integers numbers are required. Some of these appl ...
- springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...
- curl模拟post请求
另外可尝试 postman工具 或者用request 直接请求 CURL 发送POST请求curl -header "Content-Type: application/json" ...
- flask_模拟请求post,get
#coding:utf-8 import requestsres = requests.post(url="http://192.168.135.105:8888/",data={ ...
- 模拟内存计算如何解决边缘人工智能推理的功耗挑战
模拟内存计算如何解决边缘人工智能推理的功耗挑战 How analog in-memory computing can solve power challenges of edge AI inferen ...
- 为放大器模拟输入模块提供可靠的输入过电压保护
为放大器模拟输入模块提供可靠的输入过电压保护 Signal Chain Basics #159: Provide robust input overvoltage protection for amp ...
- 模拟Servlet本质
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
- 2021年大数据Flink(四十):Flink模拟双十一实时大屏统计
目录 Flink模拟双十一实时大屏统计 需求 数据 编码步骤: 1.env 2.source 3.transformation 4.使用上面聚合的结果,实现业务需求: 5.execute 参考代码 实 ...
- Python:模拟登录、点击和执行 JavaScript 语句案例
案例一:网站模拟登录 # douban.pyfrom selenium import webdriver from selenium.webdriver.common.keys import Keys ...
最新文章
- 为什么博图中放置按下按钮无反应_如何更好的设计按钮
- 马斯克的星辰大海,还在继续。“月球电梯,我来啦”
- js json对象转字符串_Mock.js模拟数据实现前端独立开发
- [javaSE] 多线程(join方法)
- java yii_构建 Java 应用程序
- js 操作 iframe
- 计算机密码学奖,上海交通大学计算机科学与工程系(CSE)
- 基于Tiles框架Struts框架的UI 设计—几种组织HTML和JSP视图组件
- linux 22端口被墙,Linode被墙SSH无法连接通过Lish连接方法
- Docker学习(四)Docker镜像原理 镜像commit操作补充
- 搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
- Siebel应用数据结构层次
- FLV方式实现网页FFmpeg推流无插件播放
- A better Tooltip with jQuery
- 云图说 | 勒索病毒防治解决方案
- C++校内模拟赛-06水题
- 【Spring Security】spring security 之初探jwt
- 5分钟成为车联网专家 | 全球首个C-V2X车联网城市级规模示范应用
- 如何让鼠标拖动时变成直线
- 免费多功能转码机器人(小程序转码机器人)