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

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>
            久久天天躁狠狠躁夜夜av| 老司机精品福利视频| 国产欧美一区二区三区在线看蜜臀| 欧美激情一区二区三区| 欧美激情小视频| 欧美日韩一区在线| 国产精品视频网| 亚洲承认在线| 在线亚洲精品福利网址导航| 亚洲欧美日韩在线综合| 久久激情综合| 欧美高潮视频| 中文av字幕一区| 欧美一区二区三区四区高清 | 久久男人av资源网站| 欧美成人久久| 亚洲一区精品电影| 欧美成人a∨高清免费观看| 欧美日韩国产色视频| 国产亚洲网站| 日韩系列欧美系列| 亚洲欧美日韩一区| 欧美成人免费观看| 亚洲午夜一级| 欧美承认网站| 国内成+人亚洲| 亚洲午夜一区二区三区| 美女91精品| 亚洲一品av免费观看| 蜜臀a∨国产成人精品 | 亚洲免费高清| 久久久久久有精品国产| 99pao成人国产永久免费视频| 欧美专区18| 欧美香蕉视频| 亚洲精品乱码久久久久| 久久久国产午夜精品| 亚洲国产福利在线| 欧美在线观看一区| 欧美色另类天堂2015| 在线播放视频一区| 日韩视频专区| 欧美国产综合一区二区| 欧美有码在线视频| 国产伦精品一区二区三区四区免费| 亚洲精品欧美精品| 美国三级日本三级久久99| 亚洲影视综合| 亚洲二区三区四区| 久久国产欧美| 国产一区在线播放| 午夜精品久久久久久久99黑人| 亚洲欧洲日本国产| 欧美成人精品在线观看| 亚洲第一区中文99精品| 免费在线成人av| 久久久久久久久综合| 国产揄拍国内精品对白| 欧美一区1区三区3区公司| 亚洲乱码国产乱码精品精天堂 | 欧美成年人网| 亚洲精品乱码久久久久| 亚洲国产精品激情在线观看| 免费视频最近日韩| 亚洲乱码一区二区| 亚洲人成77777在线观看网| 久久综合色播五月| 亚洲人www| av成人激情| 国产精品色午夜在线观看| 亚洲欧美日韩在线一区| 欧美一级在线视频| 亚洲成人在线网| 亚洲动漫精品| 欧美午夜a级限制福利片| 亚洲欧美日韩视频二区| 欧美亚洲一区| 亚洲福利久久| 一区二区三区不卡视频在线观看| 国产精品r级在线| 欧美一区二区三区精品电影| 久久精品国产99国产精品| 樱桃视频在线观看一区| 亚洲日韩欧美视频一区| 欧美色视频日本高清在线观看| 亚洲欧美日韩久久精品| 久久成人精品无人区| 亚洲人永久免费| 亚洲午夜一二三区视频| 在线观看日产精品| av成人免费在线| 极品少妇一区二区| 亚洲精品自在在线观看| 国产婷婷色一区二区三区在线| 欧美韩日一区| 国产亚洲欧美激情| 日韩视频在线观看免费| 国内精品嫩模av私拍在线观看| 亚洲国产精品热久久| 国产欧美在线看| 亚洲国产一成人久久精品| 国产人妖伪娘一区91| 亚洲精选中文字幕| 亚洲承认在线| 久久av一区| 欧美亚洲一区| 欧美揉bbbbb揉bbbbb| 欧美福利在线| 国产一区二区三区精品久久久| 99精品视频免费观看| 欧美精品v国产精品v日韩精品 | 久久久久久久网| 欧美精品久久久久久久久老牛影院 | 国外成人免费视频| 亚洲午夜激情在线| 亚洲美女黄网| 久久久久久夜精品精品免费| 午夜精品久久久久| 欧美日韩一区在线| 亚洲精品久久嫩草网站秘色| 国产一区二区三区在线观看免费 | 欧美一级日韩一级| 欧美日韩亚洲视频一区| 亚洲国产一区二区a毛片| 国产一区二区三区视频在线观看| 亚洲视频在线观看免费| 在线视频亚洲一区| 欧美激情综合亚洲一二区 | 欧美黄色大片网站| 一区在线播放| 久久久天天操| 免费视频一区二区三区在线观看| 国产日韩欧美一区在线| 亚洲一区影音先锋| 性欧美暴力猛交另类hd| 国产精品国产三级国产专播精品人| 亚洲精品久久久久久一区二区| 亚洲国产精品一区二区www| 久久久久看片| 亚洲第一综合天堂另类专| 亚洲国产日韩欧美| 欧美国产综合| 一本色道久久综合| 亚洲主播在线观看| 国产精品三级视频| 欧美伊人影院| 欧美电影资源| 一本综合久久| 国产欧美日韩专区发布| 久久岛国电影| 欧美激情在线狂野欧美精品| 日韩一级精品| 国产精品专区h在线观看| 欧美一区免费| 亚洲黄色毛片| 亚洲专区一二三| 国产亚洲激情在线| 久久人人97超碰精品888| 亚洲二区视频| 亚洲综合国产精品| 好吊一区二区三区| 欧美精品一区在线播放| 一区二区三区欧美在线观看| 久久精品免费播放| 亚洲日本国产| 国产亚洲一区二区精品| 免费看的黄色欧美网站| 亚洲作爱视频| 久久躁狠狠躁夜夜爽| 在线一区二区三区四区| 欧美在线观看网站| 欧美激情一区二区三区不卡| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲电影免费观看高清完整版在线| 免费视频一区| 欧美一区二区成人| 亚洲精品老司机| 久久亚洲综合色| 亚洲综合丁香| 亚洲乱码精品一二三四区日韩在线 | 性欧美长视频| 亚洲精品视频在线播放| 国产欧美一区二区精品性色| 欧美精品日韩一本| 久久精品国产77777蜜臀| 一区二区三区www| 欧美国产视频日韩| 久久久久欧美精品| 午夜精品在线观看| 亚洲免费福利视频| 一色屋精品视频免费看| 国产精品三级视频| 欧美色综合天天久久综合精品| 久久综合国产精品台湾中文娱乐网| 亚洲无毛电影| 一区二区免费在线观看| 91久久精品视频| 欧美高清在线精品一区| 老司机67194精品线观看| 久久精品一区二区三区四区 |