C. Yet Another Tournament(贪心)

news2024/11/15 12:42:13

Problem - C - Codeforces

 

通用领域

医学

计算机

金融经济

你正在参加另一场比赛。有n+1个参与者:你和其他n个对手,编号从1到n。

每两名参与者将相互竞争一次。如果对手i和对手j比赛,他获胜当且仅当i>j。

当我的对手和你对弈时,一切都变得有点复杂。为了赢下对手i,你需要准备至少ai分钟的比赛——否则,你会输给对手。

你总共有m分钟的时间准备比赛,但你一次只能准备一场比赛。换句话说,如果你想赢下对手p1,p2,…,pk,你需要花ap1+ap2+⋯⋯apk分钟来准备-如果这个数字大于m,你无法同时赢下所有这些对手。

每位选手的最终名次等于获胜次数加1的选手数。例如,3个选手各5胜,1个选手3胜,2个选手各1胜,则前3名获得第一名,第4名获得第四名,最后2名获得第五名。

计算如果你准备比赛的总时间不能超过m分钟,你可以达到的最小可能位置(越低越好)。

输入

第一行包含一个整数t(1≤t≤104)——测试用例的数量。

每个测试用例的第一行包含两个整数n和m(1≤n≤5⋅105;0≤m≤∑i=1nai) -你的对手数量和你准备的总时间。

每个测试用例的第二行包含n个整数a1,a2,…,an(0≤ai≤1000),其中ai是为了战胜第i个对手而需要准备的时间。

它可以保证所有测试用例的n之和不超过5⋅105。

输出

对于每个测试用例,如果你准备比赛的总时间不超过m分钟,打印出你可以参加比赛的最小地点。

例子

inputCopy

5

4 401

100 100 200 1

3 2

1 2 3

5 0

1 1 1 1 1 1

4 0

0 1 1 1

4 4

1 2 2 1

outputCopy

1

2

6

4

1

请注意

在第一个测试案例中,你可以为所有对手做准备,因此你将赢得4场比赛并获得第一名,因为你的所有对手赢得的比赛不超过3场。

在第二个测试案例中,您可以针对第二个对手进行准备并获胜。结果,你会有1胜,对手1胜1负,对手2胜1负,对手3胜3负。所以,对手3将获得第一名,其他所有参与者,包括你,获得第二名。

在第三个测试案例中,你根本没有时间准备,因此你将输掉所有游戏。因为每个对手都至少赢了1次,所以你将获得最后一名(第6名)。

在第四个测试案例中,你没有时间准备,但你仍然可以战胜第一个对手。结果是,对手1没有胜利,你1次胜利,其他所有人至少2次胜利。所以你的位置是4。

题解:

由于下标大的一定可以赢下标小的,下标1~n每个人最少赢的场数为i-1,最多赢的场数是赢了我+1

变为i,我们先假设他们都赢了我,赢得场数为i

我们应该想想把分配时间,分配给哪几个人

先不管其他因素,要想我单纯赢得场数最多,应该取需要时间最少的那几个人

我们就先对时间进行排序,

但是通过样例2发现,取第二个人是最优的(赢得场数相同的人名次是一样的)

3 2

1 2 3

所以还要考虑其他因素,假如排完后,最多前w个人的时间相加是 <= m,

那我们先考虑前w个人,如果前w个人出现他的原本编号为w + 1,由于我们是假设都赢过我的,但是这个人现在被我赢了,所以,他赢得场数变成了w,我的名次就更进一步了,

接下来我们在考虑,w 后面的人如果出现一个人原本的编号是w+1,我们看看如果我们不赢第w个人,而赢这个人是否时间足够,如果足够,我赢得场数还是w,但是就像刚才分析的,那个人赢的场数就变成了w,我的名次更进一步,

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<stack>
#include<set>
using namespace std;
#define int long long
typedef pair<int,int> PII;
const int N = 2e5 + 10;
PII a[500005];
int n,m;
void solve()
{
	cin >> n >> m;
	for(int i = 1;i <= n;i++)
	{
		cin >> a[i].first;
		a[i].second = i;
	}
	sort(a+1,a+1+n);
	int w = 0;
	for(int i = 1;i <= n;i++)
	{
		if(m - a[i].first >= 0)
		{
			m -= a[i].first;
			w++;
		}
		else
		{
			break;
		}
	}
	int f = 0;
	for(int i = 1;i <= w;i++)
	{
		if(a[i].second == w+1)
		{
			f = 1;
			break;
		}
	}
	for(int i = w + 1;i <= n;i++)
	{
		if(a[i].second == w+1)
		{
			if(m - a[i].first + a[w].first >= 0)
			{
				f = 1;
				break; 
			}
		}
	}
	if(f)
	w++;
	cout << n - w + 1<<'\n';
}
//1 -7 1 -7
signed main(){
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
	cin >> t;
    while(t--)
	{

		solve();
	} 
}
//3 3 2 2 1 0
//1 2 1 1 1 0

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

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

