ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CF1714A 题解

2022-08-05 14:03:23  阅读:152  来源: 互联网

标签:ansh 题解 sum h1 minx CF1714A m1 ansm


题目大意

  • 小 V 在每天的 \(H\) 时 \(M\) 分睡觉。
  • 小 V 每天订了 \(n\) 个闹钟,第 \(i\) 个闹钟在 \(h_i\) 时 \(m_i\) 分响起。
  • 闹钟响之后小V就醒了。
  • 如果任何闹钟在小V睡觉的时候响起,答案将是 \(0\) \(0\)。

解法

枚举每个闹钟响起的时间,如果 \(h_i<H\),说明闹钟在睡觉后的第二天才响。对此,如果 \(h_i<H\),\(h_i+24\)。

如果 \(m_i<M\),可以令 \(h_i -1\),\(m_i+60\) 之后再统计答案。

注意,对于 \(h_i=H\) 的情况要特殊处理。

统计答案时,对于第 \(i\) 个闹钟,小 V 一共能睡 \(h_i-H\) 小时,\(m_i-M\) 分钟。

总共 \((h_i-H)\times60+m_i-M\) 分钟,我们记录下最小的 \((h_i-H)\times60+m_i-M\) 对应的 \(h_i-H\) 和 \(m_i-M\),记录值即为答案。

代码

#include <bits/stdc++.h>
using namespace std;
int t, n, h, m, ansh, ansm, minx;

int main() {
	scanf("%d", &t);

	while (t--) {
		scanf("%d%d%d", &n, &h, &m);
		ansh = minx = ansm = 0x7fffffff;

		for (int i = 1; i <= n; i++) {

			int h1, m1;
			scanf("%d%d", &h1, &m1);

			if (h1 > h) {
				if (m1 < m) {
					h1--;
					m1 += 60;
				}

				int sum = (h1 - h) * 60 + m1 - m;

				if (sum < minx) {
					minx = sum;
					ansm = m1 - m;
					ansh = h1 - h;
				}
			} else if (h1 == h) {
				int sum;

				if (m1 < m) {
					sum = 24 * 60 - m + m1;

					if (sum < minx) {
						minx = sum;
						ansm = 60 - m + m1;
						ansh = 23;
					}
				} else {
					sum = m1 - m;

					if (sum < minx) {
						minx = sum;
						ansm = m1 - m;
						ansh = 0;
					}
				}
			} else {
				h1 += 24;

				if (m1 < m) {
					h1--;
					m1 += 60;
				}

				int sum = (h1 - h) * 60 + m1 - m;

				if (sum < minx) {
					minx = sum;
					ansm = m1 - m;
					ansh = h1 - h;
				}
			}
		}

		if (ansm == 60) {
			ansm = 0;
			ansh++;
		}

		printf("%d %d\n", ansh, ansm);
	}

	return 0;
}

标签:ansh,题解,sum,h1,minx,CF1714A,m1,ansm
来源: https://www.cnblogs.com/Dregen-Yor/p/16554024.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有