AcWing 4908. 饥饿的牛

news/2024/11/1 16:33:19/

贝茜是一头饥饿的牛。

每天晚上,如果牛棚中还有干草的话,贝茜都会吃掉其中的一捆。

初始时,牛棚中没有干草。

为了让贝茜不被饿死,农夫约翰制定了 N个给贝茜送干草的计划。

其中第 i个计划是在第 di 天的白天给贝茜送去 bi 捆干草。

这些计划互不冲突,保证 1≤d1<d2<…<dN≤T

输入样例1:
1 5
1 2
输出样例1:
2
样例1解释
两捆干草在第 1 天早上被送到了牛棚,所以贝茜第 1,2 天有干草吃。

输入样例2:
2 5
1 2
5 10
输出样例2:
3
样例2解释
两捆干草在第 1 天早上被送到了牛棚,所以贝茜第 1,2 天有干草吃。

10 捆干草在第 5 天早上被送到了牛棚,所以贝茜第 5 天有干草吃。

输入样例3:
2 5
1 10
5 10
输出样例3:
5
10捆干草在第 1天早上被送到了牛棚,所以贝茜第 1∼5 天都有干草吃。

思路:

这个问题的中心思想就是,把1 ~ t 这段天数看成一个线段,每个 di 天的时候给 bi 捆草,也就是说 di ~ di+bi 这个线段是有草吃的,那想要得到的结果就是在一个大线段中有许多这样的小线段,问大线段上被小线段覆盖过的整数点有多少个。

可以看到,题目中天数的数据范围是10的14次幂,所以说按照你的第一反应,有草吃的那天bool值为1,没草吃bool值为0,然后遍历一遍是行不通的。

注意到 d 的数量,即发草的天数是有限的,N范围内,那既然所有天数看不了,我们就看所有的 d 就好了,回到上面我们讲的思路,也就是每次都看小线段的起始点。我们用一个 k 表示之前的草最多可以吃到哪一天。因为开始 k=0 ,所以用一个 f 来特判一下是不是第一次。

如果 f == 0,说明是第一次,那要看 d 是不是1,是一的话说明第一天有草吃,那当前的草最多就可以吃到 k+b 天,以此更新k。如果d不是1,那说明 d 之前都是没草吃的,这里我们用 res 来记录没有草吃的天数。然后用d+b-1来更新 k 。

如果 f 不是 0 ,说明现在不是第一次发草,那就看 d 和 k 的大小来进行比较就行了,d 大于 k+1 的话说明k ~ d 这段时间没草吃,否则就是有草吃,不断更新 k 值就行了。

需要注意的是,在更新res 的时候,要注意看天数和 t 的关系。

代码:

#include<bits/stdc++.h>
using namespace std;int main(){long long int n , t;cin >> n >> t;long long int d;int b;long long int k = 0;int f = 0;int z = 0;long long int res = 0;for(int i = 0 ; i < n ; i++){cin >> d >> b;if(z == 1)break;if(f == 0){f = 1;if(d == 1){k = k + b;if(k >= t)z = 1;}else{if(d < t)res = res + d - 1;elseres = res + t , z = 1;k = d + b - 1;}}else{if(d > k+1){if(d <= t)res += d-k-1;elseres += t-k , z = 1;k = d + b - 1;}else{k = k + b;}}}// cout << res << "*** " << endl;if(z!=1 && k < t)res += t - k;cout << t - res << endl;return 0;
}

http://www.ppmy.cn/news/361307.html

相关文章

Python 网络舆情分析系统,舆论可视化界面

1 简介 舆情管理系统&#xff0c;这不仅仅可以帮助当地的管理人员迅速的排查跟本地有关的负面言论&#xff0c;还可以避免网民因为本身意识不到位而评论或发布一些不好的观点的情况&#xff0c;最终的目的就是帮助社会更好的发展。 2 技术栈 说明技术栈备注后台Python前端HT…

polycom realpresence desktop (mac和windows)软件下载

RealPresence Desktop | Poly, formerly Plantronics & Polycom

WEBRTC 对华为,宝利通硬件,SIP视频会议系统的互通互联,扩容方案分析

视频交互&#xff0c;会议互通已经是视频应用的大趋势&#xff0c;一是目前企业有大量的老视频会议硬件&#xff0c;二新业务又需要业务平台上视频需求&#xff0c;迫切需要一个融合对接的方案&#xff0c;即能把老的设备用起来&#xff0c;又能对接新的业务系统&#xff0c;如…

使用宝利通视频会议时声音断断续续的怎么处理

在使用宝利通视频会议的时候可能会遇到视频会议中声音断断续续的情况&#xff0c;这种情况下我们应该这么去排查处理呢&#xff1f; 开会视频会议中出现声音断断续续原因有很多种&#xff0c;需要逐一检查&#xff1a; 1、检测音频播放设备硬件是否有故障&#xff0c;把硬件接到…

宝利通音频会议和免提电话对于商务

宝利通音频会议和免提电话对于商务   在今天的时间&#xff0c;时间仅仅意味着金钱和更好地管理时间是可以保证你在许多不同的企业成功的重要事情之一。参加1-2个小时&#xff0c;我们不得不花费我们整整一天的旅行一个会议&#xff0c;这是很烦人的。了解这个问题&#xff0…

北京宝利通公司4道面试题

1) 给定两个字符串&#xff0c;如果一个字符串是另一个字符串的结尾部分相同则返回1&#xff0c;否则返回0&#xff0c; 如 abcddde dde 则返回1 &#xff1b;如 abcddde dce 则返回0 思路&#xff1a;用String类中的endsWith判断一下即可搞定。 2) 给定一个字符串将其…

会议终端Mini-MCU功能调研

Mini-MCU功能调研 前言&#xff1a; ​ 要实现终端设备的MCU功能&#xff0c;先要搞清楚什么是MCU&#xff1f;什么又是Mini-MCU&#xff1f;普通MCU和Mini-MCU在功能上有什么区别&#xff1f;搞清楚这几个问题&#xff0c;基本对Mini-MCU就有了较为全面的认识&#xff0c;在…

阿里腾讯华为在行动!程序员远程办公究竟用哪个视频会议好?

对于远程办公&#xff0c;需要解决两个核心关键问题&#xff0c;一是资源数据共享&#xff0c;二是人与人之间的高效沟通&#xff0c;这就避无可避地要谈到「视频会议」。 作者 | 唐小引 头图 | CSDN 下载自 VCG 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 当…