P3619 魔法 洛谷 题解

news/2025/1/16 18:56:09/文章来源:https://www.cnblogs.com/123lbh321/p/18675600

魔法

题目描述

cjwssb 知道是误会之后,跟你道了歉。你为了逗笑他,准备和他一起开始魔法。不过你的时间不多了,但是更惨的是你还需要完成 \(n\) 个魔法任务。假设你当前的时间为 \(T\),每个任务需要有一定的限制 \(t_i\) 表示只有当你的 \(T\) 严格大于 \(t_i\) 时你才能完成这个任务,完成任务并不需要消耗时间。当你完成第 \(i\) 个任务时,你的时间 \(T\) 会加上 \(b_i\),此时要保证 \(T\) 在任何时刻都大于 \(0\),那么请问你是否能完成这 \(n\) 个魔法任务,如果可以,输出 \(\texttt{+1}\texttt{s}\),如果不行,输出 \(\texttt{-1}\texttt{s}\)

输入格式

第一行:一个整数 \(Z\),表示有 \(Z\) 个测试点。

对于每个测试点:

第一行:两个整数 \(n,T\),表示有 \(n\) 个任务,你一开始有 \(T\) 的时间。

接下来 \(n\) 行,每行 \(2\) 个数字,\(t_i\)\(b_i\)

输出格式

对于每个测试点,输出 \(\texttt{+1}\texttt{s}\) 或者 \(\texttt{-1}\texttt{s}\)

样例 #1

样例输入 #1

1
2 13
1 -9
5 -3

样例输出 #1

+1s

提示

对于 \(20\%\) 的数据,\(n\leq10\)

对于 \(100\%\) 的数据,\(n\leq10^5,Z\leq10,t_i\leq10^5,T\leq10^5,-10^5\leq b_i\leq 10^5\)

By lantian

\(\LaTeX\) By ⚡炭治郎⚡

题目大意

给定一个时间\(T\),要完成\(n\)个任务,每个任务两个量,一个是\(t_i\),一个是\(b_i\)
\(t_i\)是当\(T\)严格大于\(t_i(\)\(t_i\leq T)\)时可以完成本任务 。

\((\)注意!完成任务不消耗时间!\()\)

\(b_i\)是完成任务后所加的时间。
询问在\(T\)大于零的情况下能否能完成所有任务,能输出\(+1s\),不能输出\(-1s\)

思路

贪心,将任务分成两部分,一部分是\(b_i>0\)的,另一部分是\(b_i\leq0\)的,如果是第一部分直接按照\(t_i\)从小到大排序,然后进行模拟,有无法完成的就输出\(-1s\),如果是第二部分,按照\(b_i+t_i\)从大到小进行排序,为什么呢?看下面一组样例:

1
2 4
4 -1
3 -4

如果还按照第一种方式排序,会先完成最后一项任务,导致无法完成第一项任务而输出\(-1s\),但是本样例是输出\(+1s\)的,而按照\(b_i+t_i\)从大到小进行排序就可以避免出错。
最后由于要求\(T\)始终大于\(0\),所以在模拟第二部分的数时加一个\(T\)是否大于\(0\)的特判,不满足就输出\(-1s\)

\(CODE:\)

#include<bits/stdc++.h>
using namespace std;
struct node{long long w,v;
}a[100001],b[100001];
int cmp(node x,node y){return x.v<y.v;
}
int cmp1(node x,node y){return x.w+x.v>y.w+y.v;
}
int idx,idy;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);long long tt,n,m;cin>>tt;while(tt--){for(int i=1;i<=idx;i++){a[i].w=0;a[i].v=0;}for(int i=1;i<=idy;i++){b[i].w=0;b[i].v=0;}idx=0;idy=0;cin>>n>>m;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;if(y>0){a[++idx].w=x;a[idx].v=y;}else{b[++idy].w=x;b[idy].v=y;}}sort(a+1,a+idx+1,cmp);sort(b+1,b+idy+1,cmp1);int t=0;for(int i=1;i<=idx;i++){if(a[i].w>=m){cout<<"-1s"<<"\n";t=1;break;}else{m+=a[i].v;}}if(t){continue;}for(int i=1;i<=idy;i++){if(b[i].w>=m){cout<<"-1s"<<"\n";t=1;break;}else{m+=b[i].v;}if(m<=0){cout<<"-1s"<<"\n";t=1;break;}}if(t){continue;}cout<<"+1s"<<"\n";}return 0;
}

后记

最开始以为是道水题,结果码力不够打了好一会儿

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABC 337 G(主席树)

