K11720 Milk Measurement-B[USACO-2017-Dec-B]

题目描述

Farmer John购买了三头奶头:Bessie、Elsie和Mildred,最初每头奶牛每天产出7加仑的牛奶。由于已经知道随着时间的推移奶牛的产奶量可能会发生变化,所以FJ将会在接下来的100天定期测量奶牛们的产奶量并记录下来。
记录的形式如下:
35 Bessie -2
14 Mildred +3
...
第一个条目表示,在第35天,Bessie的产奶量比上次测量降低了2加仑
第二个条目表示,在第14天,Mildred的产奶量比上次测量增加了3加仑
Farmer John一天最多只能进行一次测量,由于FJ有点粗心大意,他的测量结果并不是按照时间顺序记下的。
为了保持奶牛们的积极性,FJ在牛棚的墙上会挂上目前产奶量最高的奶牛的照片(如果产奶量最高的奶牛有多头,那么他会挂出他们所有的照片)。
请计算出FJ需要更换墙上奶牛的照片的总天数。

输入格式

第一行,一个整数N,表示FJ的测量记录的条数
接下来N行,每行一个测量记录,测试记录的格式如题目描述:day name num,其中day表示测量的那一天,取值范围是1到100,name表示奶牛的名字(Bessie、Mildred或Elsie),num表示此次测量奶牛产奶量的变化情况,是一个非零的整数。

奶牛的产奶量范围是0到1000之间。

输出格式

一行,一个整数,整数的范围是0到100,表示FJ需要更换墙上奶牛的照片的总天数

输入输出样例

输入样例1:
4 7 Mildred +3 4 Elsie -1 9 Mildred -1 1 Bessie +2
输出样例1:
3

说明

【样例说明】:
最开始,每头奶牛的产量都是7加仑。
第1天,Bessie的产奶量增加到了9加仑,成为产量最高的奶牛,所以FJ需要更换墙上的照片。
第4天,Elsie的产奶量下降到了6加仑,所以Bessie的产奶量依旧是最高的
第7天,Mildred的产奶量增加到了10加仑,领先了Bessie,成为产奶量最高的奶牛,FJ需要更换墙上的照片
第9天,Mildred的产奶量下降到了9加仑,与Bessie的产奶量相等,并列领先,所以FJ需要更换墙上的照片,同时展示出Bessie和Mildred的照片。

【耗时限制】1000ms 【内存限制】128MB

这一波送福利了好吧(全网站都是要VIP的,不然就是太长太难,还是自己写的最简单了),废话0

代码:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int N=110;
int n,cnt,m[3]={7,7,7};
bool f[3]={1,1,1};
struct aj{
	int day,id,dis;
}a[N];
bool cmp(aj a,aj b){
	return a.day<b.day;
}
int main(){
	cin>>n;
	string name;
	for(int i=1;i<=n;i++){
		cin>>a[i].day>>name>>a[i].dis;
		if(name=="Bessie") a[i].id=0;
		else if(name=="Elsie") a[i].id=1;
		else a[i].id=2;
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		m[a[i].id]+=a[i].dis;
		bool flag=0;
		int maxn=max(m[0],max(m[1],m[2]));
		for(int j=0;j<3;j++)
			if(m[j]==maxn&&!f[j]) flag=f[j]=1;
			else if(m[j]<maxn&&f[j]){flag=1;f[j]=0;}
		if(flag) cnt++;
	}
	cout<<cnt;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值