CF16D题解

CF16D Logging 原题

讲解

这道题大体思路是:

  • 先不断读入,为了节省空间(当然这可以不需要),我们可以直接在读入后进行操作,输入可以用 scanf(更方便),但我给的代码就直接使用 cin
  • 接着就进行直接判断,可以先将时,分转化成目前离当日 00 : 00 00:00 00:00 过去了多长时间,这要好计算,再判断大小,要是之前时间 > > > 现在时间,则时光倒流了又过了一天
  • 切记,还要有一个计数器,初值为一,如果之前时间 = = =现在时间,则计数器 + 1 +1 +1 ,否则计数器变为 1 1 1 ,如果计数器值大于 10 10 10,则又过了一天,并将计数器的值改为 1 1 1

code

#include<iostream>
using namespace std;
int main()
{
	int n;
	int cnt = 1;
	int lastt = -1;//上一次的
	int ans = 1;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		int h, m, t;
		string s, nouse1/*后面的命令,没用!*/;
		char nouse2/*一开始的[和后面的:*/;
		cin >> nouse2 >> h >> nouse2 >> m >> s;
		getline(cin, nouse1);//输入
		h %= 12;//不能少
		if (s == "a.m.]:")t = h * 60 + m;else t = 720 + h * 60 + m;
		if (lastt == t)//如果之前和现在相同,计数器+1
		{
			cnt++;
		}
		else
		{
			cnt = 1;
		}
		if (lastt > t || cnt > 10)
		{
			ans++;
			cnt = 1;
		}

		lastt = t;


	}
	cout << ans;
	return 0;
}

感谢 NaOH_Frog 大佬。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值