最近刚学完主席树,找了道题巩固一下,还是非常有收获的。 题目链接:problem 若只让求\(f(1)\),则还是比较简单的——用权值树状数组维护\(dfs\)路径上的数,每次查一下在 递归路径中\(>\)当前结点值 的结点数量,累加起来即为\(f(1)\)。 可是题目要求将\(f(1)到f(n)\)全部…

28. 事件处理

一、事件与事件处理 1.1、什么是事件事件是程序收到外界的输入,处于某种状态时自动发送的信号。事件有固定的类型,每种类型有自己的处理函数,用户只要重写这些函数,即可达到特定的目的。通过事件可以用一个控件监测另外一个控件,并可过滤被监测控件发出的事件。可视化应用…

2025上半年

孩子们,正睿补习计划重启了。 自建题单:ZR 2022 summer B - Virtual Judge P10447 最短 Hamilton 路径 - 洛谷 | 计算机科学教育新生态 求从 \(1\) 号点出发恰好经过每个点一次并且最终回到 \(1\) 号点的最短路径。 设 \(dp_{i,s}\) 表示恰好经过了集合 \(s\) 中的点一次,当…

Agent FFT

Agent FFT请你根据 https://www.cnblogs.com/CDOI-24374/p/17733240.html 这篇文章,仿照写一个好的,以下是一篇仿照《Azune FFT》风格的文章: Azune FFT:异界之战 可能是 Azune 童话系列。感谢 int_R 提供灵感与素材,让奇幻之光照亮一切! ——题记 「报告,INQ。已抵达 …

2025/1/16

今天继续学习了Android开发的相关知识,做手机端的app今天学的是用xml文件控制页面,类似javaweb里面的前端,有许多标签,还解决了运行卡退的一个小问题,需要定义一个主题。

CICD Day9、Argo CD增强持续交付

1、Argo CD简介在Jenkins CI/CD流程中的持续交付阶段,既部署到k8s集群阶段,使用kubectl工具来进行应用程序的部署和更新操作,但这种方式无法实时跟踪应用程序的状态。这将造成用户在CI/CD流程完成后需要额外操作kubernetes集群,以进一步查看应用程序的状态。为了解决这些问…

专为高性能计算和低功耗应用设计的MPF100T-1FCVG484E MPF100TL-FCSG325E MPF100TL-FCVG484I PolarFire FPGA产品系列

‌MPF100TL-FCG484E PolarFire FPGA是Microchip推出的一款高性能、低功耗的FPGA产品系列,特别适用于各种需要高性能计算和低功耗的应用场景‌。‌PolarFire FPGA是Microchip推出的一款高性能、低功耗的FPGA产品系列,特别适用于各种需要高性能计算和低功耗的应用场景‌。这些器…

wordpress 从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。此响应不是合法的JSON响应。解决方法.210721

两种报错方式: 1.此响应不是合法的JSON响应。 2.从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。 情况:媒体服务器上传小文件没问题,大一点的文件报这个错误。 原因:这是因为nginx限制了请求体大小 方案:需要在nginx的虚拟机配置文件中添加…

docker containner挂掉,无法exec进入bash,如何修改文件的终极解决方法.210730

场景: Nginx在bash里面配置的时候挂掉了,然后docker start不起来,exec bash进不去,造成无法再改里面的文件了 解决方法: 1,docker ps –a 可以查到所有docker,包括没有运行的,找到containner ID [root@hecs-29489 ~]# docker ps -a CONTAINER ID IMAGE COMMAND…

HP惠普笔记本重装系统无法引导无法进操作系统的终极解决方法.210804

F9进入BIOS-先进(Advanced)-安全引导配置- 启用传统支持和禁用安全引导.zstitle { width: 280px; text-align: center; font-size: 26px } .zsimgweixin { width: 280px } .zsimgali { width: 280px; padding: 0px 0px 50px 0px } .zsleft { float: left } .zsdiv { display:…

Feign与SpringCloud LoadBalancer实现负载均衡源码分析

SpringCloud LoadBalancer 众所周知,SpringCloud体系中负载均衡的组件有SpringCloud LoadBalancer和Ribbon,Ribbon也在逐渐的被替代掉,因为SpringCloud LoadBalancer性能更高,支持响应式 下面通过hard-coded体现一下SpringCloud的负载均衡 首先有一个【say-hello】服务,提…

JS — 判断语句与循环语句

js的判断语句与循环语句...(* ̄0 ̄)ノ判断语句JavaScript中的if-else语句与C++、Python、Java中类似。直接输出到控制台:test.html中的内容为: <script type="module">let score = 90;if (score >= 85) {console.log("A");} else if (score &g…