当前位置: 首页 > news >正文

CF1443C题解

CF1443C题解

  • 题目
    • 链接
    • 字面描述
      • 描述
      • 输入描述
      • 输出描述
      • 样例输入1
      • 样例输出1
  • 思路
    • 分析
    • 1:二分
    • 2:贪心
  • 代码实现

题目

链接

http://oi.hdoi.cn/training/8/problem/CF-1443C

字面描述

描述

小 A 刚刚结束考试,他想庆祝一下准备自己做一顿大餐,但是他发现自己还不会做饭,于是只能去点外卖。他在手机上下单了 n 道菜,每一道菜来自不同的餐厅,对于每一种菜,他可以选择让餐厅快递员送,也可以选择自己到店去取。第 i 道菜让餐厅送需要的时间为 a
i

,自己去拿需要的时间为 b
i

。注意自己去取的时候,快递员也可以同时在送。

问他最少需要多久可以把所有的菜都送到家里。

输入描述

第一行包含一个正整数 t ( 1≤t≤2⋅10
5
)表示测试数据的组数。

每组数据的第一行包含一个整数 n ( 1≤n≤2⋅10
5
)表示小 A 想要点的菜数。

第二行包含 n 个整数 a
1

…a
n

( 1≤a
i

≤10
9
) 表示第 i 道菜由快递员送所需要的时间。

第三行包含 n 个整数 b
1

…b
n

( 1≤b
i

≤10
9
) 表示第 i 道菜由自己取所需要的时间。

所有测试数据的 n 总和不超过 2⋅10
5

输出描述

对于每个测试输出,输出一个整数,即所有菜取到的最短时间。

样例输入1

4
4
3 7 4 5
2 1 2 4
4
1 2 3 4
3 3 3 3
2
1 2
10 10
2
10 10
1 2

样例输出1

5
3
2
3

思路

分析

若让外卖员送餐,时间花费将是其中时间的最大值
若让自己取餐,时间花费是自己取得时间总和

1:二分

二分最终花费时间mid;
小于mid外卖员送的时间标记为外卖员送
剩下的自己取,时间求和,与mid比较
二分

2:贪心

将外卖员花费时间从小到大排序
求出自取时间后缀和
循环一边求时间取最小值

代码实现

#include<bits/stdc++.h>
using namespace std;
#define ll long long

const int maxn=2e5+10;
const int inf=1e9;
int t,n,ans;
int a[maxn],b[maxn];
bool vis[maxn];
inline bool check(int k){
	ll cnt=0;
	for(int i=1;i<=n;i++)vis[i]=false;
	for(int i=1;i<=n;i++){
		if(a[i]<=k)vis[i]=true;
	}
	for(int i=1;i<=n;i++){
		if(!vis[i])cnt=(ll)cnt+b[i];
	}
	if(cnt>k)return false;
	return true;
}
int main(){
	cin>>t;
	while(t--){
		ans=0;
		cin>>n;	
		for(int i=1;i<=n;i++)cin>>a[i];
		for(int i=1;i<=n;i++)cin>>b[i];
		int l=0,r=inf;
		while(l<=r){
			int mid=(l+r)/2;
			if(check(mid)){
				ans=mid;
				r=mid-1;
			}
			else l=mid+1;
		}
		cout<<ans<<endl;
	}
	return 0;
}

相关文章:

  • Tomcat相关概念
  • 网上商城之订单
  • 数学建模----拟合的实现
  • v-bind用法详解
  • Java实现随机人名抽取
  • 泰克TDS3012C数字荧光示波器TDS3012C
  • LSTM介绍理解
  • 深度学习——day27 class1 week3 神经网络概览及表示
  • 六级高频词汇——Group06
  • 云计算(一)-理解云计算
  • JavaEE——No.1 多线程案例
  • MySQL如何优化性能
  • 【C语言】自定义类型—位段、枚举、联合体
  • opencv从入门到精通 哦吼 05
  • 计算机毕业设计 基于HTML+CSS+JavaScript 大气的甜品奶茶美食餐饮文化网页设计与实现23页面
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【刷算法】求1+2+3+...+n
  • C++11: atomic 头文件
  • css的样式优先级
  • export和import的用法总结
  • HTTP 简介
  • java8-模拟hadoop
  • js对象的深浅拷贝
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • PHP面试之三:MySQL数据库
  • Promise初体验
  • spring security oauth2 password授权模式
  • Terraform入门 - 3. 变更基础设施
  • Vue官网教程学习过程中值得记录的一些事情
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云应用高可用服务公测发布
  • 电商搜索引擎的架构设计和性能优化
  • 前端面试题总结
  • 日剧·日综资源集合(建议收藏)
  • 小程序01:wepy框架整合iview webapp UI
  • 学习JavaScript数据结构与算法 — 树
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 异常机制详解
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​什么是bug?bug的源头在哪里?
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (三)终结任务
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)Linux Shell编程——输入输出重定向
  • (推荐)叮当——中文语音对话机器人
  • (一)appium-desktop定位元素原理
  • (一)UDP基本编程步骤
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Windows2003安全设置/维护