二、p1002 過河卒(動態規劃)
先在各大 oj 上有 n 個比賽,每個比賽的開始、結束的時間點是知道的。所以,想知道最多能參加幾個比賽。
如果要參加乙個比賽必須善始善終,而且不能同時參加 2 個及以上的比賽。
第一行是乙個整數 n ,接下來 n 行每行是 2 個整數,表示比賽開始、結束的時間。
乙個整數,最多參加的比賽數目。
> 輸入:
30 2
2 41 3
> 輸出:
2
下一場比賽的開始時間主要取決於上一場比賽的結束時間,上一場比賽的結束得越早,那麼下一場開始得也就越早,這樣最後才能參加越多得比賽,所以首先我們需要將每場比賽按照結束時間由小到大排序,然後根據下一場的開始時間和上一場的結束時間來計算最多可以參加多少場比賽!
#include
#include
struct match
s[1000000];
intmain()
int count =1;
/* 用來計數 */
int flag =0;
for(
int i =
1; i < n; i++)if
(s[flag]
.end <= s[i]
.start)
/* 下次比賽開始時間要大於上次比賽結束時間 */
printf
("%d"
, count)
;return0;
}
棋盤上 a 點有乙個過河卒,需要走到目標 b 點。卒行走的規則:可以向下、或者向右。同時在棋盤上 c 點有乙個對方的馬,該馬所在的點和所有跳躍一步可達的點稱為對方馬的控制點。因此稱之為「馬攔過河卒」。棋盤用座標表示,a 點 (0, 0)、b 點 (n, m),同樣馬的位置座標是需要給出的。
現在要求你計算出卒從 a 點能夠到達 b 點的路徑的條數,假設馬的位置是固定不動的,並不是卒走一步馬走一步。
一行四個正整數,分別表示 b 點座標和馬c的座標。乙個整數,表示所有的路徑條數。> 輸入:
6 6 3 3
> 輸出:
6
卒行走的規矩是可以向下、或者向右,所以到達某點的前乙個點必然是上邊或左邊的點,如果到達上邊一點的路徑有n條,到達左邊一點的路徑有m條,那麼到達該點的路徑則是(n+m)條,這個思想明白後,我們只需要將對方馬的控制點做乙個標記,使得這個點無法到達就可以了。#include
#include
#include
const
int fx=
;const
int fy=
;unsigned
long
long f[30]
[30];
/* 答案可能會超出int型別的長度 */
bool s[30]
[30];
/* 用來標記對方馬的控制點 */
intmain()
}printf
("%llu"
, f[bx]
[by]);
/* 該點的值即為路徑總和 */
return0;
}
洛谷題型摘選(一)
二 兩數之和 三 金幣 總結給出n 1 n 13 請輸出乙個直角邊長度是 n 的數字直角三角形。所有數字都是 2 位組成的,如果沒有 2 位則加上前加 0。輸入 5輸出 0102030405 06070809 101112 1314 15看到輸出的結果後,我首先想到的就是以前寫過的那個數字金字塔,很...
洛谷 桌球
國際乒聯現在主席沙拉拉自從上任以來就立志於推行一系列改革,以推動桌球運動在全球的普及。其中111111分制改革引起了很大的爭議,有一部分球員因為無法適應新規則只能選擇退役。華華就是其中一位,他退役之後走上了桌球研究工作,意圖弄明白111111分制和212121分制對選手的不同影響。在開展他的研究之前...
洛谷 保齡球
dl 算緣分算得很煩悶,所以常常到體育館去打保齡球解悶。因為他保齡球已經打了幾十年了,所以技術上不成問題,於是他就想玩點新花招。dl 的視力真的很不錯,竟然能夠數清楚在他前方十公尺左右每個位置的瓶子的數量。他突然發現這是乙個炫耀自己好視力的藉口 他看清遠方瓶子的個數後從某個位置發球,這樣就能打倒一定...