F. Quests(二分)

news2025/1/16 14:43:26

Problem - F - Codeforces

 

有n个任务。如果你完成第i个任务,你将获得ai币。你每天最多只能完成一个任务。然而,一旦你完成了一个任务,在K天内你不能再做同样的任务。(例如,如果k=2,你在第1天做了任务1,那么你在第2天或第3天不能做,但你可以在第4天再做)。

给你两个整数c和d。找出k的最大值,使你在d天内至少能获得c个硬币。如果不存在这样的k,则输出Impossible。如果k可以是任意大的,则输出Infinity。

输入
输入由多个测试案例组成。第一行包含一个整数t(1≤t≤104)--测试案例的数量。测试用例的描述如下。

每个测试用例的第一行包含三个整数n,c,d(2≤n≤2⋅105;1≤c≤1016;1≤d≤2⋅105)--任务的数量,你需要的硬币数量,以及天数。

每个测试案例的第二行包含n个整数a1,a2,...,an(1≤ai≤109)--任务的奖励。

所有测试案例的n之和不超过2⋅105,所有测试案例的d之和不超过2⋅105。

输出
对于每个测试用例,输出以下结果之一。

如果不存在这样的k,输出Impossible。
如果k可以是任意大的,则输出Infinity。
否则,输出一个整数--k的最大值,使你在d天内至少能获得c个硬币。
请注意,检查器是区分大小写的,你应该完全按照给出的字符串来输出。
例子
inputCopy
6
2 5 4
1 2
2 20 10
100 10
3 100 3
7 2 6
4 20 3
4 5 6 7
4 100000000000 2022
8217734 927368 26389746 627896974
2 20 4
5 1
输出拷贝
2
杅眕
不可能的
1
12
0
备注
在第一个测试案例中,在k=2的情况下,在4天内赚取5个金币的方法如下。

第1天:做任务2,赚取2个金币。
第二天:做任务1,赚取1个金币。
第三天:什么都不做。
第四天:做任务2,赚取2个硬币。
总的来说,我们赚了2+1+2=5个硬币。
在第二个测试案例中,我们可以通过做第一个任务赚取100个硬币,在第一天本身就可以赚取超过20个硬币,所以k的值可以任意大,因为我们从来不需要做另一个任务。

在第三个测试案例中,无论我们怎么做,我们都无法在3天内赚到100个硬币。

题解:
首先我们把无限,与不可能的情况去除,

什么时候无限,就是,min(d,n)个前最大的相加>=c,不需要重复加最大的都可完成,

不可能则是每天都是最大的*d都无法达到c,就是不可能

然后就是二分k的最大值,因为根据k的大小,钱数的大小肯定也是单调的

关键是check函数怎么写,

这里看了一下大佬的,觉得写的很简洁,很不错

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define int long long
int a[200050];
void solve()
{

	long long n,c,d;
	cin >> n >> c>>d;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i];
	}
	sort(a+1,a+1+n,greater<int>());
	long long s = 0;
	for(int i = 1;i <= min(n,d);i++)
	s+= a[i];
	if(s >= c)
	{
		cout<<"Infinity\n";
		return ;
	} 
	if(a[1]*d < c)
	{
		cout<<"Impossible\n";

		return ;
	}
	int l = 0,r = 2e5;
	while(l < r)
	{
		int mid = (l + r+1)/2;
		s = 0;
		for(int i = 1;i <= d;i++)
		{
			int id = ((i-1) % (mid+1)+1);
			if(id <= n)
			{
				s += a[id];
			}

		}
		if(s >= c)
		{
			l = mid;
		}
		else
		{
			r = mid-1;
		}

	}
	cout<<l<<"\n";

}
signed main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/27219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

radiantq:jQuery Gantt Package--好使的HTML5甘特图

Radiantq--jQuery Gantt Package是一个真正跨平台的、基于原生 HTML5/jQuery 的实现&#xff0c;带有 2 个不同的甘特图小部件。 部署在众多垂直领域 无论您的应用程序属于哪个领域&#xff0c;甘特图都是基于时间的信息的理想可视化工具&#xff0c;包括在软件开发、施工、钻井…

JNoteHelper 给你的java swing或桌面程序提供一双翅膀

JNoteHelper 使用swing构建的java程序, 主要基于miglayout,swingx,flatlatf, 本来打算作为个人笔记的助手, 但是事与愿违, 发现理想和现实很骨感. 项目基于windows测试及开发 ,所以运行效果图片都基于windows 截图 1. 项目地址 JNoteHelper github地址 gitee地址 gitcode地址…

玩法专利获批,发布4年《Beat Saber》为何持续火爆

从2018年首次上线以来&#xff0c;《Beat Saber》被大家爱了4年多&#xff0c;直到现在热度未减&#xff0c;依然是史上最赚钱的VR游戏之一。该作最开始的概念&#xff0c;就是用红、蓝两色的光剑&#xff0c;根据箭头方向和节奏去切方块&#xff0c;玩法简单爽快&#xff0c;受…

Qt QSS QSlider样式

本文章主要学习QSlider样式 准备下面几张背景图片&#xff1a; 调小图标 、调大图标 ​、QSlider位置图标 ​QSlider划过的背景图标 ​、QSlider未划过的背景图标 ​最终效果图 自己创建一个QSlider工程&#xff0c;此处省略…… CSDN QT大纲&#xff1a;Qt开发必备技术栈学…

[附源码]java毕业设计鞋店销售管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

DM-VERITY流程分析

