HDU ACM 4515 小Q系列故事——世界上最遥远的距离

分析:最容易的方法就是一天一天的模拟了。

#include<iostream>
using namespace std;

int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31};

#define Y 2013
#define M 3
#define D 24

bool leap(int y)
{
	return y%400==0 || y%4==0&&y%100!=0;
}

void change(int k,int fg) //-1回到过去,1去到未来
{
	int y=Y,m=M,d=D;

	while(k--)
	{
		if(leap(y))
			a[2]=29;
		else
			a[2]=28;
		d+=fg;

		if(fg==-1)
		{
			if(d<=0)
			{
		    	m+=fg;
		    	if(m<=0)
				{
		     		m=12;
		    		y+=fg;
				}
		    	d=a[m];
			}
		}
		else if(fg==1)
		{
			if(d>a[m])
			{
				m+=fg;
				if(m>12)
				{
					m=1;
					y+=fg;
				}
				d=1;
			}
		}
	}
	printf("%04d/%02d/%02d",y,m,d);
}

int main()
{
	int n,m;

	scanf("%d",&n);
	while(n--)
	{
		scanf("%d",&m);
		change(m,1);
		putchar(' ');
		change(m,-1);
		putchar('\n');
	}
    return 0;
}
时间: 2024-12-08 02:27:17

HDU ACM 4515 小Q系列故事——世界上最遥远的距离的相关文章

HDU 4515 小Q系列故事——世界上最遥远的距离

#include <iostream> #include <cmath> #include <algorithm> using namespace std; void moniadd(int y,int m,int d) { if (m > 12) { y++; m -= 12; } if (d>31) { if (m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12) { d -= 31; } els

hdu---(4515)小Q系列故事——世界上最遥远的距离(模拟题)

小Q系列故事——世界上最遥远的距离 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1751    Accepted Submission(s): 628 Problem Description 世界上最遥远的距离 不是生与死 而是我就站在你面前 你却不知道我爱你 世界上最遥远的距离 不是我就站在你面前你却不知道我爱你 而是明明知道彼此相爱

HDU ACM 4510 小Q系列故事——为什么时光不能倒流

分析:水题. #include<iostream> using namespace std; int main() { int x1,y1,z1,x2,y2,z2; int n,x3,y3,z3; cin>>n; while(n--) { scanf("%d:%d:%d",&x1,&y1,&z1); scanf("%d:%d:%d",&x2,&y2,&z2); x3=y3=z3=0; z3=z1

HDU ACM 4505 小Q系列故事——电梯里的爱情

分析:水题,电梯要上到最高层还要回到最底层,所以电梯上下的时间等于最高层乘以10,电梯开门完的时间为5加上人数,因为下一个人只需1秒. #include<iostream> using namespace std; int main() { int f[105]; int i,sum; int C,n,a,max; cin>>C; while(C--) { cin>>n; memset(f,0,sizeof(f)); sum=0; max=-1; for(i=0;i&l

HDU ACM 4500 小Q系列故事——屌丝的逆袭

分析:水题,注意计算某个位置的分数时他自己的不算,加减都是绝对值(一开始这里还理解错了). #include<iostream> #include<cmath> using namespace std; int a[25][25]; int main() { int i,j,n,m; int maxv,maxi,maxj,tmp; while(cin>>n>>m && n+m) { for(i=0;i<n;i++) for(j=0;j&

HDU ACM 4511 小明系列故事——女友的考验-&gt;AC自动机+DP

分析:参考别人的搞. 1.AC自动机: 使用AC自动机来压缩路段,如禁掉的路段是1->2->3,那么插入字符串(123) ,注意点只有1~50,所以0~50用ASCII 压缩成字符串即可. 这样就能够完成禁止路段的在线状态转移. 2.DP部分: 两点之间的最短路.dp[i][j]表示在地点i,当前字符是j的状态. 初始化:fill(&dp0][0],&dp[maxn-1][maxp-1],inf),inf=1e12,memset不能用. 边界:首先找出出发点在Pool中的位置,

HDU ACM 4506 小明系列故事——师兄帮帮忙 -&gt;简单快速幂

分析:t单位时间后i的位置将变化到(i+t)%n位置上,下标i从0开始,之后快速幂完成. #include<iostream> using namespace std; __int64 f_pow(__int64 a,__int64 b,__int64 mod) { __int64 s=1; while(b>0) { if(b&1) s=s*a%mod; a=a*a%mod; b>>=1; } return s; } int main() { int T; __int

HDU ACM 4501 小明系列故事——买年货-&gt;多维背包(多为01背包)

分析:dp[l][i][j][k]表示选前l件时花费i元,积分j,免费p时能获得的最大价值.k值也作为一种背包算. 状态转移方程: dp[l][i][j][k] = max(dp[l][i][j][k], dp[l-1][i-a[l]][j][k]+c[i], dp[l-1][i][j-b[l]][k]+c[i], dp[l-1][i][i][k-1]+c[i])  (k > 0, i >= a[l] , j >= b[l], k= 1,2,3,4....n) a[l]表示第l种用现金要

HDU 4500 小Q系列故事——屌丝的逆袭

腾讯的题目,一条简单的搜索题目,适合初学者练习代码能力,或者是高手休息脑子的题,呵呵,不需要动脑了,只动手打代码就过了. 不过腾讯这故事有点坏啊,给人透露了两个信息: 1 腾讯不拘一格降人才 2 进入腾讯就可以屌丝逆袭了 腾讯是不是还想说腾讯的mm特别多? 呵呵,出题不忘给自己宣传一下. #include <stdio.h> #include <limits.h> const int MAX_NM = 20; int N, M; int matrix[MAX_NM][MAX_NM]