題目傳送門
又到了開心的2小時過6題三小時卡一題的環節…(太菜了)qwq
這一切一切的原因是什麼呢?
ta這個小(zhi)機(zhang)靈(er)鬼(tong)把這句話看丟了!!!
首(du)見(cuo)這道題的ta就很興奮的認為這不就是乙個組合數嘛!..然後就寫了半天組合數(對dp的敏銳程度還不夠)寫組合數就算了…但是機(yu)智(chun)的zbw還發現組合數的複雜度太高了!(l-r的查詢是一層,每個查詢還有乙個r/k的複雜度,就算用字首和也是len*r/k的複雜度),不行,好不容易寫出來的組合數不能就這樣放棄,於是機(fan)智(er)的zbw使出了ta的看家本領!–找規律!!! 你別說還真的讓zbw找到了乙個隱隱約約的規律:
上圖:
當zbw看到k等於2時那一連串熟悉的數字,ta高興壞了這不是傳說中的(神奇的)(無處不在的)斐波那契數列嘛!
當zbw看到k等於3和4時那一連串類似的數字時,他覺得自己已經無(bing)人(ru)能(gao)敵(huang)啦!這不就是k個數相加得到的結果嘛!無非是錯了k-2位.
於是ta寫下了規律ans
[l+k
+k−2
]=∑i
=ll+
k−1a
ns[i
]ans[l+k+k-2]=\sum^_ans[i]
ans[l+
k+k−
2]=∑
i=ll
+k−1
ans
[i]
於是zbw就寫下了讓ta找了三個小時bug的**:
#include
#include
#include
#include
#define max 200020
#define ll long long
#define mod 1000000007
using
namespace std;
ll sum[max]
;ll jc[max]
;ll ans[max]
;int k,n;
void
getjc()
}ll mul
(ll a,ll b)
return ans;
}ll getinv
(ll x)
ll getans
(int num)
return ans;
}int
main()
ll now=0;
for(
int i=
1;i<=k;i++
) now=
(now+ans[i]
)%mod;
for(
int i=
1;i+k+k-
2) sum[0]
=0;for
(int i=
1;i)for
(int i=
0;i)return0;
}
等到zbw看完正解,整個人都崩潰了…(dp真的是一門學問)
ac**:
#include
#include
#include
#define max 100005
#define mod 1000000007
using
namespace std;
typedef
long
long ll;
int dp[max][4
]=;int sum[max]
;int
main()
sum[0]
=0;for
(int i=
1;i)for
(int i=
0;i)return0;
}}
貼個官方題解:
做題千萬條,讀題第一條,讀題不規範,親人兩行淚!!!
牛客寒假訓練營4 F
題目傳送門 這個題其實是一道送分題 可是我被卡在神 gai 奇 si 的e題上了,沒有時間寫這個水題了 e題是如此的神 e 奇 xin 以至於我實在是不想給它單獨寫一篇總結 不就是乙個貪心 高精 讀一遍題,稍稍畫圖看一下就知道是要你求樹上有幾對點之間的距離為偶數在稍微觀察一下就能發現,深度為奇數的節...
2020牛客寒假演算法基礎集訓營5 F題
hello 偶又來啦,為啥要乙個題乙個題的發呢,是因為每個題目的題型不一樣呀,我要把他們分類,於是我就一篇一篇的發啦 這是一道dp題 我好像首次寫dp的部落格欸 不行,我要再接再厲ovo 傳送門 題目的大概意思就是後台judge機制,有效的提交是這麼說 有ac,還有wa啦啥啥啥的,首先給你乙個數x,...
牛客寒假演算法基礎演算法訓練營2
1 座與重修費 題目描述 期末考試結束了,座發現很多人掛了大物,只能等著第二年重修,還要交400元的重修費。座突然想起有個學長和他講過,如果學校哪一年缺錢了,那一年的大物試卷就會特別難。現在 座有了所有人的成績,座想知道如果所有掛科的人都在第二年重修,學校能賺多少重修費?掛科是指一門課的分數小於60...