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

pku1213 Roman Numerals 回溯,注意數學剪枝

題目
給出一個羅馬算式(其實就是數字用羅馬字母表示的算式),問是否成立;如果字母代表的是0-9,有沒有可能存在一種方案使得自然算式成立

解法
第一問很簡單,我就不說什么了。不過處理的時候有簡單的地方,如果第i個羅馬數字>第i-1個羅馬數字,結果就加上num[i]-2*[numi-1]。
第二問讓我糾結好久。。fzu賽區一個題目和這個一樣,不過那個數據量小。這題數據量MS很大。如果沒有剪枝的程序跑了1.5秒。。雖然uva是過了,poj卻差很多。后來google,找到一個日本人寫的代碼,跑了79ms。。。。仔細研讀,發現我漏了一個重要的剪枝條件:a+b=c能夠成立當且僅當c的位數<=1+max(a、b的位數并且c的位數>=max(a、b的位數),就+了這一個判斷在POJ上就過了。。。。其他的還有很大的常數優化空間,不過我這種人很懶的- -

代碼
  1 //============================================================================
  2 // Name        : pku1213.cpp
  3 // Author      : yzhw
  4 // Version     :
  5 // Copyright   : yzhw
  6 // Description : Hello World in C++, Ansi-style
  7 //============================================================================
  8 
  9 #include <iostream>
 10 # include <cstdio>
 11 # include <cstring>
 12 # include <algorithm>
 13 using namespace std;
 14 char str[128],d[3][20];
 15 int charmap[255],digit[255];
 16 bool flag;
 17 int GetRomanNum(char *num)
 18 {
 19     int res=digit[*num];
 20     for(int i=1;num[i]!='\0';i++)
 21         if(digit[num[i]]>digit[num[i-1]])
 22             res=res-2*digit[num[i-1]]+digit[num[i]];
 23         else res+=digit[num[i]];
 24     return res;
 25 }
 26 int GetNormalNum(char *num)
 27 {
 28     int res=0;
 29     for(int i=0;num[i]!='\0';i++)
 30         res=res*10+charmap[num[i]];
 31     return res;
 32 }
 33 bool search(int num,int pos)
 34 {
 35     if(num==3)
 36     {
 37         if(GetNormalNum(d[0])+GetNormalNum(d[1])==GetNormalNum(d[2]))
 38         {
 39             if(!flag)
 40             {
 41                 flag=true;
 42                 return false;
 43             }
 44             else
 45                 return true;
 46         }
 47         else return false;
 48     }
 49     else if(d[num][pos]=='\0')
 50         return search(num+1,1);
 51     else
 52     {
 53         if(charmap[d[num][pos]]!=-1)
 54             return search(num,pos+1);
 55         else
 56         {
 57             for(int i=0;i<10;i++)
 58             {
 59                 charmap[d[num][pos]]=i;
 60                 if(search(num,pos+1)) return 1;
 61                 charmap[d[num][pos]]=-1;
 62             }
 63             return 0;
 64         }
 65     }
 66 }
 67 bool search(int num)
 68 {
 69     if(num==3)
 70     {
 71         if(search(0,1)) return true;
 72         else return false;
 73     }
 74     else if(charmap[d[num][0]]!=-1return search(num+1);
 75     else
 76     {
 77         for(int i=1;i<10;i++)
 78         {
 79             charmap[d[num][0]]=i;
 80             if(search(num+1)) return true;
 81             charmap[d[num][0]]=-1;
 82         }
 83         return false;
 84     }
 85 }
 86 int main() {
 87     digit['I']=1;
 88     digit['V']=5;
 89     digit['X']=10;
 90     digit['L']=50;
 91     digit['C']=100;
 92     digit['D']=500;
 93     digit['M']=1000;
 94     while(true)
 95     {
 96         scanf("%s",str);
 97         if(str[0]=='#'break;
 98         strcpy(d[0],strtok(str,"+"));
 99         strcpy(d[1],strtok(NULL,"="));
100         strcpy(d[2],strtok(NULL," "));
101         //test Roman Number
102         if(GetRomanNum(d[0])+GetRomanNum(d[1])==GetRomanNum(d[2]))
103             printf("Correct ");
104         else
105             printf("Incorrect ");
106         //test Normal Number
107         flag=false;
108         memset(charmap,-1,sizeof(charmap));
109         if(strlen(d[2])>max(strlen(d[0]),strlen(d[1]))+1||strlen(d[2])<max(strlen(d[0]),strlen(d[1])))
110         {
111             printf("impossible\n");
112             continue;
113         }
114         if(search(0)) printf("ambiguous\n");
115         else if(flag) printf("valid\n");
116         else printf("impossible\n");
117     }
118     return 0;
119 }
120 

posted on 2011-01-19 20:18 yzhw 閱讀(192) 評論(0)  編輯 收藏 引用 所屬分類: search

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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ⅴ免费一区二区三区| 欧美日韩视频| 麻豆亚洲精品| 欧美1区2区| 免费h精品视频在线播放| 久久精品日产第一区二区三区| 欧美一区二区免费| 欧美日本亚洲| 欧美日韩国产一级片| 欧美韩日高清| 欧美日韩国产片| 国产精品美女久久久久久久| 国产精品久久91| 国产欧美日本| 亚洲国产精品久久久久秋霞蜜臀| 亚洲第一久久影院| 亚洲伦理在线| 久久精品亚洲一区| 亚洲国产激情| 亚洲性图久久| 蜜桃av一区| 国产精品第三页| 在线日韩中文字幕| 欧美日本在线| 国产精品久久久久久久9999 | 亚洲深夜影院| 亚洲欧美成人一区二区在线电影 | 蜜臀av国产精品久久久久| 久久久久免费| 欧美18av| 日韩一二三区视频| 久久精品99国产精品| 欧美激情国产精品| 国产婷婷97碰碰久久人人蜜臀| 好看的av在线不卡观看| 亚洲国产欧美一区二区三区久久 | 国产一区二区三区四区hd| 亚洲精品123区| 久久99伊人| 日韩天堂av| 久久久精品国产99久久精品芒果| 欧美精品免费视频| 激情久久久久久久久久久久久久久久| 亚洲精品免费在线| 欧美成人激情视频| 亚洲欧美成人网| 欧美日韩伦理在线免费| 亚洲激情第一页| 欧美韩国日本一区| 久久综合九色| 亚洲国产精品久久91精品| 亚洲专区一二三| 国产精品v亚洲精品v日韩精品 | 国产精品美女主播在线观看纯欲| 尹人成人综合网| 久久精品国语| 亚洲自拍偷拍网址| 欧美福利精品| 亚洲乱码国产乱码精品精98午夜| 欧美成人一二三| 久久久91精品国产一区二区精品| 欧美亚男人的天堂| 亚洲一区二区三区在线| 亚洲免费观看高清完整版在线观看熊| 欧美绝品在线观看成人午夜影视| 亚洲伦理在线观看| 日韩亚洲综合在线| 亚洲美女av电影| 欧美久久久久久| 亚洲伦伦在线| 亚洲天堂第二页| 国产精品丝袜xxxxxxx| 亚洲欧美日韩在线| 欧美一二三区在线观看| 国产精品久久久久久久久久免费 | 亚洲已满18点击进入久久 | 亚洲精品日本| 欧美美女福利视频| 亚洲一区二区三区在线看| 一本久道久久综合中文字幕| 欧美三级日韩三级国产三级| 亚洲欧美日韩一区二区三区在线| 欧美影院精品一区| 99re8这里有精品热视频免费| 99re成人精品视频| 国产亚洲午夜| 亚洲国产人成综合网站| 国产精品大片| 欧美高清视频| 国产精品久久久久久久久久久久久久 | 狂野欧美性猛交xxxx巴西| 亚洲日韩视频| 亚洲欧美日韩网| 最新国产成人av网站网址麻豆| 亚洲精选国产| 影音先锋亚洲精品| 中文一区二区在线观看| 精品动漫3d一区二区三区免费| 亚洲人成啪啪网站| 国产一区成人| 一本色道久久综合狠狠躁篇怎么玩 | 欧美亚洲三区| 99精品国产99久久久久久福利| 性欧美videos另类喷潮| 日韩亚洲欧美综合| 欧美一区二区三区在线播放| 亚洲另类视频| 久久精品日韩一区二区三区| 中文在线不卡视频| 久久综合久久美利坚合众国| 午夜视频久久久| 欧美日本网站| 亚洲国产精品电影| 在线观看视频日韩| 欧美一区二区三区日韩| 亚洲视频一区二区| 欧美刺激性大交免费视频| 久久免费高清视频| 国产日韩精品一区二区浪潮av| 亚洲久久成人| a4yy欧美一区二区三区| 免费成人在线视频网站| 久久久久成人精品| 国产毛片一区| 亚洲综合国产| 香蕉成人久久| 国产精品免费久久久久久| 99精品视频免费| 一区二区三区www| 欧美福利一区二区| 最新亚洲一区| 99精品99久久久久久宅男| 久久久久久久成人| 国产亚洲精品久久久久婷婷瑜伽| 久久久久久一区| 国产麻豆日韩欧美久久| 亚洲亚洲精品三区日韩精品在线视频 | 激情av一区| 久久精品国产亚洲5555| 久久久久久亚洲精品中文字幕 | 欧美国产日本在线| 亚洲激情视频在线播放| 免费毛片一区二区三区久久久| 女女同性精品视频| 最新国产成人在线观看| 欧美国产欧美综合| 亚洲三级影院| 午夜精品www| 国产在线高清精品| 久久亚洲精品一区| 亚洲激情中文1区| 亚洲天堂第二页| 国产精品一区免费在线观看| 午夜视频精品| 欧美国产日韩一区二区三区| 一区二区欧美视频| 国产精品人成在线观看免费| 性欧美18~19sex高清播放| 美女国产一区| 一区二区av在线| 国产亚洲成精品久久| 久久综合亚州| 一区二区欧美在线| 久久久国产精品一区| 亚洲成色精品| 欧美午夜精品久久久久久久| 欧美在线免费看| 亚洲精品国产视频| 性欧美1819sex性高清| 在线日韩一区二区| 国产精品萝li| 欧美aaaaaaaa牛牛影院| 亚洲少妇最新在线视频| 久久综合九色99| 亚洲一区在线免费| 在线精品一区| 国产精品丝袜白浆摸在线| 老鸭窝亚洲一区二区三区| 一本色道久久加勒比88综合 | 制服诱惑一区二区| 欧美激情按摩在线| 欧美一区在线视频| 在线综合视频| 亚洲第一页自拍| 国产欧美日本| 欧美日韩综合久久| 欧美激情一区二区三区高清视频| 新67194成人永久网站| 亚洲第一在线视频| 久久漫画官网| 久久精品二区三区| 亚洲与欧洲av电影| 亚洲欧美激情诱惑| 亚洲毛片在线观看| 欧美国产激情二区三区| 亚洲欧美电影院| 欧美大片免费| 久久精品青青大伊人av| 日韩小视频在线观看专区|