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

A Za, A Za, Fighting...

堅信:勤能補拙

PKU 3373 Changing Digits

問題:
http://acm.pku.edu.cn/JudgeOnline/problem?id=3373

參考:
http://blog.csdn.net/logic_nut/archive/2009/10/29/4740951.aspx
http://iaml.is-programmer.com/posts/8249.html (這個應該是SYSU的哈哈,里面有西西里)

思路:
這個題是真不會做,即使是看別人代碼都看了快兩天,艾...

首先要解決的問題是如何求大數的模(這里大數用字符串表示)?
我們知道對于取模運算有: (a+b)%k = ((a%k)+(b%k))%k
                                     (ab)%k = ((a%k)(b%k))%k
對于0-9的每個數,可以將其在個、十、百、千...位時模k的結果保存到一張表中: mod_arr
這樣,修改這個大數的任何一位而模k的新結果可以在O(1)時間內取得 
 1 char num[MAX_LEN];
 2 int hash[MAX_MOD];
 3 int mod_arr[MAX_LEN][10];
 4 int k, len, tmp[MAX_LEN], tmp2[MAX_LEN], start_mod;
 5 int head, tail;
 6 struct EACH {
 7     int digits[MAX_LEN];
 8     int remainder;
 9     int index;
10 } queue[MAX_MOD];
11 
12 void
13 init()
14 {
15     int i, j;
16     len = strlen(num);
17     for(j=0; j<10; j++)
18         mod_arr[0][j] = j%k;
19     for(i=1; i<len; i++)
20         for(j=0; j<10; j++)
21             mod_arr[i][j] = (mod_arr[i-1][j]*10)%k;
22     start_mod = 0;
23     for(i=0; i<len; i++) {
24         tmp[i] = tmp2[i] = num[len-i-1]-'0';
25         start_mod += (mod_arr[i][num[len-i-1]-'0']);
26     }
27     start_mod %= k;
28     head = -1;
29     tail = 0;
30     memset(hash, 0sizeof(hash));
31     memset(queue, 0sizeof(queue));
32 }

第一篇參考鏈接里是用DFS來做的,可惜我對于其中用于記憶化搜索的remember數組始終不理解,結果TLE
更加容易理解的方案是BFS,每次擴展改變一位數字
使用BFS的問題是如何判重?參考第二篇文章(繁瑣的C++語法,沒認真看呵呵),使用余數判重,其實還不是太理解

代碼:
 1 void
 2 bfs()
 3 {
 4     int i, j, t, cur_rem, cur_index;
 5     queue[tail].remainder = start_mod;
 6     memcpy(queue[tail].digits, tmp, sizeof(int)*len);
 7     queue[tail].index = len-1;
 8     hash[start_mod] = 1;
 9     while(head < tail) {
10         ++head;
11         cur_rem = queue[head].remainder;
12         cur_index = queue[head].index;
13         memcpy(tmp, queue[head].digits, sizeof(int)*len);
14         if(cur_rem == 0) {
15             for(i=len-1; i>=0; i--)
16                 printf("%d", tmp[i]);
17             printf("\n");
18             return;
19         }
20         /* changing digits: from least (smaller than itself) */
21         for(i=cur_index; i>=0; i--) {
22             for(j=0; j<tmp2[i]; j++) {
23                 if(i==len-1 && j==0)
24                     continue;
25                 t = cur_rem + mod_arr[i][j] - mod_arr[i][tmp2[i]] + k; /* O(1) to find the new remainder */
26                 t = t % k;
27                 tmp[i] = j;
28                 if(!hash[t]) {
29                     ++tail;
30                     queue[tail].remainder = t;
31                     queue[tail].index = i-1;
32                     memcpy(queue[tail].digits, tmp, sizeof(int)*len);
33                     hash[t] = 1;
34                 }
35             }
36             tmp[i] = tmp2[i];
37         }
38         /* changing digits: to max (greater than itself) */
39         for(i=0; i<=cur_index; i++) {
40             for(j=tmp2[i]+1; j<10; j++) {
41                 t = cur_rem + mod_arr[i][j] - mod_arr[i][tmp2[i]] + k;
42                 t = t % k;
43                 tmp[i] = j;
44                 if(!hash[t]) {
45                     ++tail;
46                     queue[tail].remainder = t;
47                     queue[tail].index = i-1;
48                     memcpy(queue[tail].digits, tmp, sizeof(int)*len);
49                     hash[t] = 1;
50                 }
51                 tmp[i] = tmp2[i];
52             }
53         }
54     }
55 }

posted on 2010-08-02 12:46 simplyzhao 閱讀(290) 評論(0)  編輯 收藏 引用 所屬分類: B_搜索

導航

<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

