青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

bon

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  46 Posts :: 0 Stories :: 12 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

poj 2748

這道題跟Fibonacci在解法上一樣,不過這道題特殊的地方在于測試數據非常多,用普通的做法(t*log200000000)會超時。

推導到這一步:f[i]=3*f[i-1]-f[i-2],其中f[i]是輸入i時的解。
最樸素的辦法就是對每個i都從0開始遞推。這樣最壞復雜度是O(t*200000000)。
改進的辦法是,將遞推式寫成矩陣相乘的式子,具體見借助矩陣快速計算總結與。

代碼還是比較簡單的:
 1 // 2748 matrix formula
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 int first[2]={1,1};
 8 int trans[2][2]={{3,-1},{1,0}};
 9 __int64 tmp[31][2][2];
10 __int64 p[31];
11 int e[31];
12 int a[10000000];
13 
14 void init()
15 {
16     p[0]=1;
17     int i,j;
18     for(i=1;i<=30;i++) p[i]=2*p[i-1];
19     tmp[0][0][0]=3,tmp[0][0][1]=-1,tmp[0][1][0]=1,tmp[0][1][1]=0;
20     for(i=1;i<=30;i++){
21         tmp[i][0][0]=(tmp[i-1][0][0]*tmp[i-1][0][0]+tmp[i-1][0][1]*tmp[i-1][1][0])%100000;
22         tmp[i][0][1]=(tmp[i-1][0][0]*tmp[i-1][0][1]+tmp[i-1][0][1]*tmp[i-1][1][1])%100000;
23         tmp[i][1][0]=(tmp[i-1][1][0]*tmp[i-1][0][0]+tmp[i-1][1][1]*tmp[i-1][1][0])%100000;
24         tmp[i][1][1]=(tmp[i-1][1][0]*tmp[i-1][0][1]+tmp[i-1][1][1]*tmp[i-1][1][1])%100000;
25     }
26     a[0]=1;
27     a[1]=1;
28     for(i=2;i<10000000;i++){
29         a[i]=(3*a[i-1]-a[i-2]+200000)%100000;
30     }
31 }
32 
33 int solve(int n)
34 {
35     memset(e,0,sizeof(e));
36     int nn=n;
37     int i=0;
38     while(nn!=0){
39         int x=nn%2;
40         nn/=2;
41         e[i++]=x;
42     }
43     __int64 res[2][2]={{1,0},{0,1}},t[2][2];
44 
45     for(i=0;i<=30;i++){
46         if(e[i]){
47             t[0][0]=res[0][0]*tmp[i][0][0]+res[0][1]*tmp[i][1][0];
48             t[0][1]=res[0][0]*tmp[i][0][1]+res[0][1]*tmp[i][1][1];
49             t[1][0]=res[1][0]*tmp[i][0][0]+res[1][1]*tmp[i][1][0];
50             t[1][1]=res[1][0]*tmp[i][0][1]+res[1][1]*tmp[i][1][1];
51             res[0][0]=t[0][0]%100000,res[0][1]=t[0][1]%100000,res[1][0]=t[1][0]%100000,res[1][1]=t[1][1]%100000;
52         }
53     }
54     
55     int ans=(res[0][0]+res[0][1]+200000)%100000;
56     printf("%d\n",ans);
57     return ans;
58 }
59 
60 int main()
61 {
62     //printf("%d\n",(-11)%10);
63     init();
64     int t,n;
65     /*
66     scanf("%d",&t);
67     while(t--){
68         scanf("%d",&n);
69         if(n<10000000) printf("%d\n",a[n]);
70         else solve(n-1);
71     }
72     */
73     int x,y;
74     for(int i=2;i<2000000000;i++){
75         if(i<10000000) {x=y,y=a[i];}
76         else {x=y;y=solve(i-1);}
77         if(x==1 && y==1){printf("period=%d\n",i);break;}
78     }
79     return 1;
80 }


最后還是看了discuss里的解法,f[i]其實是以75000為循環節:f[75000]=f[0],f[75001]=f[1]且f是2階的遞推式。編程算出前10000000個數,然后逐個枚舉就能找出循環節。

這道題給我影響深刻的地方在于可以找循環節。

代碼非常簡單:
 1 // 2748 matrix formula
 2 
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 int a[75000];
 8 
 9 void init()
10 {
11     a[0]=1;
12     a[1]=1;
13     for(int i=2;i<75000;i++){
14         a[i]=(3*a[i-1]-a[i-2]+200000)%100000;
15     }
16 }
17 int main()
18 {
19     init();
20     __int64 t,n;
21     scanf("%I64d",&t);
22     while(t--){
23         scanf("%I64d",&n);
24         if(n<75000) printf("%d\n",a[n]);
25         else printf("%d\n",a[n%75000]);
26     }
27     return 1;
28 }
posted on 2008-06-09 15:29 bon 閱讀(622) 評論(0)  編輯 收藏 引用 所屬分類: Programming Contest

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


