日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

          歡迎訪問 生活随笔!

          生活随笔

          當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

          编程问答

          花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)

          發(fā)布時間:2024/9/5 编程问答 38 豆豆
          生活随笔 收集整理的這篇文章主要介紹了 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

          題意簡介

          沒什么好說,就是讓你求出 1 ~ n 之間每個數(shù)轉(zhuǎn)化為二進制后 '1' 的個數(shù),然后乘起來輸出積

          ?

          題目分析

          emmmm.... 兩種解法(同是 $O(\log^2 N)$ 的算法,組合數(shù)效率完爆 數(shù)位dp,當然是我自己的數(shù)位dp)。

        1. 組合數(shù)直接艸。(數(shù)據(jù)范圍8e9 能過,其實這個東西你搞一搞 __int128 什么的再找個大質(zhì)數(shù)也許也能過去啦)(好吧這個直接暴力預處理組合數(shù)的數(shù)組就好了)
        2. 老老實實數(shù)位dp。(可以AC)
        3. 于是翻車了...這么久

          ?

          算法實現(xiàn)

          1. 組合數(shù)?

          組合數(shù)非常好做,只需要想想第 i 位為 1 的位上后面那一堆數(shù)字里面挑出 j 個數(shù)的方案就好了,注意加上 cnt ,然后最后快速冪累加一下答案,分分鐘搞定

          然后這里用了逆元處理組合數(shù)要預處理的階乘,如果你還不會線性求逆元的話可以點這里

          當然這里用逆元...就是作死...我們完全可以預處理出 50 * 50 的楊輝三角數(shù)組,存好組合數(shù)直接用

          ?

          2.數(shù)位dp

          ...不就是枚舉 1 的個數(shù)然后記憶化深搜么?hem...聽起來完全沒有組合數(shù)高級

          ?

          ?

          ?

          代碼實現(xiàn)

          1.組合數(shù)

          1 //by Judge 2 #include<iostream> 3 #include<cstdio> 4 #define ll long long 5 using namespace std; 6 const int M=55; 7 const ll mod=1e7+7; 8 ll n,len,cnt,ans=1; 9 ll C[M][M],d[M],num[M]; 10 inline void prep(){ //預處理組合數(shù)模板? 11 for(int i=0;i<=50;++i) C[i][0]=1; 12 for(int i=1,j;i<=50;++i) for(j=1;j<=50;++j) 13 C[i][j]=C[i-1][j]+C[i-1][j-1]; 14 } 15 inline ll quick_pow(ll x,ll p,ll ans=1){ //快速冪模板? 16 while(p){ 17 if(p&1) ans=ans*x%mod; 18 x=x*x%mod, p>>=1; 19 } return ans; 20 } 21 signed main(){ 22 cin>>n,prep(); 23 while(n) d[++len]=n&1,n>>=1;//轉(zhuǎn)化二進制 24 for(ll i=len,j;i;--i) if(d[i]){ 25 for(j=1;j<i;++j) //組合數(shù)就是隨便亂艸的算法 26 num[cnt+j]+=C[i-1][j]; 27 ++num[++cnt]; 28 } 29 for(ll i=1;i<=len;++i) //直接累乘就好 30 ans=ans*quick_pow(i,num[i])%mod; 31 cout<<ans<<endl; return 0; 32 }

          ?

          ?

          ?

          ?

          2.數(shù)位dp

          1 //by Judge 2 #include<iostream> 3 #include<cstring> 4 #include<cstdio> 5 #define ll long long 6 using namespace std; 7 const int M=55; 8 const int mod=1e7+7; 9 int cnt,x[M]; 10 ll n,f[M][2][M][M],num[M]; 11 inline ll quick_pow(ll x,ll p,ll ans=1){ 12 while(p) (p&1) && (ans=ans*x%mod),x=x*x%mod, p>>=1; 13 return ans; 14 } 15 ll dp(int cur,int up,int tmp,int d){ //記憶化深搜,log^2 n 無壓力 16 if(!cur) return tmp==d; //特判直接返回 17 if(~f[cur][up][tmp][d]) return f[cur][up][tmp][d]; // 已記憶,直接返回 18 int lim=up?x[cur]:1; 19 ll res=0; 20 for(int i=0;i<=lim;++i) //繼續(xù)深搜 21 res+=dp(cur-1,up&&i==lim,tmp+(i==1),d); 22 return f[cur][up][tmp][d]=res; //記憶化 23 } 24 ll solv(){ 25 while(n) x[++cnt]=n&1,n>>=1; //同上轉(zhuǎn)化 26 for(int i=1;i<=50;++i) //枚舉要放入的 1 的位數(shù) 27 memset(f,-1,sizeof(f)), 28 num[i]=dp(cnt,1,0,i); 29 ll res=1; 30 for(int i=1;i<=50;++i) //累乘進答案 31 res=res*quick_pow(i,num[i])%mod; 32 return res; 33 } 34 signed main(){ cin>>n,cout<<solv()<<endl; return 0; }

          ?

          轉(zhuǎn)載于:https://www.cnblogs.com/Judge/p/9540939.html

          總結(jié)

          以上是生活随笔為你收集整理的花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

          如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

          主站蜘蛛池模板: 芭乐视频色 | 亚洲高清在线一区 | 亚洲影院中文字幕 | 中文字幕人妻色偷偷久久 | 黄色视屏在线 | 国产人妖网站 | 亚洲欧洲成人精品久久一码二码 | 亚洲一区二区自拍偷拍 | 手机看片福利视频 | 亚洲黄色在线观看 | 日韩一区二区不卡视频 | 污污内射久久一区二区欧美日韩 | 日日射日日操 | 国产在线一区视频 | 天堂网资源 | 贝利弗山的秘密在线观看 | 晨勃顶到尿h1v1 | 欧美在线视频一区 | ww黄色| 自拍欧美日韩 | 尤物视频在线观看免费 | 日韩一级视频 | 中文字幕三级电影 | 在线成人亚洲 | 足疗店女技师按摩毛片 | 成人免费观看视频网站 | 国产欧洲亚洲 | 久久婷婷色综合 | 日本护士取精xxxxxhd | 久久在线| 激情国产 | 亚洲AV无码乱码国产精品牛牛 | 91精品91久久久中77777 | 久久久久无码精品国产 | 黄网站在线观 | 国产精品456| 精品人妻少妇嫩草av无码 | 伊人久久久久久久久久久久久 | 国产精品丝袜在线 | 丝瓜色版 | 国产日韩欧美久久 | caoprom在线| 日韩在线电影一区二区 | 韩国jizz | 超碰在线观看97 | 日韩av资源| 新婚之夜玷污岳丰满少妇在线观看 | 好了av在线 | 在线看b| 毛片一二三区 | 欧美亚洲日本国产 | 亚洲综合色吧 | 日日操日日 | 九九热免费视频 | 男人天堂视频在线 | 四川丰满少妇被弄到高潮 | 91成人在线观看喷潮 | 9999免费视频 | 亚洲码中文 | 日韩一区二区免费看 | 日韩视频 中文字幕 | 波多野结衣av在线播放 | 美女免费av | 欧美色99 | 青青视频免费观看 | 69xx网站| 最近中文字幕在线中文视频 | 青青伊人国产 | 亚洲午夜精品一区二区三区他趣 | 高h校园不许穿内裤h调教 | 日本久久片 | 久久女同互慰一区二区三区 | 欧洲在线观看 | 午夜黄色剧场 | 久久人人超碰 | 182tv午夜福利在线观看 | 久久精品导航 | 男女做网站 | 国内成人精品 | 久久资源在线 | 国产午夜精品无码 | 午夜一区二区三区四区 | 亚洲午夜免费视频 | 美女午夜影院 | 免费观看国产精品 | 久久久久国产精 | 草草视频在线 | 一女三黑人理论片在线 | 亚洲国产精一区二区三区性色 | 丝袜美女被c | 日韩欧美在线不卡 | 日本欧美一区二区三区不卡视频 | 在线黄av | 黄色小视频在线免费看 | 最好看的2019中文大全在线观看 | 久久精品在线播放 | 亚洲精品视频观看 | 国产午夜久久 | 日韩在线观看视频网站 |