### HDU 6556 题目链接 ###

题目大意:

给你四个国家的时区,告诉你 A 国家的时间,让你输出这时候在 B 国家的时间,还需要输出对于 A 国家来说这是 昨天、今天 还是 明天。


分析前提:

1、对于时区转换,通过样例我们可以了解到的是: B 国家的时间差减去 A 国家的时间差 (这个时间差是对于标准时间而言,即题面中的 英国 。这个时间差在题面上每个国家末尾,带正负。)这样就可以根据正负与值来判断 A 与 B 的时间差值了。

2、我们还需要知道的是,对于凌晨0 :00,应该为 12 :00 AM ,而对于中午,应该为 12 :00 PM 。

之后我们需要来看看这道题怎么做了,很显然是模拟题,需要分类讨论。

B 国家先于 A 国家 (即 B 时间差减 A 时间差为负,记为 t ),那么说明我们需要将 A 国家的时间,往前挪 t 个时间长度。

  • 若当前时间往前减去 t 个长度时,不超过当前的时间段的 12 点(即 0 点)。 

  比如现在是 3:00 AM ,往前挪 2 小时, 则不会超过 12:00 AM ,那么直接用 3 减去 2 ,分钟、AM 都不变,即为答案, PM 同理。

  • 若当前时间往前减去 t 个长度时,超过当前的时间段的 12 点(即 0 点)。这里有两种可能。 

  假设当前为 12 :00 AM,要往前挪 13 小时 (我们要知道,这道题最大的时间差就是 8 + 3 = 13 小时),那么就变成了昨天的 11 : 00 AM。同理我们         可知,如果当前为 12:00 PM,最大往前只会挪 13 小时,到昨天的 11 : PM 。所以如果 0 - t + 12 (12点看成 0 )小于 0 了,那么首先无论现在是              AM 还是 PM ,都一定会到昨天,且 AM 与 PM 不会改变。

如果 0 - t + 12 大于等于 0 ,那么说明不一定会到昨天,且与 当前是 AM 还是 PM 有关。笔画一下就知道,AM 往前如果超过了 12 : 00 AM ,那么必定到昨天。PM 则还是在今天,分类讨论即可。

那么对于 A 先于 B 国家的情况,大家自己去试试啦~

代码如下:

#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<map>
using namespace std;
map<string,int> m;
int t;
int A;
char B[],C[];
string a,b;
int main()
{
//freopen("test.in","r",stdin);
//freopen("test.out","w",stdout);
m.clear();
m.insert(make_pair("Beijing",));
m.insert(make_pair("Washington",-));
m.insert(make_pair("London",));
m.insert(make_pair("Moscow",));
scanf("%d",&t);
int T=;
while(t--)
{
scanf("%d:%s %s",&A,&B,&C);
cin>>a>>b;
int temp=m[b]-m[a];
if(temp==){
printf("Case %d: Today %d:%s %s\n",++T,A,B,C );
}
else if(temp<){
temp=-temp;
if(A==) A=;
if(A>=temp){
A-=temp;
if(A==) A=;
printf("Case %d: Today %d:%s %s\n",++T,A,B,C );
}
else{
A=A-temp+;
if(A<){
A+=;
printf("Case %d: Yesterday %d:%s %s\n",++T,A,B,C );
}
else{
if(A==) A=;
if(C[]=='A') printf("Case %d: Yesterday %d:%s PM\n",++T,A,B );
else printf("Case %d: Today %d:%s AM\n",++T,A,B );
}
}
}
else{
if(A==) A=;
if(-A>=temp){
A+=temp;
if(A==&&C[]=='P') printf("Case %d: Tomorrow %d:%s AM\n",++T,A,B );
else if(A==&&C[]=='A') printf("Case %d: Today %d:%s PM\n",++T,A,B );
else{
printf("Case %d: Today %d:%s %s\n",++T,A,B,C );
}
}
else{
A+=temp-;
if(A>=){
A-=;
if(A==) A=;
printf("Case %d: Tomorrow %d:%s %s\n",++T,A,B,C );
}
else{
if(C[]=='A') printf("Case %d: Today %d:%s PM\n",++T,A,B );
else printf("Case %d: Tomorrow %d:%s AM\n",++T,A,B );
}
}
}
}
}

