HDU-6010-Daylight Saving Time
来源:互联网 发布:树人围棋软件注册码 编辑:程序博客网 时间:2024/05/15 15:28
ACM模版
描述
题解
这个题的难点在于题目不好懂,只要读懂了题目,细心一些的人都能做出来。
大致的思路是先预处理出来每年的两个时间节点,也就是每年三月份的第二个星期天和每年十一月份的第一个星期天是多少号,然后直接拿数据进行对比即可。
现在来说重点,预处理的手段不止一种,常规一些的就是按照年往后推,一年
至于怎么进行对比,常规的思路便是年月日时分秒逐个对比,还有一个比较好的方法便是
这里只给大家比较常规的解法对应的代码,因为笔者比较懒,所以就不写上述的第二种解法了。
代码
#include <cstdio>using namespace std;const int MAXN = 101;int StoD[MAXN];int DtoS[MAXN];struct time{ int y, m, d, h, _m, s; bool operator < (const time &b) const { if (y != b.y) { return y < b.y; } else if (m != b.m) { return m < b.m; } else if (d != b.d) { return d < b.d; } else if (h != b.h) { return h < b.h; } else if (_m != b._m) { return _m < b._m; } else { return s < b.s; } }} da;void init(){ StoD[7] = 11; DtoS[7] = 4; for (int i = 8; i < MAXN; i++) { if (i % 4 || i % 100 == 0) { StoD[i] = StoD[i - 1] - 1; if (StoD[i] <= 7) { StoD[i] += 7; } DtoS[i] = DtoS[i - 1] - 1; if (DtoS[i] < 1) { DtoS[i] += 7; } } else { StoD[i] = StoD[i - 1] - 2; if (StoD[i] <= 7) { StoD[i] += 7; } DtoS[i] = DtoS[i - 1] - 2; if (DtoS[i] < 1) { DtoS[i] += 7; } } }}int main(){ init(); int T; scanf("%d", &T); for (int i = 1; i <= T; i++) { scanf("%d-%d-%d %d:%d:%d", &da.y, &da.m, &da.d, &da.h, &da._m, &da.s); time PN = {da.y, 3, StoD[da.y - 2000], 2, 0, 0}; time NP = {da.y, 3, StoD[da.y - 2000], 3, 0, 0}; time PB = {da.y, 11, DtoS[da.y - 2000], 1, 0, 0}; time BP = {da.y, 11, DtoS[da.y - 2000], 2, 0, 0}; printf("Case #%d: ", i); if (da < PN) { printf("PST\n"); } else if (da < NP) { printf("Neither\n"); } else if (da < PB) { printf("PDT\n"); } else if (da < BP) { printf("Both\n"); } else { printf("PST\n"); } } return 0;}
阅读全文
0 0
- HDU-6010-Daylight Saving Time
- daylight saving time
- HDU6010-Daylight Saving Time
- HDU 6010 Daylight Saving Time【打表+结构体内重载操作符】
- L Daylight Saving Time(模拟)
- Oracle与DST(daylight saving time)
- 闲扯 DST (Daylight Saving Time) 与 Oracle
- No daylight saving time now(遇到奇怪的夏令时)
- 夏令时 DST (Daylight Saving Time) java中的夏令时。
- 夏令时【Daylight Saving Time】时间计算出错的解决办法
- 关于夏时制(DST)的问题和研究 - About Daylight Saving Time
- java开发1:用Calender来解决夏令时(daylight saving time )等引起的错误
- Daylight Savings Time (DST)
- Android Daylight savings time设置问题
- Saving HDU
- Saving HDU
- Saving HDU
- Saving HDU
- 正则表达式的常用操作符
- 留给人类的时间不多了?现在不学机器学习更待何时!
- Android程序签名打包 什么是签名,有什么用:
- Bean named 'deptDao' must be of type [com.zttech.sys.dao.IGroupDao], but was actually of type [com.s
- AngularJS(1.X)
- HDU-6010-Daylight Saving Time
- hbase于centos的安装
- LINUX 安装 JDK 配置环境变量
- Jenkins的使用步骤
- 实习6
- 【VMware】VMware Workstation虚拟机不能联网的解决办法
- C#下给数字前面补0的方法
- java.io.IOException cannot be resolved to a type
- spring包扫描<context:component-scan>说明