【CCF CSP记录】202303-2 垦田计划

题目

 

 思路

总耗时取决于耗时最长的区域,我们只需用资源把最大耗时降到最小,就等同于将最终的开垦天数降到最小。

所以,我们先记录初始时的最大耗时maxtime,然后以maxtime为起点,逐天降低最大耗时,当到某一天剩余资源无法再将当前最大耗时降低一天或者最大耗时已经降低到最少开垦天数时,循环结束。

用数组date[i]来记录从第i天再缩短一天所要的资源数。若对于已经被缩短耗时的区域,要将区域所需资源加到前一天。例如,原本最大耗时为7天,缩短到6天后,原本开垦时长为7天的区域就变为了开垦时长为6天的区域,这时候开垦时长为6天的区域就增加了,所以再降低一天所需的资源数也要增加相应的值。

参考:http://t.csdnimg.cn/69CUS

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,m,k;
int date[maxn];
int main()
{
	int t,c,maxtime=0;
	cin>>n>>m>>k;
	for(int i=0;i<n;i++)
	{
		cin>>t>>c;
		date[t]+=c;
		maxtime=max(maxtime,t);
	}
	int ans=k;
	for(int i=maxtime;i>k;i--)
	{
		if(m>=date[i])
		{
			date[i-1]+=date[i];
			m-=date[i];
		}
		else{
			ans=i;
			break;
		}
	}
	cout<<ans<<endl;
	return 0;
}

结果

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值