1. 程式人生 > >2017 無奈的模擬賽

2017 無奈的模擬賽

gif -m nod push 必須 cti 接下來 display 宋體

悲劇的開始~~~~

競賽時間:??????????:??-??:??

題目名稱

第二題

死亡

凝視

名稱

two

death

eyesight

輸入

two.in

death.in

eyesight.in

輸出

two.out

death.out

eyesight.out

每個測試點時限

1 秒

1 秒

1 秒

內存限制

512MB

512MB

512MB

測試點數目

10

10

10

每個測試點分值

10

10

10

是否有部分分

題目類型

傳統

傳統

傳統

註意事項(請務必仔細閱讀):

P73 第二題

第二題

【題目描述】

給你兩個日期,問這兩個日期差了多少毫秒。

【輸入格式】

兩行,每行一個日期,日期格式保證為“YYYY-MM-DD hh:mm:ss ”這種形式。第二個日期時間一定比第一個日期時間要大兩個日期的年份一定都是 21 世紀的年份。

【輸出格式】

一行一個整數代表毫秒數。

【樣例輸入 1】

2000-01-01 00:00:00

2000-01-01 00:00:01

【樣例輸出 1】

1000

【樣例輸入 2】

2000-01-01 00:00:00

2000-11-11 00:00:00

【樣例輸出 2】

27216000000

【樣例解釋】

從前有座山。

【數據範圍與規定】

對於10%的數據,兩個日期相同。

對於20%的數據,兩個日期只有秒數可能不同。

對於30%的數據,兩個日期只有秒數、分鐘數可能不同。對於40%的數據,兩個日期的年月日一定相同。

對於60%的數據,兩個日期的年月一定相同。對於80%的數據,兩個日期的年份一定相同。

2 5

P73 第二題

對於100%的數據,兩個日期一定都是 21 世紀的某一天,且第二個日期一定大於等於第一個日期。

把一天當做12小時~~搞成SB也沒A

技術分享
 1 #include <algorithm>
 2 #include <cstdio>
 3 
 4 #define LL long long
 5 #define dayss 86400
 6 
 7 int agy,agm,agd,agh,agmm,agss,noy,nom,nod,noh,nomm,noss;
 8 int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 9 LL ans,numm;
10 char c;
11 
12 int main()
13 {
14     freopen("two.in","r",stdin);
15     freopen("two.out","w",stdout);
16     scanf("%d-%d-%d %d:%d:%d",&agy,&agm,&agd,&agh,&agmm,&agss);
17     scanf("%d-%d-%d %d:%d:%d",&noy,&nom,&nod,&noh,&nomm,&noss);
18     for(int i=2001;i<noy;i++)
19     {
20         if((i%400==0)||(i%4==0&&i%100!=0)) ans+=366*dayss;
21         else ans+=(LL)365*dayss;
22     }
23     for(int i=2001;i<agy;i++)
24     {
25         if((i%400==0)||(i%4==0&&i%100!=0)) ans-=366*dayss;
26         else ans-=(LL)365*dayss;
27     } int nf=0,af=0;
28     if((noy%400==0)||(noy%4==0&&noy%100!=0)) nf=1;
29     if((agy%400==0)||(agy%4==0&&agy%100!=0)) af=1;
30     for(int i=1;i<nom;i++)
31         if(nf&&i==2) ans+=(LL)29*dayss;
32         else ans+=(LL)month[i]*dayss;
33     for(int i=1;i<agm;i++)
34         if(af&&i==2) ans-=(LL)29*dayss;
35         else ans-=(LL)month[i]*dayss;
36     ans+=(LL)nod*dayss; ans-=(LL)agd*dayss;
37     ans+=(LL)noss-agss+(nomm-agmm)*60+(noh-agh)*3600;
38     if(ans) printf("%lld000",ans); else puts("0");
39     return 0;
40 }
two

3 5

P73 死亡

死亡

【問題描述】

現在有 個位置可以打 sif,有 + 1個人在排隊等著打 sif。現在告訴你前個人每個人需要多長的時間打 sif,問你第 + 1個人什麽時候才能打 sif。(前個人必須按照順序來)

【輸入格式】

第一行兩個整數 , 如上所述。

接下來 行每行一個整數代表每個人所需要用的時間。

【輸出格式】

一行一個整數表示答案。

【樣例輸入】

3 2

1

1

1

【樣例輸出】

1

【樣例解釋】

山裏有座廟。

【數據規模與約定】

對於100%的數據,每個人所需用的時間不超過105

測試點

測試點

1

10

10

1

5000

500

2

20

10

2

100000

5000

3

50

10

3

100000

10000

4

1000

500

4

100000

20000

5

2000

500

5

100000

50000

 1 #include <algorithm>
 2 #include <cstdio>
 3 #include <queue>
 4 
 5 #define LL long long
 6 
 7 using namespace std;
 8 
 9 priority_queue<LL,vector<LL>,greater<LL> >que;
10 const int N(1e6+15);
11 LL n,m,tim[N],temp;
12 
13 int main()
14 {
15     freopen("death.in","r",stdin);
16     freopen("death.out","w",stdout);
17     scanf("%lld%lld",&n,&m);
18     for(int i=1;i<=n;i++) scanf("%lld",tim+i);
19     for(int i=1;i<=m;i++) que.push(tim[i]);
20     for(int i=m+1;i<=n;i++)
21     {
22         temp+=que.top();
23         que.pop();
24         que.push(tim[i]+temp);
25     }
26     printf("%lld",que.top());
27     return 0;
28 }

4 5

P73 凝視

凝視

【問題描述】

背包是個好東西,希望我也有。

給你一個二維的背包,它的體積是 × 。現在你有一些大小為1 × 2和1 × 3的物品,每個物品有自己的價值。你希望往背包裏面裝一些物品,使得它們的價值和最大,問最大的價值和是多少。

【輸入格式】

第一行一個整數 代表該測試點的數據組數。

對於每組數據,第一行有四個整數 , , 1, 2,其中 1, 2分別代表大小為 1 × 2和大小為1 × 3的物品個數。

接下來一行有 1個數代表每個1 × 2物品的價值。接下來一行有 2個數代表每個1 × 3物品的價值。

【輸出格式】

對於每組詢問,輸出能夠達到的價值最大值。

【樣例輸入】

1

2 3 2 2

1 2

1 2

【樣例輸出】

4

【樣例解釋】

廟裏有座山。

【數據規模與約定】

對於20%的數據, , ≤ 10, 1, 2 ≤ 100。對於70%的數據, , ≤ 100, 1, 2 ≤ 2000。

對於100%的數據,1 ≤ ≤ 10,1 ≤ , ≤ 500,0 ≤ 1, 2 ≤ 10000。

2017 無奈的模擬賽