Skip to content
Logic Formatting

Logic Formatting

C. Shaass and Lights 解析(思維、組合)

Posted on 2025 年 1 月 11 日 By jeff

Codeforce 294 C. Shaass and Lights 解析(思維、組合)

今天我們來看看CF294C
題目連結

題目
給你$n$個燈泡,其中$m$個已經點亮。每次你可以點亮一個旁邊有亮燈泡的燈泡,求有多少方法可以點亮所有燈泡。

前言

這題的想法真的很酷炫

想法

把每個連續沒亮燈泡的區域當成一種元素(也就是說:暗暗暗亮暗暗暗亮暗暗暗,這種情況就看成$AAABBBCCC$),如此一來重複排列的可能性是$\frac{9!}{3!3!3!}$,而只要區段不是接壤頭或接壤尾,其中長度為$k$的沒亮燈泡區段其中有$k-1$次都有兩種選擇,因此答案只要再乘上$2$的若干次方即可。

程式碼:

const int _n=1010;  
int t,n,m,a[_n],fac[_n],inv[_n],c;  
VI cnt;  
main(void) {ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);  
  cin>>n>>m;rep(i,0,m){cin>>t;a[t]=1;}  
  a[n+1]=1;rep(i,1,n+2){  
    if(a[i]==1 and c)cnt.pb(c),c=0;  
    if(a[i]==0)c++;  
  }c=0;if(a[1]==0)c+=cnt[0]-1;if(a[n]==0)c+=cnt.back()-1;  
  fac[0]=1;rep(i,1,n+1)fac[i]=1ll*fac[i-1]*i%mod;  
  inv[n]=powmod(fac[n],mod-2);per(i,0,n)inv[i]=1ll*inv[i+1]*(i+1)%mod;  
  ll ans=fac[n-m];rep(i,0,SZ(cnt))ans=ans*inv[cnt[i]]%mod;  
  ans=ans*powmod(2,n-m-SZ(cnt)-c)%mod;cout<<ans<<'\n';  
  return 0;  
}  

標頭、模板請點Submission看
Submission

ojcode codeforceojcode思維組合

文章導覽

Previous post
Next post

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

近期文章

  • B. Kyoya and Permutation 解析(思維、數論、DP)
  • G. Guess One Character 解析(思維)
  • E. The Road to Berland is Paved With Good Intentions 解析(思維、2-SAT、SCC、拓樸排序)
  • E. Xor-sequences 解析(思維、矩陣快速冪)
  • LeetCode. First Missing Positive 解析(思維)

近期留言

尚無留言可供顯示。

彙整

  • 2025 年 2 月
  • 2025 年 1 月

分類

  • ojcode
©2026 Logic Formatting | WordPress Theme by SuperbThemes