题解 | #隔离#

隔离

https://ac.nowcoder.com/acm/contest/40640/A

本题测试数据有问题 代码来自提交记录 下面的代码不能ac。

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize ("O0")
//咋就这么坑呢,ai改ai就80了? 
int n,a[1005],ans,ubs,bs,wf,gl;
int ai;
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>ai;
		bs+=ai;
		if(ai>=240)gl=1;	//一定被隔离 
		if(ai+ubs>=240){	//办这件事就会隔离,那么假定不办 
			wf+=400;	//往返 
			ubs=ai;		//办事用掉的时间重置 
		}else{
			ubs+=ai;	//不往返累计办事用掉的时间 
		}
	}
	//如果必然隔离:办事+隔离
	//否则为min(办事+隔离,办事+往返)
	if(gl){
		cout<<bs+10080+400;
	}else{
		cout<<min(bs+10080+400,bs+wf+400);
	}
	return 0;
}

改成这样就可以ac

#include<bits/stdc++.h>
using namespace std;

//咋就这么坑呢,a[i]改ai就80了? 
int n,a[1005],ans,ubs,bs,wf,gl;

int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
		bs+=a[i];
		if(a[i]>=240)gl=1;	//一定被隔离 
		if(a[i]+ubs>=240){	//办这件事就会隔离,那么假定不办 
			wf+=400;	//往返 
			ubs=a[i];		//办事用掉的时间重置 
		}else{
			ubs+=a[i];	//不往返累计办事用掉的时间 
		}
	}
	//如果必然隔离:办事+隔离
	//否则为min(办事+隔离,办事+往返)
	if(gl){
		cout<<bs+10080+400;
	}else{
		cout<<min(bs+10080+400,bs+wf+400);
	}
	return 0;
}
全部评论

相关推荐

头像
2024-12-19 18:11
英特尔_Software_engineer
下水道鼠鼠鼠鼠:男的能去当技师吗 好进吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务