IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 牛客寒假算法基础集训营5-A.疫苗小孩 -> 正文阅读

[数据结构与算法]牛客寒假算法基础集训营5-A.疫苗小孩

标签:二分

在这里插入图片描述
在这里插入图片描述

思路

看到数据范围,显然不能三针都枚举,但注意到疫苗一共只能接种三针,且第二第三针才会对手速产生影响,考虑是否可以通过枚举一针,进而确定剩余两针的位置,由于三针疫苗是有先后顺序的,所以显然枚举第二针然后往前找第一针和往后找第三针会比较好操作,将能够打疫苗的日子存储到a中,它是从小到大排列的,所以可以使用二分

那么就是枚举第二针,第一针和第三针应该找距离相差k天最近的位置,注意这里使用的是lower_bound,它找到的是第一个大于等于目标的位置,所以返回的位置可能不是恰好相差k天的位置,如果是这种情况就需要和另一侧比较一下谁更接近相差k天的位置,还有可能会返回当前位置,显然不能两针在一天打,那么就应该前移一位

代码实现

#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
const int N=1e6+5;
int n;
string s;
long long k,w,q;
int a[N];
int main(){
    cin >> n;
    cin >> s;
    cin >> k >> w >> q;
    int cnt = 0;
    for(int i = 0; i < n; i++){
    	if(s[i] == '0') a[++cnt] = i+1;
	} 
	int pre = 0, nxt = 0;
	long long ans = 0; 
	a[0] = -1e9;       //将数组两侧初始化,防止找到外面 
	a[cnt+1] = 1e9;
	for(int i = 1; i < cnt; i++){
		long long m1 = 0, m2 = 0;     
		pre = lower_bound(a+1, a+i-1, a[i] - k)-a;
		nxt = lower_bound(a+i+1, a+cnt+1, a[i] + k)-a;
		if(pre == i || abs(k-a[i]+a[pre]) > abs(k-a[i]+a[pre-1])) pre--;
		if(nxt != i+1 && abs(k-a[nxt]+a[i]) > abs(k-a[nxt-1]+a[i])) nxt--;
		m1 = max(m1, w-abs(k-(a[i]-a[pre]))*q);//由于m1,m2初始化为0,所以在手速提升为负数时会取较大值0 
		m2 = max(m2, w-abs(k-(a[nxt]-a[i]))*q);//这样就保证了答案最大 
		ans = max(ans, m1+m2);
	}
	cout << ans;
	return 0;
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:25:36  更:2022-02-19 01:27:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:43:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码