統計

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            免费在线欧美黄色| 国产精品xnxxcom| 99精品久久| 亚洲美女尤物影院| 亚洲精品国产精品久久清纯直播| 欧美影院精品一区| 欧美在线电影| 久久综合色天天久久综合图片| 久久久亚洲欧洲日产国码αv| 久久精品在线| 亚洲国产欧美一区二区三区丁香婷| 欧美激情视频一区二区三区不卡| 亚洲国产岛国毛片在线| 一区二区电影免费在线观看| 亚洲欧美日韩国产综合精品二区| 欧美一区二区三区在线观看视频| 久久夜色精品国产欧美乱极品| 欧美成人在线网站| 国产精品乱码| 最新亚洲一区| 欧美一区2区三区4区公司二百| 久久香蕉国产线看观看av| 亚洲第一福利视频| 亚洲男女毛片无遮挡| 久久久久**毛片大全| 欧美精品一区二区三区高清aⅴ| 国产精品久久久久久久久久免费 | 欧美尤物一区| 欧美不卡激情三级在线观看| 国产精品网站在线播放| 影音先锋亚洲电影| 亚洲视频网在线直播| 欧美丝袜第一区| 国产一区二区欧美| 一本色道久久加勒比精品| 欧美专区第一页| 日韩一级二级三级| 美女爽到呻吟久久久久| 国产无一区二区| 亚洲性夜色噜噜噜7777| 亚洲电影在线看| 久久精品国产免费看久久精品| 欧美先锋影音| 一个色综合av| 亚洲精华国产欧美| 玖玖国产精品视频| 国产三级欧美三级| 亚洲欧美日韩天堂| 99精品国产99久久久久久福利| 久久影院亚洲| 黑人巨大精品欧美一区二区| 亚洲免费人成在线视频观看| 91久久精品日日躁夜夜躁国产| 久久久久久69| 国产在线精品二区| 欧美在线播放一区| 午夜精品久久久久久久99黑人| 欧美日韩一区二区三区在线观看免| 亚洲黄网站黄| 欧美激情aaaa| 欧美成人免费在线| 亚洲日韩视频| 亚洲日本理论电影| 欧美日韩福利| 一本色道久久综合亚洲精品不| 亚洲国产精品精华液2区45| 久久综合狠狠综合久久综合88| 国模精品一区二区三区| 久久精品视频在线| 久久成人综合视频| 亚洲缚视频在线观看| 女生裸体视频一区二区三区| 久久综合色播五月| 亚洲欧洲精品一区二区三区不卡| 亚洲电影av| 欧美视频福利| 久久精品国产成人| 久久综合九色综合网站| 99re热这里只有精品视频| 99在线精品观看| 国产午夜精品一区理论片飘花| 麻豆av一区二区三区| 欧美成人精品激情在线观看| 一区二区三区高清视频在线观看| 一区二区三区日韩欧美| 国产一区二区三区在线观看免费视频 | 日韩一级在线| 亚洲一区二区动漫| 国产在线国偷精品产拍免费yy| 欧美成人免费网| 欧美日韩影院| 国产一区二区久久精品| 久久婷婷激情| 欧美另类69精品久久久久9999| 中日韩男男gay无套| 午夜精品久久久久久久蜜桃app| 激情成人在线视频| 亚洲看片免费| 国外成人网址| 亚洲日本免费| 国产一区二区精品久久99| 欧美国产视频在线观看| 国产精品久久久一区二区| 蜜臀91精品一区二区三区| 欧美日韩1区2区| 久久午夜精品一区二区| 欧美性色视频在线| 你懂的成人av| 国产精品午夜久久| 亚洲国产成人在线| 国产亚洲女人久久久久毛片| 亚洲欧洲一区二区天堂久久| 国产一区视频观看| 99精品欧美一区二区三区| 在线精品国精品国产尤物884a| 夜夜躁日日躁狠狠久久88av| 亚洲国产精品第一区二区三区 | 午夜视频一区| 亚洲午夜在线观看| 欧美大片91| 美日韩精品免费| 国产亚洲一级高清| 亚洲伊人一本大道中文字幕| 日韩午夜激情电影| 欧美777四色影视在线| 久久国产毛片| 国产精品美女999| 亚洲精品一区二区三区99| 亚洲国产岛国毛片在线| 欧美在线|欧美| 欧美一区激情视频在线观看| 欧美日韩在线精品一区二区三区| 亚洲第一精品久久忘忧草社区| 国产尤物精品| 午夜一区二区三区在线观看| 亚洲欧美日韩综合一区| 欧美日韩国产在线一区| 亚洲人被黑人高潮完整版| 亚洲高清免费| 美女免费视频一区| 美女网站久久| 激情久久婷婷| 久久久一本精品99久久精品66| 久久精品一区二区三区中文字幕| 国产精品午夜春色av| 欧美在线视频免费观看| 久久久无码精品亚洲日韩按摩| 免费观看成人| 狠狠做深爱婷婷久久综合一区| 久久爱www.| 免费高清在线一区| 亚洲精品一二区| 欧美日本在线一区| 亚洲深夜福利在线| 久久国产精品一区二区| 亚洲国产精品成人综合| 欧美日韩视频在线一区二区观看视频 | 欧美亚洲一区二区在线| 国产欧美婷婷中文| 久久久久国产成人精品亚洲午夜| 美日韩精品视频免费看| 亚洲日本视频| 国产精品久久国产精品99gif | 国产精品久久久久久久久久久久久久| 亚洲一区精品视频| 久久野战av| av成人免费在线| 国产日韩精品久久久| 免费观看成人www动漫视频| 99精品久久| 免费在线一区二区| 中文无字幕一区二区三区| 国产午夜精品久久久| 欧美大成色www永久网站婷| 一区二区欧美日韩视频| 久久久777| av成人手机在线| 一区二区亚洲精品| 欧美视频一区二区在线观看| 久久国产精品99久久久久久老狼| 亚洲高清在线播放| 亚洲在线中文字幕| 亚洲综合另类| 亚洲电影观看| 国产精品你懂的在线欣赏| 久久人人九九| 亚洲一区制服诱惑| 亚洲精品国产精品久久清纯直播| 久久精品国产清高在天天线| 日韩视频一区二区三区在线播放 | 欧美精品成人一区二区在线观看| 一本一本a久久| 免费观看亚洲视频大全| 亚洲一区在线直播| 最近中文字幕日韩精品| 国产婷婷一区二区| 国产精品久久久久久妇女6080 | 久久五月婷婷丁香社区| 亚洲欧美国产高清| aa国产精品|