传送门:  https://codeforces.com/contest/1493/problem/B

题目:

Example
input
5
24 60
12:21
24 60
23:59
90 80
52:26
1 100
00:01
10 10
04:04
output
12:21
00:00
52:28
00:00
00:00


题意
给定一个时钟, 小时最大值与分钟最大值, 再输入一个时钟, 要求将该时钟通过镜子水平镜像后仍符合小时最大值与分钟最大值
若不符合, 则时钟分钟值+1, 分钟值达到最大值-1时, 分钟值归零, 小时值+1, 注意, 这里可以遍历到明天的这个时间, 直到符合
为止, 输出镜面反射前的时钟.其中 0 <= 分钟值 <= 分钟最大值, 0 <= 小时值 <= 小时最大值.



解析
举个栗子:
对于分钟, 从给定的分钟值开始遍历, 以分钟最大值-1为最大值, 将分钟镜像转化为小时(翻转 + 镜像, 和在纸反面看字效果一样)
如果在小时标准内, 则可行.
循环结束, 若无可行方案, 返回 0, (毕竟00:00总是符合的, 与其换到第二天, 不如直接00:00)

对于小时同理, 共用一个函数就行.

你以为这样就完了吗, 如果是, 那恭喜你wa了
看个样例
  12 45
  05:25
结果应为10:00, 而这里运行到最后, 是05:00,  最后应该再判断分钟是否加到最大归零了, 如果分钟==0, 
并且初始读入的分钟!=0 并且 小时!= 初始读入的小时,那么小时+1, 再找一遍成立的镜像.




代码(嘿嘿, 看起来不是很长~, 诸位加油看)
#include <iostream>

using namespace std;

//每个数字的镜像结果
const int change[10] = {0, 1, 5, 100, 100, 2, 100, 100, 8, 100};


int f(int now, int tar, int n)
{
  //now是开始的值, tar是最大值, n是(若now为分钟, 则n为小时, 反之为分钟)的最大值, n和tar就是防止越界的
for(int i = now; i < tar; i ++)
{  
if(change[i % 10] != 100 && change[i / 10] != 100 && change[i%10] * 10 + change[i/10] < n)
return i;
}
return 0;
}
int main()
{
int t; cin >> t;
while(t --)
{
int h, m, h1, m1;
cin >> h >> m;//最大小时,分钟值
scanf("%d:%d", &h1, &m1); int res_h = f(h1, h, m); int res_m;
if(res_h != h1)//如果小时往前进位了, 那么分钟就从0开始遍历, 若小时值没变, 则从分钟值开始遍历
res_m = f(0, m, h);
else
res_m = f(m1, m, h); if(res_m == 0 && m1 != 0 && res_h == h1)//若分钟归零, 且小时没进位, 那小时进位再找符合条件的
res_h = f(res_h+1, h, m);
printf("%d%d:%d%d\n", res_h / 10, res_h % 10, res_m / 10, res_m % 10);

}
return 0;
}


附:本人wa的4个样例
4
51 3
30:01
51 3
30:01
11 79
00:24
12 45
05:25
理应50:00 50:00 00:50 10:00
输出00:01 00:01 00:00 05:00

  



