(转)upper_bound()与lower_bound()使用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include<iostream>
#include<algorithm>//必须包含的头文件
#include<cstdio>
using namespace std;
int main()
{
int point[10] = {1,3,7,7,9};
int tmp = upper_bound(point, point + 5, 7) - point; //按从小到大,7最多能插入数组point的哪个位置
printf ( "%d\n" ,tmp);
tmp = lower_bound(point, point + 5, 7) - point; //按从小到大,7最少能插入数组point的哪个位置
printf ( "%d\n" ,tmp);
return 0;
}
|
可以当二分查找用
应用:Anton and Making Potions http://codeforces.com/contest/734/problem/C
描述:
1.处理N个potions,一个需要耗费x时间。
2.初始有n个potions,需要消耗x时间,魔法值有s。
3.有两种类型魔法:一种可以减少时间、一种可以减少处理数。
4.分别输入两大类魔法的不同型号效果和消耗魔法值。
5.两种魔法各选择0或1个型号,使得总消耗的时间最短。
思路:枚举第一种魔法,二分查找第二种不超过最大cost值的数即为最优值(贪心)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<cstring>
#include<map>
#define ll long long
using namespace std;
struct T
{
ll fun,cost;
}t1[200010],t2[200010];
bool cmp( const T &a, const T &b){ return a.cost<b.cost;}
int main()
{
ll n,m,k;
int i,j;
while (~ scanf ( "%I64d%I64d%I64d" ,&n,&m,&k))
{
ll x,s;
scanf ( "%I64d%I64d" ,&x,&s);
for (i=1;i<=m;i++)
scanf ( "%I64d" ,&t1[i].fun);
for (i=1;i<=m;i++)
scanf ( "%I64d" ,&t1[i].cost);
for (i=1;i<=k;i++)
scanf ( "%I64d" ,&t2[i].fun);
for (i=1;i<=k;i++)
scanf ( "%I64d" ,&t2[i].cost);
ll res=n*x;
ll cost;
t2[0].cost=-1;
for (i=1;i<=m;i++)
{
cost=t1[i].cost;
if (cost>s) continue ;
T a;
a.cost=s-cost;
int pos=upper_bound(t2,t2+k+1,a,cmp)-t2-1;
if (pos==0){res=min(res,n*t1[i].fun); continue ;}
ll num=n-t2[pos].fun;
if (num<=0){res=0; break ;}
else res=min(res,num*t1[i].fun);
}
for (i=1;i<=k;i++)
{
if (t2[i].cost>s) continue ;
ll num=n-t2[i].fun;
if (num<=0){res=0; break ;}
else res=min(res,num*x);
}
printf ( "%I64d\n" ,res);
}
}
|
转载于:https://www.cnblogs.com/bestwzh/p/6072263.html
(转)upper_bound()与lower_bound()使用方法相关推荐
- C++ upper_bound()和lower_bound()(二分查找中使用)的定义,使用方法和区别
C++ upper_bound()和lower_bound()是涉及二分查找问题一个很好用的工具,熟练使用就不用为二分查找的边界发愁了(不用重复造轮子了) 1. 调用方式 upper_bound有两种 ...
- C++primer学习:关于upper_bound和lower_bound的探究.
今天花了将近一个小时仔细研究了这两个范型算法以及关联容器定义的同名函数.下面就来讲一讲它们的用法和一些细节. [1]首先是范型算法upper_bound与lower_bound;它们要求必须提供至少前 ...
- upper_bound和lower_bound用法(史上最全)
目录 基础用法 用greater<type>()重载 进阶用法(自定义匿名函数) upper_bound进阶 lower_bound进阶 所有代码 两者都是定义在头文件<algori ...
- upper_bound()与lower_bound函数的使用
1679: 查找2 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 给你一个长度是n的序列 ...
- upper_bound()与lower_bound()
2018-2-5 upper_bound 和lower_bound是STL中二分查找的函数,所以效率会比较高. 首先,最形象的一句话: upper_bound(i) 返回的是键值为i的元素可以插入的最 ...
- 浅谈c++中upper_bound与lower_bound的用法
神犇勿喷 在我还是个蒟蒻的时候(现在还是哈),我在网上翻了几篇有关upper_bound和lower_bound的文章,结果发现我全都看不懂非常复杂,为了避免再有人重蹈覆辙,我就发了这篇粗制滥造简单易 ...
- upper_bound 和lower_bound彻底搞懂
1. 问题引出 今天在查看ORB_SLAM2注释版源码keyframe.cpp文件的时候,发现注释者的意见: // http://www.cplusplus.com/reference/algori ...
- 二分查找、upper_bound、lower_bound
整理及总结二分查找的判断和边界细节 修改版 package com.leej.binarysearch;import java.util.Arrays;/*** @author jerry* @cre ...
- STL 二分查找 upper_bound和lower_bound用法
STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search . 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...
最新文章
- RanceQuest2_从委托到Lambda_会用(递归数学函数)
- CentOS5.5环境下布署LVS+keepalived
- 2013年上半年全国计算机技术与软件专业技术资格(水平)考试工作安排
- php面试基础项目,PHP面试经典题
- Spring Boot————ApplicationListener实现逃课事件监听
- Qt工作笔记-在QTreeView上实现模型数据的拖拽
- linux添加驱动目录,Android系统添加Linux驱动
- html 为元素附空值,HTML空(void)元素有哪些?
- TypeScript简介
- NSGA2算法中拥挤度计算代码
- 【自考】-计算机网络原理
- 谁是赢家,某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;
- 两台电脑之间实现串口通信
- 日本房地产泡沫破裂后的平民生活
- 基于张量的多元多阶马尔科夫多模态预测方法
- 使用opencv打开笔记本摄像头
- 【凯子哥带你夯实应用层】都说“知乎”逼格高,我们来实现“知乎”回答详情页动画效果
- 第九章SpringBoot整合Spring Data JPA
- 【Python可视化】使用Pyecharts进行奥运会可视化分析~
- 40页PPT|中小学智慧校园顶层设计规划方案(附PPT下载)
热门文章
- Rancher搭建集群
- 解决安装svn后出现Unable to connect to a repository at URL以及认证失败
- DOS BAT批处理定义变量
- 卧底各大程序员圈,才知道什么才是牛逼的程序员!
- 当 HTTP 连接池遇上 KeepAlive 时
- Android --- ERROR: Failed to resolve: xxx Affected Modules: xxx
- Android——怎么在一个 Activity 中销毁另外一个 Activity
- 在servlet中设置的字符编码集为什么还会出现乱码(亲测)
- win7计算机内存占用高,WIN7系统电脑内存占用高的解决办法有哪些
- linux复制文件命令cat ,Linux学习之四(复制移动文件命令cp等及查看文本命令cat等)2017-03-28...