Luogu3750 六省聯考2017 分手是祝願

2022-05-17 14:47:05 字數 1451 閱讀 6268

運用貪心的策略,如果我們想要盡快關閉所有的燈,顯然從編號大的到編號小的關更優

那麼我們可以計算出關燈的最小次數\(cnt\)

如果\(cnt \le k\),顯然答案就是\(cnt\)

如果\(cnt > k\),我們考慮\(dp\)

由於不同的鍵的效果是互不相同的,不存在乙個鍵被代替的情況

設\(dp_i\)表示從最少需要按\(i\)個鍵轉移到最少需要按\(i-1\)個鍵的期望按鍵數量

\[dp_i=\frac+\frac (dp_+1+dp_i)

\]解釋一下,\(\frac\)表示湊巧按對了的期望,\(\frac\) 是按錯的概率,既然按錯了就需要按回來,需要按\(dp_\)次,這次按了\(1\)鍵,需要加\(1\),注意,\(dp_i\)表示從最少需要按\(i\)個鍵轉移到最少需要按\(i-1\)個鍵的期望按鍵數量,那麼我們還需要轉移到最少需要按\(i-1\)個鍵,需要按\(dp_i\)次

推一下式子,得出遞推式:

\[dp_i=\frac+\fracdp_

\]顯然,我們要從\(cnt\)開始轉移,但是\(dp_\)是啥啊?

要求出\(dp_\),我們還需要前面的值,什麼時候值是可知的呢?

可以從\(dp_n=1\)開始轉移(需要按\(n\)個鍵,瞎按也\(100\%\)按到,我的**裡用了這個)

也可以從\(dp_=0\)開始轉移(感性理解,頂多按\(n\)鍵,不用按就少一鍵)

隨便挑吧!

這裡有個奇怪的問題,明明只用按\(cnt\)鍵,我們為什麼處理到了\(dp_n\)呢,它的意義何在?

其實\(dp_n\)是有意義的,因為本來只需要按\(cnt\)次,但是被\(b\)君隨機瞎按按壞啦,以至於退化到需要按\(n\)鍵

現在就沒有什麼疑問了吧?

\(c++ code:\)

#include#include#include#include#define n 100005

#define p 100003

#define ll long long

using namespace std;

int n,k,cnt;

ll inv[n],dp[n];

bool close[n];

vectorg[n];

int main()

for (int i=1;i<=n;i++)

scanf("%d",&close[i]);

for (int i=n;i>=1;i--)

if (close[i])

ll ans=k;

if (cnt<=k)

ans=cnt; else

for (int i=1;i<=n;i++)

ans=ans*(ll)i%p;

ans=(ans%p+p)%p;

printf("%lld\n",ans);

return 0;

}

六省聯考2017

luogu lojbzoj 顯然我們只需要考慮最後公布成績的那一天。列舉這一天,預處理字首和之後即可 o 1 計算最小代價。注意倒數第二個subtask這最優的日期就是 min b i 直接計算即可。如果套用通法會爆long long,但是開unsigned long long就行了 include...

六省聯考 壽司餐廳

太長了,不描述!看題面看了10min才反應過來這是個最大權值閉合子圖的問題 應用網路流最小割的模型來解決本問題 首先,每個壽司編號即為器材,代價為 w i w i m 那麼我們由每個壽司編號向匯點鏈結一條容量為w i w i m 每個壽司一定需要乙個壽司編號,代價為 w i 那麼我們由壽司向壽司編號...

題解 六省聯考2017

題目順序不是做題順序也不是考試順序更不是難度順序,是隨機順序。為了不影響 體驗決定把 刪去,需要請私信我,qq或皆可。題目裡的難度評分是個人評分,僅供參考開心就好。題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度...