剛看到這道題,就是正向暴力遞迴暴力出所有情況,而且資料範圍這麼小,就寫了暴力遞迴,但是。。。tle好幾個點。。。
仔細跟著程式走了一遍樣例,發現暴力遞迴過程中好多點都重複計算,重複暴力了,so就改變思維寫了逆向遞推遞迴+記憶化ac了
需要注意的是:環,邊界處理,有的人用的取餘方法,我用的if特判的方法。
暴力遞迴
1 #include 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8
using
namespace
std;
9 typedef long
long
ll;10 typedef unsigned long
long
ull;
11const
int maxn=1e6+5;12
inta[maxn];
13int
n,m;
14int
ans;
1516
void so(int last,int
step)
1723
24int r=last+1,l=last-1;25
if(r>n) r=1;26
if(l<1) l=n;
27 so(r,step+1
);28 so(l,step+1
);29}30
31int
main()
32
遞推遞迴+記憶化
1 #include 2 #include3 #include 4 #include 5 #include 6 #include 7 #include 8
using
namespace
std;
9 typedef long
long
ll;10 typedef unsigned long
long
ull;
11const
int maxn=1e6+5;12
inta[maxn];
13int ans[1005][1005
];14
intn,m;
15int f=0;16
17int so(int last,int
step)
1827
28int r=last+1,l=last-1;29
if(r>n) r=1;30
if(l<1) l=n;
31int ans=0
;32 ans=ans+so(r,step-1
);33 ans=ans+so(l,step-1
);34
35 ans[last][step]=ans;
36return
ans[last][step];37}
3839
intmain()
40
完。
洛谷 P1057 傳球遊戲
題目描述 上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出...
洛谷 P1057 傳球遊戲
題目描述 上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出...
P1057 傳球遊戲 洛谷
上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出去的那個同...