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

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 閱讀(621) 評論(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>
            亚洲激情精品| 亚洲理论在线观看| 老司机成人网| 99精品视频一区| 亚洲欧美日韩区| 亚洲自拍都市欧美小说| 一区二区三区免费观看| 一区二区三区精品在线| 国产精品99久久久久久人| 亚洲婷婷在线| 久久激情网站| 欧美福利电影网| 亚洲免费久久| 欧美亚洲一区在线| 狂野欧美性猛交xxxx巴西| 欧美大片专区| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧美日韩久久精品 | 亚洲免费激情| 午夜在线成人av| 亚洲春色另类小说| 亚洲一区欧美二区| 老色鬼久久亚洲一区二区| 欧美日韩精品一区二区| 国产亚洲一级| 亚洲素人一区二区| 免费观看成人www动漫视频| 一区电影在线观看| 欧美成人国产一区二区| 国产在线视频欧美| 亚洲精品国产欧美| 欧美一级欧美一级在线播放| 亚洲二区在线视频| 欧美一级视频精品观看| 欧美日韩网站| 在线观看视频亚洲| 午夜亚洲伦理| 亚洲美女黄网| 欧美电影免费观看大全| 黄色亚洲在线| 久久激情综合| 欧美激情成人在线视频| 亚洲欧美日韩精品久久| 欧美精品一区三区| 伊人久久大香线| 欧美在线观看一区| 亚洲午夜av| 国产精品v一区二区三区 | 亚洲欧美综合| 亚洲激情av| 欧美大片91| 亚洲精品国精品久久99热| 亚洲无亚洲人成网站77777 | 亚洲一区二区三区四区五区黄| 欧美1区视频| 在线中文字幕不卡| 欧美在线播放一区| 欧美久久视频| 亚洲电影免费在线观看| 欧美在线不卡视频| 在线一区观看| 欧美日韩国产综合视频在线| 亚洲免费影院| 亚洲一区www| 免费在线成人av| 欧美午夜精品久久久久久浪潮| 亚洲精品美女久久7777777| 免费一区二区三区| 久久人人超碰| 久久久在线视频| 亚洲一区久久久| 欧美日韩综合| 午夜亚洲激情| 欧美亚洲日本国产| 国产字幕视频一区二区| 六月婷婷一区| 欧美极品欧美精品欧美视频| 亚洲性感激情| 一本色道久久综合狠狠躁篇怎么玩 | 农村妇女精品| 日韩小视频在线观看| 99精品国产福利在线观看免费| 欧美午夜精品久久久久久超碰| 欧美一二三区精品| 老巨人导航500精品| 亚洲精品系列| 午夜精品剧场| 亚洲精品孕妇| 午夜精品在线看| 亚洲日本中文| 亚洲午夜电影在线观看| 国产一区二区在线观看免费| 欧美成人午夜影院| 国产精品久久久久三级| 麻豆精品网站| 国产精品久久久久影院色老大 | 国产婷婷色一区二区三区四区| 久久亚洲综合色| 欧美日韩国产精品成人| 久久激情视频免费观看| 欧美激情区在线播放| 欧美亚洲视频一区二区| 伊人成年综合电影网| 国产三级欧美三级日产三级99| 欧美韩日精品| 国外成人在线| 中日韩视频在线观看| 亚洲国产欧美另类丝袜| 亚洲一区二区免费看| 亚洲精品九九| 久久九九有精品国产23| 性色av一区二区三区在线观看| 欧美成人自拍视频| 久久久久久自在自线| 欧美日韩中文另类| 亚洲电影在线看| 国产精品久久久一区麻豆最新章节| 亚洲第一区中文99精品| 国精品一区二区| 亚洲自拍高清| 亚洲女爱视频在线| 欧美片在线观看| 亚洲国产精品久久久久| 亚洲成人在线观看视频| 久久精品国产清高在天天线| 欧美一区不卡| 国产精品美女在线| 99国产精品一区| 日韩视频免费大全中文字幕| 久久深夜福利免费观看| 久久综合伊人77777麻豆| 国产最新精品精品你懂的| 性欧美video另类hd性玩具| 亚洲欧美另类综合偷拍| 欧美调教vk| 一区二区三区|亚洲午夜| 亚洲视频久久| 国产精品盗摄久久久| 制服丝袜激情欧洲亚洲| 亚洲在线播放| 国产精品福利在线| 亚洲一区二区三区777| 中文在线一区| 欧美日韩中文字幕在线| 夜夜爽www精品| 亚洲午夜视频在线观看| 国产精品久久久久久影院8一贰佰| 亚洲视频在线观看视频| 亚洲欧美色婷婷| 国产专区综合网| 免费国产自线拍一欧美视频| 亚洲成人在线视频网站| 日韩视频一区二区三区| 国产精品v日韩精品| 午夜在线一区| 男女精品网站| 中国成人亚色综合网站| 国产日韩欧美91| 麻豆国产精品777777在线| 亚洲福利免费| 亚洲欧美日韩国产精品 | 最新高清无码专区| 亚洲国产乱码最新视频| 在线亚洲成人| 国产性猛交xxxx免费看久久| 久久婷婷影院| 一区三区视频| 欧美日韩一区成人| 欧美一区1区三区3区公司| 欧美成人免费网| 欧美1级日本1级| 性久久久久久久久久久久| 亚洲国语精品自产拍在线观看| 亚洲精品久久久久久下一站| 国产精品免费网站在线观看| 久久久久久有精品国产| 日韩视频免费观看高清完整版| 欧美一区二区三区在线看| 久久久在线视频| 欧美不卡一卡二卡免费版| 亚洲图片在线观看| 欧美不卡高清| 亚洲欧美在线一区二区| 国产一区二区毛片| 国产精品jizz在线观看美国 | 午夜精品区一区二区三| 亚洲激情欧美| 国产视频在线一区二区| 欧美视频免费在线| 欧美大片在线观看一区| 久久国产精品99国产| 一区二区三区产品免费精品久久75 | 欧美福利电影在线观看| 午夜日本精品| 亚洲视频高清| 在线亚洲一区二区| 亚洲黄色影片| 亚洲电影av| 在线观看亚洲一区| 国产综合久久久久久|