Google PageRank 
Checker - Page Rank Calculator
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            榴莲视频成人在线观看| 狂野欧美一区| 国产精品久久看| 亚洲免费视频成人| 亚洲一级一区| 国产欧美日韩三区| 美女被久久久| 欧美黄色成人网| 亚洲影院色无极综合| 亚洲在线不卡| 伊人久久噜噜噜躁狠狠躁| 欧美黄色视屏| 欧美日韩亚洲免费| 久久aⅴ国产紧身牛仔裤| 久久久久久久久久久久久女国产乱| 国模私拍一区二区三区| 欧美激情麻豆| 国产精品剧情在线亚洲| 久久久蜜桃精品| 欧美国产91| 亚洲欧美综合另类中字| 久久久久免费| 亚洲视频在线观看网站| 久久se精品一区二区| 最新国产精品拍自在线播放| 亚洲视频网在线直播| 狠狠综合久久| a91a精品视频在线观看| 国产一区二区在线观看免费播放| 亚洲电影第1页| 国产伦精品一区二区三区视频孕妇| 久久综合伊人77777麻豆| 欧美日韩精品一区二区三区四区| 久久精品欧美日韩| 欧美日韩国产成人| 麻豆国产精品va在线观看不卡| 欧美精品一区二区三区蜜桃| 久久天堂成人| 国产精品毛片在线看| 欧美电影在线观看完整版| 国产精品播放| 亚洲国产视频直播| 一区二区在线看| 亚洲视频专区在线| 99视频+国产日韩欧美| 久久九九热免费视频| 亚洲一区二区三区成人在线视频精品| 欧美中文字幕| 香蕉久久夜色| 欧美视频日韩视频| 亚洲国产专区校园欧美| 在线成人小视频| 亚洲欧美日韩高清| 亚洲一级二级在线| 欧美女主播在线| 亚洲国产高清自拍| 亚洲国产精品va在看黑人| 久久精品91久久久久久再现| 欧美一区二区黄色| 国产精品视频xxxx| 亚洲一区精彩视频| 香蕉久久夜色精品国产| 国产精品多人| 亚洲一区二区三区中文字幕| 亚洲宅男天堂在线观看无病毒| 欧美日本精品在线| 亚洲日韩欧美视频一区| 日韩一级网站| 欧美日韩国产页| 亚洲精品久久久蜜桃| 99精品欧美一区| 欧美日本一道本| 一区二区高清在线观看| 亚洲在线中文字幕| 国产精品午夜在线观看| 亚洲欧美在线磁力| 久久精品国产欧美激情| 国产主播在线一区| 久久综合一区二区| 亚洲国产天堂网精品网站| 日韩亚洲一区在线播放| 欧美日韩中文| 午夜久久一区| 免费亚洲一区二区| 99视频一区二区| 国产精品成人一区二区三区吃奶| 亚洲永久免费av| 久久午夜影视| 亚洲精品一二三区| 国产精品扒开腿做爽爽爽视频| 午夜精品久久久久久久白皮肤 | 久久人人爽人人| 亚洲福利视频二区| 亚洲婷婷在线| 国产一区二区三区电影在线观看| 久久福利一区| 亚洲精品日韩欧美| 久久精品亚洲国产奇米99| 在线观看中文字幕亚洲| 欧美日韩一级视频| 久久久av毛片精品| 日韩一区二区精品视频| 久久久91精品国产一区二区三区 | 老司机免费视频一区二区三区| 亚洲国内精品| 欧美午夜一区二区福利视频| 久久国产精品亚洲77777| 亚洲精品美女久久久久| 欧美在线观看网站| 一二三四社区欧美黄| 国产一区二区三区在线观看精品| 欧美精品一区二区三区高清aⅴ| 亚洲欧美怡红院| 亚洲美女福利视频网站| 久久亚洲高清| 亚洲欧美福利一区二区| 亚洲人久久久| 好吊色欧美一区二区三区四区| 欧美日韩黄色大片| 久久综合给合| 久久精品国产免费| 一区二区高清视频在线观看| 欧美国产第一页| 久久亚洲精品欧美| 西西裸体人体做爰大胆久久久| 日韩一级大片在线| 91久久精品日日躁夜夜躁国产| 国产日韩一级二级三级| 国产精品国产三级国产普通话三级| 鲁大师影院一区二区三区| 性色一区二区| 亚洲欧美日韩国产一区| 亚洲天堂第二页| 亚洲免费电影在线| 91久久国产自产拍夜夜嗨| 欧美电影资源| 男女激情久久| 榴莲视频成人在线观看| 久久久久久91香蕉国产| 欧美伊人影院| 久久精品五月| 久久精品99国产精品| 久久爱www久久做| 新67194成人永久网站| 亚洲欧美一区二区视频| 亚洲在线视频| 欧美一区二区观看视频| 欧美一区二区三区日韩视频| 欧美一区二区视频在线| 久久高清国产| 久久久久久亚洲精品杨幂换脸| 久久国产精品久久国产精品| 久久久精品久久久久| 久久亚裔精品欧美| 欧美aⅴ一区二区三区视频| 欧美成人有码| 亚洲精品乱码久久久久久按摩观| 亚洲精品中文字| 亚洲视频在线看| 亚洲欧美日本国产有色| 久久国产精品毛片| 久久中文字幕导航| 欧美破处大片在线视频| 国产精品99免费看| 国内精品视频666| 亚洲国产日韩欧美在线动漫| 夜夜爽夜夜爽精品视频| 新67194成人永久网站| 久久精品亚洲一区| 欧美激情91| 一本久久综合亚洲鲁鲁| 欧美一级在线播放| 欧美福利电影网| 国产精品系列在线播放| 在线日本高清免费不卡| 亚洲视频大全| 久久阴道视频| aa成人免费视频| 久久久国产精品一区二区中文| 欧美激情欧美激情在线五月| 国产精品一区毛片| 亚洲黄色影院| 欧美一区二区三区的| 亚洲成人自拍视频| 中文一区二区| 欧美.www| 国产人成精品一区二区三| 亚洲精品黄色| 久久精品国产精品亚洲综合| 亚洲黄色天堂| 久久精品中文字幕一区二区三区| 欧美日本免费| 国产亚洲欧洲一区高清在线观看| 日韩视频不卡中文| 久久先锋资源| 午夜视频一区二区| 欧美视频免费看| 亚洲精品在线免费观看视频| 狂野欧美一区| 午夜精品美女自拍福到在线 |