相关文章

rabbitmq+netcore6 【4】Routing:路由

文章目录1&#xff09;前言2&#xff09;Direct exchange 直接类型的交换机3&#xff09;Multiple bindings 多绑定4&#xff09;Emitting logs 发送日志5&#xff09;Subscribing 订阅6&#xff09;综合以上代码准备工作生产者消费者1消费者2消费者3运行结果官网参考链接&…

USB大容量存储设备浅析

一 USB 设备类 SB 引入了设备类的概念&#xff0c;根据每一类驱动程序的功能将USB设备分为几大类&#xff0c;标准的几大类包括&#xff1a; 大容量存储类 网络类 集线器类 串行转换器 音频类 视频类 图像类 调制解调器 打印机 HID(Human Interface Device 人机接口设备)每一…

我记不住的那些编程语言的语法(数组)-1

背景&#xff1a;我记不住各种语言的语法&#xff0c;例如C、Java、Go、Python、JavaScript&#xff0c;大概就是常用的这几种语言&#xff0c;每种语言有其自己的语法规范&#xff0c;有的时候会记混了&#xff0c;所以想记录一下细节。这个系列会不定期的更新&#xff0c;本期…

一路坎坷,入局到突破【2022年度总结】

秃秃 1> 来到CSDN&#xff1a; 2019年5月时决定只身一人去外省实习&#xff0c;顺便在CSDN这个“资源库”注册了一下账号。直到我20年在公司做技术分享时&#xff0c;才真正开始在CSDN上的创作&#xff1b; 21年的时候也只是把CSDN当做笔记&#xff0c;就自己写一写&…

行业洞察|猴子可以打字,动物走进元宇宙还有多远?

很多学者和专家认为&#xff0c;人类与动物的区别在于语言的使用。人类可以使用语言&#xff0c;但是动物不会。其实也许是我们人类听不懂动物的语言&#xff0c;并不是他们不会使用。本质在于沟通的媒介不同&#xff0c;导致我们无法相互交流。但是&#xff0c;埃隆马斯克&…

App原型设计规范

一、界面尺寸 1.ios分辨率 2.android界面尺寸 ① 安卓分辨率 ②常见安卓手机分辨率及尺寸 一般情况下大家在设计app端原型的时候&#xff0c;由于现在ios和安卓慢慢在趋向一致&#xff0c;所以基本上都只会设计一套原型&#xff0c;尺寸方面一般都是按照iphone6的750*1344(2倍…

Django 数据备份dumpdata 踩的坑

项目背景&#xff1a; 项目使用的是sqlite数据库&#xff0c;要求备份除了网络表之外的所有数据 实施方案&#xff1a; python3 manage.py dumpdata --exclude network.TRoute --indent 2 --format json > aq3.json 方案操作结果是&#xff1a; 查看aq3.json如下&#xff…

一文详解GCC7、CUDA 11.2、CUDNN部署

在部署之前&#xff0c;需要了解下python-tensorflow-cuDNN-CUDA版本对应关系,以便能够完全兼容下文以此版本为例部署gcc-7.3.1gpu driver-460.106.00cuda-11.2cudnn-8.1.1一.gcc部署1.安装[rootgpu ~]# yum -y install centos-release-scl [rootgpu ~]# yum install devtoolse…

《收获,不止Oracle》索引细化

1.索引知识图框 2.索引探秘 2.1 BTREE索引 索引是建在表的具体列上的&#xff0c;其存在的目的是让表的查询变得更快&#xff0c;效率更高。表记录丢失关乎生死&#xff0c;而索引丢失只需重建即可。 索引却是数据库学习中最实用的技术之一。谁能深刻地理解和掌握索引的知识&…