HDU 6556 (2018CCPC吉林 B题)的更多相关文章

  1. 2018CCPC吉林赛区 hdu6555~hdu6566

    2018CCPC吉林赛区(重现赛)- 感谢北华大学 A 基础数论. #include<bits/stdc++.h> using namespace std; typedef long lo ...

  2. [2018CCPC吉林赛区(重现赛)- 感谢北华大学] 补题记录 躁起来

    1007 High Priestess 埃及分数 1008 Lovers 线段树维护取膜意义下的区间s和. 每个区间保存前缀lazy和后缀lazy. #include <iostream> ...

  3. HDU 6562 lovers 2018CCPC吉林H(线段树)

    题意: 初始n个空串,m个操作: 1.给[l,r]的所有字符串头尾加一个‘d’,将原字符串x变为dxd 2.求[l,r]所有字符串代表的数字之和mod 1e9+7 思路: 据说是硬核线段树.. 对于线 ...

  4. HDU 2222 AC自动机模板题

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=2222 AC自动机模板题 我现在对AC自动机的理解还一般,就贴一下我参考学习的两篇博客的链接: http: ...

  5. HDU 1251 Trie树模板题

    1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...

  6. HDU 3065 (AC自动机模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065 题目大意:多个模式串,范围是大写字母.匹配串的字符范围是(0~127).问匹配串中含有哪几种模 ...

  7. HDU 2896 (AC自动机模板题)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2896 题目大意:多个模式串.多个匹配串.其中串的字符范围是(0~127).问匹配串中含有哪几个模式串 ...

  8. hdu 5455 Fang Fang 坑题

    Fang Fang Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5455 ...

  9. [HDU 2102] A计划(搜索题,典型dfs or bfs)

    A计划 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

随机推荐

  1. centos7 配置阿里镜像

    1. 备份原来的yum源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.设置aliyun的y ...

  2. AXN文档

    https://help.aliyun.com/document_detail/59705.html?spm=a2c4g.11186623.6.664.58a053afCvMM57 AXN api文档 ...

  3. 关于jQuery MiniUI

    jQuery MiniUI v3.0 jQuery MiniUI - 专业WebUI控件库.它能缩短开发时间,减少代码量,使开发者更专注于业务和服务端,轻松实现界面开发,带来绝佳的用户体验. http ...

  4. 数据、模型、IT系统认知

    数据.模型.IT系统认知 量化投资定义 量化投资主要是指通过数理模型来实现投资理念,由计算机产生交易策略的一种投资方法. 量化投资是一种方法论,而不是具体的交易策略. 通常与基本面.技术面分析相结合. ...

  5. 连接远程服务器的几种方式/Vscode + Remote

    连接远程服务器的几种方式 前言 最近在尝试做网盘,使用的技术栈大概是 .net core + MVC + Mysql + Layui,主要目的是通过这个具体的项目,熟悉熟悉 .net core 开发, ...

  6. Java描述设计模式(09):装饰模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领.他变成鱼儿时,就可以到水里游泳:他变成鸟儿时,就可以 ...

  7. maven中servlet报错:不识别此servlet问题的解决办法

    原因 使用maven集成的tomcat插件的时候,tomcat的lib中,自带servlet-api和jsp. 如果maven中再次导入了这两个jar,会造成jar包冲突现象. 解决办法 我们只是想编 ...

  8. (转)深入解析TensorFlow中滑动平均模型与代码实现

    本文链接:https://blog.csdn.net/m0_38106113/article/details/81542863 指数加权平均算法的原理 TensorFlow中的滑动平均模型使用的是滑动 ...

  9. 利用Python开发智能阅卷系统

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 机器学习与统计学 PS:如有需要Python学习资料的小伙伴可以加 ...

  10. Scrapy框架-中间件

    一.中间件中主要有3个函数方法 process_request:处理请求,默认返回值是None process_response:处理响应,默认返回值是response对象 process_exce ...