二分算法题目训练(三)——Anton and Making Potions详解
codeforces734C——Anton and Making Potions详解
- Anton and Making Potions
题目描述(google翻译)
安东正在玩一个非常有趣的电脑游戏,但现在他被困在其中一个级别。为了进入下一个级别,他必须准备n个药水。
安东有一个特殊的水壶,可以在x秒内准备一个魔药。此外,他知道两种类型的法术可以加快准备魔药的过程。
这种类型的法术加速了一种魔药的准备时间。有这种类型的m个法术,其中第i个成本为bi manooints并且将每个药水的准备时间改为ai而不是x。
这种类型的法术立即准备了一些魔药。有这样的法术,其中第i个成本为di manapoints并立即创造ci药水。
安东可以使用不超过一种类型的第一种类型的咒语和不超过一种第二种类型的咒语,并且消耗的总数不应超过s。考虑到所有法术都会在安东开始准备魔药之前立即使用。安东希望尽可能快地达到一个新的水平,所以他感兴趣的是他需要花费最少的时间来准备至少n个药水。
- 输入
输入的第一行包含三个整数n,m,k(1≤n≤2·109,1≤m,k≤2·105) - 安东必须制作的药水数量,咒语的数量第一种类型和第二种类型的法术数量。
输入的第二行包含两个整数x和s(2≤x≤2·109,1≤s≤2·109) - 准备一个药水所需的初始秒数和Anton可以使用的manapoints数量。
第三行包含m个整数ai(1≤ai<x) - 如果使用第一个类型的第i个咒语,则准备一个药水所需的秒数。
第四行包含m个整数bi(1≤bi≤2·109) - 使用第一个类型的第i个咒语的manapoints数。
第五行中有k个整数ci(1≤ci≤n) - 如果使用第二种类型的第i个咒语,将立即创建的药水数量。保证ci不减小,即如果i <j,则ci≤cj。
第六行包含k个整数di(1≤di≤2·109) - 使用第二种类型的第i个咒语所需的manapoints数。保证di不降低,即如果i <j,则di≤dj。
- 输出
- 打印一个整数 - 为了准备n个药水而必须花费的最短时间。
- 样例输入 1
20 3 2
10 99
2 4 3
20 10 40
4 15
10 80
- 样例输出 1
20
- 样例输入 2
20 3 2
10 99
2 4 3
200 100 400
4 15
100 800
- 样例输出 2
200
- 问题分析
- 题目隐含的条件是 B 药水的两个数组是非递减的
- 需要二分的是 B 药水的 manapoints 消耗数
- 遍历 A 药水,通过二分选择 B 药水,最后选择一个最小的答案
- 初始化的时候要注意考虑可能 A,B 药水都用不上这种情况
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#define Maxn 2000003 using namespace std; typedef long long int LL; LL n,m,k,x,s,x1,s1; LL a_short_time[Maxn] = {};
LL a_cost[Maxn] = {}; LL b_pro_num[Maxn] = {};
LL b_cost[Maxn] = {}; int main()
{
ios::sync_with_stdio(false);
cin>>n>>m>>k>>x>>s;
LL i = ;
LL ans = n*x;
for(i = ; i <= m; i++)
cin >> a_short_time[i];
a_short_time[] = x;
for(i = ; i <= m; i++)
cin >> a_cost[i];
for(i = ; i <= k; i++)
cin >> b_pro_num[i];
for(i = ; i <= k; i++)
cin >> b_cost[i];
for(i = ; i <= m; i++)
{
if(s >= a_cost[i])
{
LL s1 = s - a_cost[i];
LL l = ,r = k;
while(l < r)
{
LL mid = (l + r) / ;
if(b_cost[mid] <= s1)
{
if(b_cost[mid+] > s1)
{
l = mid;
break;
}
else
l = mid + ;
}
else
r = mid;
}
ans = min(ans,a_short_time[i]*(n-b_pro_num[l]));
}
}
cout << ans;
return ;
}
二分算法题目训练(三)——Anton and Making Potions详解的更多相关文章
- 二分算法题目训练(一)——Shell Pyramid详解
HDU2446——Shell Pyramid 详解 Shell Pyramid 题目描述(Google 翻译的) 在17世纪,由于雷鸣般的喧嚣,浓烟和炽热的火焰,海上的战斗与现代战争一样.但那时,大炮 ...
- 二分算法题目训练(二)——Exams详解
CodeForces732D——Exams 详解 Exam 题目描述(google翻译) Vasiliy的考试期限将持续n天.他必须通过m门科目的考试.受试者编号为1至m. 大约每天我们都知道当天可以 ...
- 二分算法题目训练(四)——Robin Hood详解
codeforces672D——Robin Hood详解 Robin Hood 问题描述(google翻译) 我们都知道罗宾汉令人印象深刻的故事.罗宾汉利用他的射箭技巧和他的智慧从富人那里偷钱,然后把 ...
- Java进阶(三十二) HttpClient使用详解
Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...
- SaltStack 入门到精通第三篇:Salt-Minion配置文件详解
SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ 发布日期:2014-06-09 17:52:16 ##### 主要配置设置 ##### 配置 默认值 ...
- libsvm的安装,数据格式,常见错误,grid.py参数选择,c-SVC过程,libsvm参数解释,svm训练数据,libsvm的使用详解,SVM核函数的选择
直接conda install libsvm安装的不完整,缺几个.py文件. 第一种安装方法: 下载:http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm. ...
- BM算法 Boyer-Moore高质量实现代码详解与算法详解
Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...
- java三篇博客转载 详解-vector,stack,queue,deque
博客一:转载自http://shmilyaw-hotmail-com.iteye.com/blog/1825171 java stack的详细实现分析 简介 我们最常用的数据结构之一大概就是stack ...
- 三:python 对象类型详解一:数字(上)
一:python 的数字类型: a)整数和浮点数 b)复数 c)固定精度的十进制数 d)有理分数 e)集合 f)布尔类型 g)无穷的整数精度 h)各种数字内置函数和模块 二:各种数字类型的详解 1,数 ...
随机推荐
- drbd+nfs+keepalived
写的很详细 理论知识: https://www.cnblogs.com/kevingrace/p/5740940.html 写的很详细 负载: https://www.cnblogs.com/kevi ...
- stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值
我觉得 Qt6 最应该升级的是容器类 stdmap 在遍历的时候,同时获取 key 与 value 非常方便: for(auto& var:map){ qDebug()<<v ...
- JS ES6中export和import详解
1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...
- IIS发布问题解决
一. HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure ://安装AspNetCoreModule托管模块后执行1. net stop wa ...
- iview的table中Tooltip的使用
这篇文章主要介绍了iview-admin中在table中使用Tooltip提示效果. 1. table中文字溢出隐藏,提示气泡展示所有信息 jLongText(item){ item.render = ...
- R_数据操作_高级_04
数学函数: abs(x) 绝对值 sqrt(x) 平方根 ceiling(x) 放回不小于x的最小整数 floor(x) 不小于x的最大整数 trunc(x) 先0方向截取x的整数部分 ...
- 【转】SpringCloud学习笔记(一)——基础
什么是微服务架构 简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进 ...
- 3.Ubuntu/Deepin下安装Monaco/Menlo字体
前段时间在一家公司实习,让IT给电脑安装了Ubuntu系统,用着挺好,但总感觉字体不太好看,网上小伙伴说Monaco字体不错,所以计划安装试试. 看了好多教程,不得不说,一些教程走下来真心是装不成功, ...
- 剑指offer-链表相关
剑指offer面试常考手撸算法题-链表篇 1. 从头到尾打印链表 class Solution { public: // 可以先压栈,再出栈到vector // 时间/空间:O(n) vector&l ...
- ABAP Code Inspector那些隐藏的功能,您都知道吗?
最近有粉丝在后台给我留言,说新知识太多,"学不动了".所谓温故而知新,今天我们就来重温下ABAP里的Code Inspector的用法. 2015年6月,我在SAP社区上写了一篇博 ...