Spring gateway websocket自定义负载均衡

业务需求 公司IM服务主要基于netty实现websocket&#xff0c;为保证在线用户channel通道畅通故一直使用单机运行。现由于公司业务增加需要增加IM集群&#xff0c;由于channel通道不能缓存&#xff0c;故急需一套可以完整兼容之前功能的方案。 技术选型 1、采用spring websocke…

Bonree ONE荣获信通院“2022IT新治理年度明星产品”

今日&#xff0c;由信通院主办的“GOLFIT新治理领导力论坛”正式召开&#xff0c;论坛上公布了2022IT新治理年度评选活动的结果&#xff0c;博睿数据一体化智能可观测平台Bonree ONE凭借卓越的产品力以及优秀的用户体验&#xff0c;从一众产品中脱颖而出&#xff0c;获得“2022…

spring 事务@Transantional 失效及解决方案和总结

1、线程中方法&#xff0c;事务会失效 2、线程中方法&#xff0c;事务会失效。即使在线程方法上增加Transactional注解 3、事务正常回滚&#xff0c;A方法调用B的普通方法 4、事务正常回滚。A方法调用B的private普通方法 6、会抛出NullPointerException异常。 Methods ann…

rock3a: 基于自建数据集+yolov5s模型的rknn模型训练部署全流程

上一篇文章其实已经详述了模型训练到部署的整个流程&#xff0c;但是数据集到模型都是用的官方的coco数据集&#xff0c;这里为了记录开发板的模型训练到部署的整个流程&#xff0c;重新开了一篇文章进行记录。 首先准备数据集和rockchip官方推荐的yolov5源代码 这里需要注意的…

基于Node.js Vue企业产品展示网站

摘 要随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&am…

CAN201-Computer Network(2)

文章目录4. Network Layer4.1 Router4.1.1 Input port functions4.1.2 Destination-based forwarding4.1.3 Switching fabrics4.1.4 Input port queueing4.1.5 Output ports4.2 Internet Protocol4.2.1 IP fragmentation, reassembly4.3 IPv4 addressing4.3.1 Subnets4.3.2 Net…

高等数学(第七版)同济大学 习题11-4 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题11-4 函数作图软件&#xff1a;Mathematica 1.设有一分布着质量的曲面Σ&#xff0c;在点(x,y,z)处它的面密度为μ(x,y,z)&#xff0c;用对面积的曲面积分表示这曲面对于x轴的转动惯量.\begin{aligned}&1. \ 设有一分…

IB生物课程介绍与Topic 1: Cell Biology考点分享

准备让孩子就读国际学校或者孩子正在国际学校就读的家长肯定听说过“IB”或者“IB班”&#xff0c;那IB究竟是什么呢&#xff1f;IB与IB课程 IB是International Baccalaureate&#xff08;国际文凭&#xff09;的简称&#xff0c;其课程体系国际文凭大学预科课程&#xff08;In…

Educational Codeforces Round 141 (Rated for Div. 2)A——C

ps&#xff1a;先自我检讨...自从世界杯开始后&#xff0c;就一直摆烂到现在。直到打了今年的第一场cf&#xff0c;看见打的这么菜&#xff0c;真是想remake/。后面我会陆陆续续的补完前段时间没有打的比赛... Dashboard - Educational Codeforces Round 141 (Rated for Div. …

ReentrantLock

目录 ReentrantLock ReentrantLock语法 ReentrantLock可重入 ReentrantLock可打断 ReentrantLock锁超时 ReentrantLock解决哲学家就餐问题 ReentrantLock公平锁 ReentrantLock条件变量 ReentrantLock ReentrantLock 相比于synchronized的特点 : 可中断:比如A线程拥有…

基于移动最小二乘法的曲线曲面拟合论文阅读笔记

基于移动最小二乘法的曲线曲面拟合论文阅读笔记 论文地址:http://www.cnki.com.cn/Article/CJFDTotal-GCTX200401016.htm 一、Problem Statement 传统的曲线(曲面)拟合方法一般使用最小二乘法&#xff0c; 通过使误差的平方和最小&#xff0c; 得到一个线性方程组&#xff0…