DM-Verity分析报告 0.问题的表现形式 1.dm-verity的初始化及验证流程 1.1 dm-verity的初始化 初始化dm的log: [ 3.579718] md: Waiting for all devices to be available before autodetect [ 3.586549] md: If you dont use raid, use raidnoautodetect [ 3.594…

Allegro如何录制SCR快捷键操作指导

Allegro如何录制SCR快捷键操作指导 Allegro可以录制SCR快捷键,里面记录了一些操作,类似一个插件,使用的时候可以直接调用,节省时间。下面介绍如何录制 选择file-Script 会出现一个对话框,任意输入一个名字,比如666 然后点击record 比如录制一个打开层面的scr,操作如…

基于matlab的排队系统仿真

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 排队系统是基本的离散事件系统&#xff0c;了解掌握离散事件系统是研究排队系统仿真不可或缺的前提。离散事件系统是指其状态变量只在某些离散时…

SAP-FICO概览培训 的PPT 文档

目录 SAP ERP 系统功能模块概览 财务会计&#xff08;FI&#xff09;、管理会计&#xff08;CO&#xff09; 财务会计&#xff08;FI&#xff09;、管理会计&#xff08;CO&#xff09;需求出发点 FI 与CO灵活性对比 财务会计&#xff08;FI&#xff09; 财务业务一体化平台示…

JSP概述

JSP JSP是Sun为了解决动态生成HTML文档的技术&#xff0c;通过Servlet输出简单html页面信息都非常不方便。如果要输出一个复杂页面的时候&#xff0c;就更加的困难&#xff0c;而且不利于页面的维护和调试。所以sun公司推出一种叫做jsp的动态页面技术来实现对页面的输出繁锁工…

四维轻云地理空间数据协作管理平台的使用流程介绍

倾斜摄影模型和点云数据采集制作完成后&#xff0c;很多行业在进行数据查看管理和共享时具有很大的不便&#xff0c;通常需要依赖专业软件才能在电脑上进行浏览&#xff0c;倘若想将数据分享给他人查看&#xff0c;则需要进行大文件传输以及让对方安装专业软件。现如今&#xf…

年薪百万的程序员,上网都在看什么?

这个问题相信不少人都好奇&#xff0c;我揪出一位年薪百万的程序员老友&#xff0c;翻遍他的收藏夹&#xff0c;总结整理了6个网站&#xff0c;甩出来给大家。 有几个干货网站大家记得当场保存&#xff0c;要不然划过就忘了&#xff01;&#xff01; 国际各行业报告&#xff1…

python 异步线程 实现 异步生产 同步通信

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

傅里叶变换的四种形式

此文转自知乎的jinjin 傅里叶变换的四种形式 - 知乎 傅里叶变换是信号的一种描述方式&#xff0c;通过增加频域的视角&#xff0c;将时域复杂波形表示为简单的频率函数&#xff0c;获得时域不易发现的与信号有关的其他特征。 根据时间域信号x自变量的不同&#xff0c;可以将信号…

sqli-labs/Less-45

这一关有没有报错信息 所以我们不能从报错信息中得知注入类型 我们只能通过登陆成功或者失败去辨别我们判断的注入类型正确与否 然后我们也不懂注入点 所以只能进行尝试了 如果两个参数在SQL语句中都被单引号包裹住 那么假设username为注入点输入如下 username admin# pass…

【强大的数据迁移和恢复解决方案】KernelApps及其产品介绍

KernelApps是 范围广泛的强大的数据迁移和 恢复解决方案 可以根据用户的需求提供多种采购方案 KernelApps提供 交换服务器、Office 365、 电子邮件迁移、Outlook等方面工具 其产品包括数据恢复、文件修复、 数据迁移、电子邮件迁移、 媒体恢复、云备份、云迁移等解决方…

基于32单片机的多功能电子语音时钟

本设计是32单片机的多功能电子语音时钟设计&#xff0c;主要实现以下功能&#xff1a; 1.通过OLED显示时间&#xff0c;日期&#xff0c;温度&#xff0c;湿度等信息 2.到达整点时能够语音播报时间和温湿度 3.可通过按键使语音模块播报时间和温湿度 4.可通过按键调整当前时间&…

Mac M1安装Centos8

M1 芯片 Centos8 百度网盘下载的慢&#xff0c;大家可以直接给我留言&#xff0c;我用奶牛快传分享给大家 链接: https://pan.baidu.com/s/1gT7TnBk5HnT27F82FGht7w?pwd1234 提取码: 1234 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 安装 第一次输入 r 依…

推荐一款高效率前端开发神器,功能太强大了

当前端收到一张设计稿的时候&#xff0c;他们需要考虑非常多的问题。 而第一个摆在面前的问题就是 - 切图。作为连接设计师和前端的重要“纽带”&#xff0c;如果切图不准确&#xff0c;很容易导致最终的产品呈现与设计稿大相径庭。 随之而来的第二个问题就是 - 设计还原。页面…

荧光标记转铁蛋白-(FITC, cy3, cy5, cy7, 香豆素, 罗丹明)

转铁蛋白&#xff08;Tf&#xff09;结合铁是通过与其受体&#xff0c;即Transferrin Receptor 1(TfR1)相互作用而实现的。TfR1 是一种表达于细胞表面的糖蛋白&#xff0c;由两个同源二聚体的亚基通过二硫键连接而成。在细胞表面&#xff0c;Tf与Fe3相互作用形成全铁-Tf&#x…