Codeforces Round #705 (Div. 2) B. Planet Lapituletti(镜像时钟) 思维的更多相关文章

  1. Codeforces Round #556 (Div. 2) - C. Prefix Sum Primes(思维)

    Problem  Codeforces Round #556 (Div. 2) - D. Three Religions Time Limit: 1000 mSec Problem Descripti ...

  2. Codeforces Round #426 (Div. 2)【A.枚举,B.思维,C,二分+数学】

    A. The Useless Toy time limit per test:1 second memory limit per test:256 megabytes input:standard i ...

  3. Codeforces Round #272 (Div. 2) C. Dreamoon and Sums (数学 思维)

    题目链接 这个题取模的时候挺坑的!!! 题意:div(x , b) / mod(x , b) = k( 1 <= k <= a).求x的和 分析: 我们知道mod(x % b)的取值范围为 ...

  4. Codeforces Round #523 (Div. 2) E. Politics(最小费+思维建图)

    https://codeforces.com/contest/1061/problem/E 题意 有n个点(<=500),标记第i个点的代价a[i],然后分别在这n个点建两棵树,对于每颗树的每个 ...

  5. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp(思维)

    链接: https://codeforces.com/contest/1230/problem/D 题意: Marcin is a coach in his university. There are ...

  6. Codeforces Round #706 (Div. 2)B. Max and Mex __ 思维, 模拟

    传送门 https://codeforces.com/contest/1496/problem/B 题目 Example input 5 4 1 0 1 3 4 3 1 0 1 4 3 0 0 1 4 ...

  7. Codeforces Round #272 (Div. 2) D. Dreamoon and Sets (思维 数学 规律)

    题目链接 题意: 1-m中,四个数凑成一组,满足任意2个数的gcd=k,求一个最小的m使得凑成n组解.并输出 分析: 直接粘一下两个很有意思的分析.. 分析1: 那我们就弄成每组数字都互质,然后全体乘 ...

  8. Codeforces Round #524 (Div. 2) C. Masha and two friends(思维+计算几何?)

    传送门 https://www.cnblogs.com/violet-acmer/p/10146350.html 题意: 有一块 n*m 的棋盘,初始,黑白块相间排列,且左下角为白块. 给出两个区间[ ...

  9. Codeforces Round #485 (Div. 2) C题求三元组(思维)

    C. Three displays time limit per test 1 second memory limit per test 256 megabytes input standard in ...

随机推荐

  1. Golang 常见设计模式之装饰模式

    想必只要是熟悉 Python 的同学对装饰模式一定不会陌生,这类 Python 从语法上原生支持的装饰器,大大提高了装饰模式在 Python 中的应用.尽管 Go 语言中装饰模式没有 Python 中 ...

  2. Ubuntu20安装nodejs和npm并切换阿里源

    参考 阿里巴巴开源镜像站 Ubuntu20安装npm并切换阿里源 安装直接在终端执行 sudo apt-get install nodejs npm没有安装上就执行 sudo apt-get inst ...

  3. 统计&分析 EXCEL:count、counta、countblank、countif和countifs函数分享

    一.count 计算区域中包含数字的单元格的个数以及参数列表中的数字的个数. 利用函数COUNT可以计算单元格区域或数字数组中数字字段的输入项个数. 示例: 1.我要是写成=COUNT(B1,D1), ...

  4. 论文解读(VGAE)《Variational Graph Auto-Encoders》

    Paper Information Title:Variational Graph Auto-EncodersAuthors:Thomas Kipf, M. WellingSoures:2016, A ...

  5. 【Java分享客栈】Java程序员为争一口气熬夜硬刚CSS实现掘金首页

    前言 如果我做不了最厉害的Java工程师,那我就做Java工程师中最厉害的前端工程师. 前段时间,我默默给自己又喂了这碗心灵鸡汤-- 我不是很厉害的Java工程师,哪怕我已经工作八年,我依然觉得自己和 ...

  6. WebGPU 工具分享 - WGSL 代码高亮插件(VSCode)与预处理工具

    WGSL 还在积极讨论中,虽然各位大佬不是很满意这个新生儿. 不过,社区已经有了基础的实验性工具(VSCode 插件),并支持了较新的语法. ① WGSL 插件 这个插件支持对文件扩展名为 .wgsl ...

  7. 羽夏看Win系统内核—— VT 入门番外篇

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  8. 羽夏逆向指引—— Hook

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你的, ...

  9. 【freertos】005-启动调度器分析

    前言 本节主要讲解启动调度器. 这些都是与硬件相关,所以会分两条线走:posix和cortex m3. 原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/160 ...

  10. fiber核心(react 16)?

    旧: 浏览器渲染引擎单线程, 计算DOM树时锁住整个线程, 所有行为同步发生, 有效率问题, 期间react会一直占用浏览器主线程,如果组件层级比较深,相应的堆栈也会很深,长时间占用浏览器主线程, 任 ...