TSOI2 锻炼计划 模拟

【题目描述】:

身体是革命的本钱,OIers不要因为紧张的学习和整天在电脑前而忽视了健康问题。小x设计了自己的锻炼计划,但他不知道这个计划是否可行,换句话说如果计划不当可能会让他的体力超支,所以小x请你帮助他。

一天有1440分钟,所以小x列出的是这一整天第1至第1440分钟的计划。小x的体力用一个整数来表示,他会按照计划表进行锻炼,同时,每分钟小x的体力会自动增加1。如果某一分钟末小x的体力小于等于零,那么可怜的小x就累死了……

【输入描述】:

第一行是用空格分开的两个整数n,m,分别表示小x的初始体力值和计划的项目数量。

从第二行开始的m行,每行描述一个锻炼项目:名称、开始时间a、结束时间b、每分钟耗费的体力(用空格分隔),表示此项目从第a分钟初开始,第b分钟末结束。锻炼项目按照开始时间递增顺序给出,不会出现两个项目时间冲突的情况。

【输出描述】:

输出包括两行,如果计划可行,第一行输出"Accepted",第二行输出这一天过后最后剩余的体力;否则在第一行输出"Runtime Error",第二行输出在第几分钟累死。

【样例输入1】:

10 1
Basketball 1 10 1

【样例输出1】:

Accepted
1440

【样例输入2】:

1 1
Nunchakus 1 1 2

【样例输出2】:

Runtime Error
1

【时间限制、数据范围及描述】:

时间:1s 空间:128M

0<n<=2^31-1

0<=m<=500

所有中间值的绝对值不会超过2^31-1

每一个锻炼项目的名称不超过20个字符,其中不含空格。

解题思路:

这道题是一道比较简单的模拟题,枚举每一秒的情况再按题目说的做即可。

AC代码:

#include<iostream>
#include<cstdio>
using namespace std;
int n,m,e[1445];
char s[25];
struct node{
	int l,r,x;
}a[505];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%s ",s);
		scanf("%d%d%d\n",&a[i].l,&a[i].r,&a[i].x);
		for(int l=a[i].l;l<=a[i].r;l++){
			e[l]+=a[i].x;
		}
	}
	for(int i=1;i<=1440;i++){
		n++;
		n-=e[i];
		if(n<=0){
			printf("Runtime Error\n%d\n",i);
			return 0;
		}
	}
	printf("Accepted\n%d\n",n);
	return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值