ACM演算法 日期篇 日期差值問題

2021-10-02 17:28:42 字數 848 閱讀 9247

像這類日期類問題有個統一的解法,就是把原區間的問題統一到確定區間問題上去,即把問題統一到,兩個輸入日期對預定義日期的天數差的差值,預定義日期如:(2023年1月1日),這樣如題所示,樣例題目即轉為2011.04.12-0000.01.01之間的天數差與2011.04.22-0000.01.01之間的天數差的差值,這樣做有乙個巨大的好處,就是預處理,當從oj上讀入資料開始,可以再o(1)的時間內將結果算出來,而不是等讀入資料才開始運算,這樣就達到了一種以空間換時間的思想

**:

#include

using

namespace std;

#define isyear(x) x%100!=0&&x%4==0||x%400==0?1:0

//定義巨集判斷是否是閏年,方便計算每月天數

int dayofmonth[13]

[2]=

;//預存每月天數,注意二月配合巨集定義做特殊處理

struct date}}

};int buf[

5001][

13][32

];intabs

(int x)

intmain()

int d1,m1,y1;

int d2,m2,y2;

while

(scanf

("%4d%2d%2d"

,&y1,

&m1,

&d1)

!=eof

)return0;

}

這是日期類問題的統一做法,或者說是統一思

問題 A 日期差值

時間限制 1 sec 記憶體限制 32 mb 有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 每組資料輸出一行,即日期差值 20130101 201301055 includeint month...

問題 A 日期差值

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 每組資料輸出一行,即日期差值 20130101 201301055 include int year 2 12 int isleap int ye...

問題 A 日期差值

有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。輸入 有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 輸出 每組資料輸出一行,即日期差值 include intisleapyear int year 判斷是否是閏年 intmain int t...