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

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_搜索

導航

<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

統計

常用鏈接

留言簿(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>
            一本久久a久久精品亚洲| 午夜亚洲伦理| 亚洲在线免费观看| 99视频精品在线| 一区二区激情视频| 亚洲女ⅴideoshd黑人| 亚洲一区一卡| 久久国产精品99国产精| 久久久久久9| 亚洲第一精品电影| 一区二区三区视频在线看| 亚洲高清资源综合久久精品| 国内成人在线| 一区二区三区四区五区在线| 亚洲一区亚洲| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲大胆人体视频| 亚洲欧美精品在线观看| 美女尤物久久精品| 亚洲专区在线| 国产精品久久久久aaaa樱花 | 欧美国产成人在线| 国产精品日本一区二区| 亚洲国产美女| 久久久久久久一区二区三区| 亚洲日本成人女熟在线观看| 性做久久久久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲国产精品一区二区久| 亚洲欧美清纯在线制服| 日韩视频不卡中文| 欧美四级在线观看| 亚洲一区二区伦理| 亚洲一区二区欧美| 国产精品一区二区三区四区五区| 日韩亚洲一区二区| 中文日韩在线| 国产亚洲欧洲| 亚洲黄色成人久久久| 欧美喷潮久久久xxxxx| 中文在线一区| 一区二区三区免费观看| 一区二区电影免费观看| 国产精品一二三四| 免费国产自线拍一欧美视频| 久久夜色精品国产欧美乱| 91久久精品视频| 亚洲视频在线二区| 亚洲大胆视频| 一区二区三区四区精品| 国产亚洲第一区| 日韩亚洲欧美一区| 国内精品免费在线观看| 亚洲国产老妈| 国产一区二区三区高清播放| 免费成人性网站| 国产欧美成人| 亚洲在线一区| 制服丝袜激情欧洲亚洲| 开元免费观看欧美电视剧网站| 亚洲一区不卡| 欧美国产一区二区| 欧美激情综合色| 91久久在线播放| 老**午夜毛片一区二区三区| 欧美一级一区| 亚洲第一成人在线| 亚洲女优在线| 国内精品久久久久久久果冻传媒| 极品少妇一区二区三区精品视频| 这里只有视频精品| 欧美大片国产精品| 久久黄金**| 亚洲图片欧美日产| 欧美激情在线免费观看| 欧美高清免费| 亚洲图片欧美一区| 欧美日韩在线免费| 一区二区在线观看av| 午夜欧美精品久久久久久久| 欧美在线视频在线播放完整版免费观看 | 欧美成人xxx| 欧美国产三区| 亚洲一区二区三区四区五区午夜 | 亚洲激情av在线| 亚洲精品国产拍免费91在线| 欧美精品一区二区三区在线播放| 亚洲国产精品一区二区www在线| 亚洲人被黑人高潮完整版| 狼狼综合久久久久综合网| 欧美搞黄网站| 亚洲中午字幕| 国产日韩欧美电影在线观看| 欧美一级淫片aaaaaaa视频| 久久久久久亚洲综合影院红桃| 在线观看亚洲视频| 国产精品国产自产拍高清av| 亚洲一区尤物| 欧美不卡视频一区发布| 中文久久精品| 91久久精品日日躁夜夜躁欧美| 欧美午夜精品| 欧美日韩国产二区| 欧美黄色片免费观看| 欧美区一区二| 国产精品高清在线| 国产精品日韩精品欧美精品| 欧美日韩亚洲一区二区三区在线 | 久久综合99re88久久爱| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美在线一区二区三区| 99精品视频网| 99天天综合性| 91久久精品日日躁夜夜躁国产| 久久久亚洲精品一区二区三区 | 亚洲一区二区精品在线| 99在线精品观看| 99v久久综合狠狠综合久久| 亚洲日本中文字幕| 日韩午夜在线| 亚洲欧美精品一区| 欧美一区二区视频观看视频| 羞羞色国产精品| 久久久久久久久久久成人| 亚洲综合色网站| 久久久久在线| 欧美午夜性色大片在线观看| 国产精品美女诱惑| 伊人久久亚洲影院| 一本高清dvd不卡在线观看| 亚洲免费人成在线视频观看| 欧美中文字幕视频| 亚洲精品久久| 欧美在线免费视频| 欧美日韩国产色视频| 国内成人精品2018免费看| 一区二区电影免费观看| 欧美亚洲一区二区在线| 欧美.www| 久久成人免费| 国产精品午夜在线观看| 欧美一区二区日韩| 欧美日韩一区自拍| 一区免费观看| 午夜久久久久久| 一区二区精品| 欧美成人一区二区三区| 国产亚洲网站| 久久视频这里只有精品| 久久人体大胆视频| 午夜日韩在线| 亚洲午夜精品福利| 最新成人av网站| 亚洲欧美区自拍先锋| 欧美精品成人91久久久久久久| 久久这里有精品视频| 国产综合网站| 欧美不卡福利| 亚洲综合久久久久| 欧美激情亚洲视频| 狠狠色综合播放一区二区| 亚洲免费观看在线观看| 先锋影音一区二区三区| 久久免费视频一区| 久久激情视频免费观看| 国产精品爽黄69| 亚洲午夜黄色| 亚洲视屏在线播放| 欧美日韩综合在线| 欧美一级二区| 欧美一区午夜精品| 国产精一区二区三区| 一区二区三区 在线观看视频| 欧美ab在线视频| 欧美性视频网站| 在线一区二区三区四区五区| 老司机精品视频一区二区三区| 午夜精品久久久久久久99樱桃 | 在线日韩av片| 久久色在线观看| 欧美日韩一区二区三区在线看| 日韩一级大片在线| 午夜欧美不卡精品aaaaa| 亚洲欧美韩国| 尤物yw午夜国产精品视频明星| 欧美xart系列在线观看| 欧美激情一二三区| 亚洲欧美日韩一区在线观看| 久久久亚洲精品一区二区三区| 亚洲欧美电影在线观看| 欧美成人精品在线| 午夜久久资源| 欧美1区3d| 欧美成人一区在线| 国产欧美一区视频| 99精品免费| 日韩午夜av在线| 欧美日韩一区二区三区四区在线观看 | 制服诱惑一区二区| 欧美精品一区二区三区视频|