DayLight Saving Light(HDU6010)
夏令时:
夏时令(Daylight Saving Time:DST),又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。
摘自百度百科。
题意:
规定每到每年三月的第二个星期日的2:00就把时间调为3:00,再到该年的2:00的时候把时间再调为1:00。所以题目的意思为每年的1月1日0:00到三月第二个星期日的2:00为“PST”(不包括这个2:00时刻),这个2:00-3:00为“Neither”,3:00这个时刻到该年11月第一个星期日的1:00时刻(不包括1:00时刻)为“PDT”,1:00时刻到年终为“Both”。具体如下:

另一个难点在于如何确定给出的日期是不是这两个日期中的一个。这个是队友按着日历数出来的,办法笨点能出题啊就行。

所以规律就出来了,当该年是平年的时候日期是由上一个减一得出来的,如果是闰年就是由上一年减二得出来的。但十一月份最小是1再减就是从7开始往下减了。观察发现三月份和十一月份的日子是成对出现的,所以求出了十一月份的来三月份的就出来了。
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+;
typedef long long ll;
struct Year
{
int ma;
int no;
} y[]; bool judge(int year)
{
if((year% == && year% != ) || year% == )
return true;
return false;
} int fun(int x)
{
if(x == )
return ;
else if(x == )
return ;
else if(x == )
return ;
else if(x == )
return ;
else if(x == )
return ;
else if(x == )
return ;
else if(x == )
return ;
} void init()
{
int n = ;
y[].ma = ,y[].no = ;
for(int i = ; i<=; i++)
{
if(judge(i))
{
y[i-].no = (n - + ) % ;
n = y[i-].no;
}
else
{
y[i-].no = (n - + ) % ;
n = y[i-].no;
}
if(n == )
y[i-].no = n = ;
y[i-].ma = fun(n);
}
return;
} int main()
{
init();
int T,cnt = ;
scanf("%d",&T);
while(T--)
{
int yy,m,dd,hh,mm,ss;
scanf("%d-%d-%d %d:%d:%d",&yy,&m,&dd,&hh,&mm,&ss);
printf("Case #%d: ",cnt++);
yy = yy-;
if(m == )
{
if(dd == y[yy].ma)
{
if(hh < )
printf("PST\n");
else if(hh == )
printf("Neither\n");
else
printf("PDT\n");
}
else if(dd>y[yy].ma)
printf("PDT\n");
else if(dd<y[yy].ma)
printf("PST\n"); }
else if(m>= && m<=)
printf("PDT\n");
else if(m==)
{
if(dd == y[yy].no)
{
if(hh<)
printf("PDT\n");
else if(hh==)
printf("Both\n");
else
printf("PST\n");
}
else if(dd>y[yy].no)
printf("PST\n");
else if(dd<y[yy].no)
printf("PDT\n");
}
else
printf("PST\n");
}
return ;
}
/*
样例输入:
4
2016-03-13 01:59:59
2016-03-13 02:00:00
2016-11-06 00:59:59
2016-11-06 01:00:00
样例输出:
Case #1: PST
Case #2: Neither
Case #3: PDT
Case #4: Both
*/
DayLight Saving Light(HDU6010)的更多相关文章
- HDU6010 Daylight Saving Time
/* HDU6010 Daylight Saving Time http://acm.hdu.edu.cn/showproblem.php?pid=6010 模拟 题意:算当前时间是否是夏令时 */ ...
- hdu 6010 Daylight Saving Time 泰勒公式
Daylight Saving Time Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Daylight Saving Time
[Daylight Saving Time] 夏时制,又称日光节约时制.日光節約時間(英语:Daylight saving time)或夏令时间(英语:Summer time),是一种为节约能源而人为 ...
- 夏令时 DST (Daylight Saving Time) java中的夏令时【转】
1916年,德国首先实行夏令时,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏令时 1986年至1991年,中华人民共和国在全国范围实行了六年夏令时 サマータイム 夏時間(日本现在没有实行夏 ...
- HDU 6010 - Daylight Saving Time
先算周几,再模拟 #include <bits/stdc++.h> using namespace std; int GetWeekDay(int y,int m,int d)//0为周一 ...
- Gym 101206L Daylight Saving Time 根据年月日计算星期
题意: [3月的第二个周日02:00:00 , 3月的第二个周日03:00:00) 这个区间都不是PST或PDT,[11月的第一个周日01:00:00 , 11月的第一个周日02:00:00) 这个区 ...
- C语言的时间函数
下面是C语言的获取本地时间和构造时间进行格式化时间显示输出的相关函数:This page is part of release 3.35 of the Linux man-pages project. ...
- Lua 5.1 参考手册
Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingno ...
- 【Linux】多睡/少睡一小时!冬夏令时全解析
多伦多2016年11月6日凌晨2点开始起时间调回一小时,时间到凌晨2点时自动跳回到1点,大家可以多睡一小时(或者多一小时写essay的时间)~ 多伦多2017年3月12日凌晨2点开始时间拨快一小时时间 ...
随机推荐
- spring cloud-spring boot 文档信息
官网: spring boot springcloud 学习资源 使用IDEA创建SpringBoot项目 Spring Boot教程https://blog.csdn.net/forezp/arti ...
- sql compare options
sql compare project's options Add object existence checks Use DROP and CREATE instead of ALTER Ignor ...
- xubuntu 17.04 和 iphone 6互传文件方法——使用libimobiledevice就可以像u盘一样操作文件了
I need to preface this by saying I'm also new to Linux, but I've got it working I think. The instruc ...
- python库学习笔记——re库:正则表达式入门(一)
什么是正则表达式? 我们在处理文本文件的时候,会按照某种规则查找某些特定的字符串.比方我们希望从一堆电子档案中找到人员的电话号码整理成通讯录.于是,我们可以利用特定字符串的规律编程获得我们想要的信息. ...
- 雅礼集训 2017 Day1
T1:loj 6029 市场 题目大意: 维护一个数据结构支持区间加 区间除法 区间求最小值 区间求和 思路: 用线段树维护区间加 区间求最小值 区间和 对于区间除法 注意到除数d很大而加法的w很小 ...
- 【146】ArcObjects类库索引
ArcObjects 类库(一) ----------------------------------------------------------------------------------- ...
- Linux常用命令分类
目录:相对路径和绝对路径. 绝对路径:路径的写法[一定由根目录 / 写起],例如: /usr/share/doc 这个目录. 相对路径:路径的写法[不是由 / 写起],例如由 /usr/share/d ...
- Java 添加、回复、修改(替换)、删除Word批注
批注是一种常用于对特定文档内容进行注解的工具或方法,起到解释说明.标记指正的作用.在本篇文章中,将介绍如何操作Word批注的方法,包括: 1. 添加批注:添加文本到批注.插入图片到批注: 2. 回复批 ...
- 洛谷 P1865 A % B Problem(求区间质数个数)
题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...
- redis 缓存应用
第1章 部署与安装 wget http://download.redis.io/releases/redis-3.2.10.tar.gz tar xf redis-3.2.10.tar.gz cd r ...