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

bon

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

常用鏈接

留言簿(2)

我參與的團(tuán)隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

poj 2748

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

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

代碼還是比較簡單的:
 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為循環(huán)節(jié):f[75000]=f[0],f[75001]=f[1]且f是2階的遞推式。編程算出前10000000個數(shù),然后逐個枚舉就能找出循環(huán)節(jié)。

這道題給我影響深刻的地方在于可以找循環(huán)節(jié)。

代碼非常簡單:
 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

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   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>
            久久er精品视频| 国内精品久久久| 美国十次了思思久久精品导航| 欧美日韩国产精品一区二区亚洲| 久久精品夜色噜噜亚洲a∨| 欧美日韩第一页| 欧美成人精品在线观看| 国产精品专区第二| 洋洋av久久久久久久一区| 亚洲人成久久| 麻豆国产va免费精品高清在线| 久久精品国产999大香线蕉| 欧美视频手机在线| 99re8这里有精品热视频免费| 最新中文字幕亚洲| 快she精品国产999| 欧美高清在线视频| 亚洲高清免费在线| 六月婷婷一区| 亚洲第一页自拍| 在线免费高清一区二区三区| 午夜在线观看免费一区| 午夜免费久久久久| 国产精品夜夜夜| 亚洲综合三区| 久久久久国色av免费观看性色| 国产婷婷一区二区| 欧美在线播放| 美女精品一区| 亚洲精品久久在线| 欧美精品日韩三级| 亚洲少妇一区| 香蕉久久夜色精品国产| 国产农村妇女毛片精品久久麻豆| 午夜精品理论片| 久久久久久久久久久久久久一区 | 欧美日韩精品久久久| 亚洲精品免费一区二区三区| 这里只有精品在线播放| 欧美视频中文一区二区三区在线观看 | 黄色免费成人| 农夫在线精品视频免费观看| 亚洲人www| 亚洲一区在线视频| 国产无一区二区| 玖玖玖国产精品| 日韩网站在线看片你懂的| 亚洲欧美在线磁力| 黄色影院成人| 欧美日韩国产区一| 性亚洲最疯狂xxxx高清| 欧美高清在线| 亚洲欧美日本国产有色| 韩日午夜在线资源一区二区| 欧美+日本+国产+在线a∨观看| 亚洲国产精品欧美一二99| 亚洲你懂的在线视频| 激情五月婷婷综合| 欧美日韩不卡合集视频| 欧美亚洲在线视频| 91久久精品一区二区三区| 欧美一区二区黄色| 亚洲精品一级| 国产午夜精品久久久| 欧美黄在线观看| 午夜影院日韩| 日韩午夜av电影| 毛片一区二区三区| 亚洲欧美在线免费| 亚洲美女尤物影院| 国内外成人在线视频| 欧美日韩在线观看一区二区三区 | 亚洲小视频在线| 一区免费观看视频| 国产精品免费看| 欧美精品免费在线| 久久久久久久久蜜桃| 亚洲一级在线观看| 亚洲清纯自拍| 欧美大片一区二区三区| 久久久久久综合网天天| 亚洲免费视频观看| 亚洲精品小视频| 伊人久久综合| 国产日韩欧美视频| 国产精品伦理| 欧美日韩另类一区| 欧美成人精品三级在线观看| 久久gogo国模裸体人体| 午夜精品免费在线| 亚洲天堂成人| 99热免费精品| 亚洲另类在线视频| 最新中文字幕亚洲| 亚洲国产日韩欧美在线99| 欧美xx视频| 欧美国产一区二区| 欧美成人a视频| 免费看黄裸体一级大秀欧美| 久久久噜噜噜久噜久久| 久久国产精品久久精品国产| 亚洲欧美区自拍先锋| 亚洲一区在线观看视频| 亚洲午夜视频在线观看| 制服诱惑一区二区| 亚洲一区二区高清视频| 亚洲免费在线播放| 午夜亚洲福利| 久久精品国产亚洲高清剧情介绍| 欧美一区成人| 久久久成人精品| 久久久一二三| 欧美高清你懂得| 亚洲激情不卡| 99亚洲一区二区| 亚洲综合欧美| 久久成人久久爱| 麻豆久久婷婷| 欧美日韩国产欧| 国产精品你懂的在线欣赏| 国产精品自拍在线| 狠狠色噜噜狠狠狠狠色吗综合| 在线 亚洲欧美在线综合一区| 18成人免费观看视频| 亚洲日韩欧美视频一区| 亚洲色图综合久久| 欧美在线首页| 欧美福利视频在线观看| 日韩一级黄色av| 亚洲欧美区自拍先锋| 久久久噜噜噜久久久| 欧美精品久久天天躁| 国产精品久久一级| 伊人伊人伊人久久| 日韩一二在线观看| 欧美一级久久| 亚洲第一搞黄网站| 亚洲香蕉成视频在线观看| 久久精品成人| 欧美精品一区二区在线播放| 国产精品青草综合久久久久99 | 久久综合伊人| 欧美日韩一区二区免费在线观看 | 国内精品国产成人| 亚洲精品一区中文| 久久av红桃一区二区小说| 欧美激情第二页| 亚洲欧美激情一区| 欧美国产三级| 国产亚洲在线观看| 亚洲色无码播放| 免费观看日韩av| 亚洲欧美美女| 欧美久久久久| 伊伊综合在线| 欧美一级黄色录像| 亚洲免费不卡| 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美视频在线观看免费| 今天的高清视频免费播放成人| 亚洲一区在线视频| 亚洲激情婷婷| 久久人人爽人人爽爽久久| 国产精品一区二区黑丝| 99热在线精品观看| 欧美成人精品在线| 欧美在线视频观看免费网站| 欧美午夜宅男影院| 日韩一本二本av| 欧美高清在线观看| 久久九九久精品国产免费直播| 国产精品日韩欧美| 亚洲一区高清| 日韩小视频在线观看| 欧美成人综合一区| 在线日韩视频| 嫩草国产精品入口| 久久久久久色| 国产综合久久久久久| 欧美怡红院视频一区二区三区| 一本色道久久综合亚洲精品婷婷| 欧美成人性生活| 亚洲片在线资源| 亚洲高清不卡在线观看| 久久婷婷麻豆| 亚洲福利视频一区| 你懂的国产精品永久在线| 久久全球大尺度高清视频| 黄色亚洲在线| 久久综合色综合88| 久久久久国产精品厨房| 国内外成人在线| 久久午夜激情| 久久这里只有| 亚洲欧洲另类国产综合| 亚洲电影免费观看高清完整版在线 | 亚洲一区二区伦理| 国产精品一区免费视频| 久久成人在线| 久久亚洲一区二区|