ZOJ 3725 Painting Storages DP+排列計數

來源:互聯網
上載者:User

              轉載於http://blog.csdn.net/zu_xu/article/details/9401497

         採用遞推:當N<M時,必不存在滿足條件的方法,因而結果為0;N=M時,方案數恰好為1。N>M時,若1到N-1滿足條件,則N可以任意染色,方案數為C(N-1)*2;否則,必有1到N-M-1不滿足條件,N-M為藍,N-M+1到N-1為紅,這時將N染成紅色即可,方案數為2^(N-M-1)-C(N-M-1),即1到N-M-1所有的染色方案數減去滿足條件的方案數。

#include <cstdio>#include <memory.h>#define mod 1000000007typedef long long ll;ll pow2[100000];ll iter[100001];int main(){    int n, m;    *pow2 = 1;    for(int i=1; i<100000; ++i)        pow2[i] = (pow2[i-1]*2)%mod;    while(~scanf("%d%d", &n, &m))    {        if(n < m)            printf("0\n");        else if(n == m)            printf("1\n");        else        {            memset(iter, 0, m*sizeof(ll));            iter[m] = 1;            for(int i=m+1; i<=n; ++i)                iter[i] = (2*iter[i-1]+pow2[i-m-1]-iter[i-m-1]+mod)%mod;            printf("%lld\n", iter[n]);        }    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.