ACMCLUB 板


LINE

※ 引述《smartboy (小光光)》之銘言: : : 我猜應該是終止條件的英文解讀問題. : 事實上我沒明講, 是希望有人會去看看題目之類的 ;) : 在比賽時我就把題目讀了三四遍, 深怕漏掉什麼條件沒看到 : 比完賽我繼續拿 source code 反覆閱讀想看出問題在哪, : 也解釋給隊友聽. : 比完賽隔天睡前再讀一次, 覺得有句的英文意思我不太肯定. : Input for the last test case is followed by a line consisting of : letter X. : 比賽當時我覺得要一行剛好是 "X" 才結束. : 重看幾遍, 那 "AAAXAAA" 呢, "XXX" 呢 : 若問題真出在這裡, 真是太可惜了. 所以我還是希望在其他地方有 bug 只是我沒看出來 :P 以下附當時我寫的 code, 大家幫忙看看吧(印出來再 keyin 的, 大致上保持原樣) (第一次 time limit execeeded, 所以我加上一些 cut, 順便用 macro 降常數) 順帶一題, 這次大會有說, 不公布各題時限, 只知是合理的時間, judge solution 的執行時間乘上一個 constant factor 云云. gcc compile 參數只有 -lm, 沒加 optimize flags #include <stdio.h> #include <string.h> #include <stdlib.h> int m; #define PLUS(x) x++; if(x==m) x=0; #define SKIPSPACE(s,str) while(str[s]==0) { PLUS(s) } int skipspace(int s,char str[]) { while(str[s]==0) s=(s+1)%m; return s; } int next(int now,int k,char str[]) { SKIPSPACE(now,str); while(k--) { PLUS(now); //now=(now+1)%m; SKIPSPACE(now,str); } return now; } int getstr(int start,int k,int len,char str[],char output[]) { int i; int now=start; for(i=0;i<len;i++) { if(i==0) now=next(now,0,str); else now=next(now,k,str); output[i]=str[now]; str[now]=0; } output[i]=0; return 0; } int matstr(int start,int k,int len,char str[],char tomatch[]) { int i; int now=start; for(i=0;i<len;i++) { if(i==0) now=next(now,0,str); else now=next(now,k,str); if(tomatch[i]!=str[now]) return 0; str[now]=0; } return 1; } int main(void) { int z; char line[45]; char str[45]; char stra[45]; int casen=0; freopen("insecure.in","r",stdin); while(scanf("%s",line)==1 && strcmp(line,"X")) { int bestlen=0,bestans=0; char beststr[45]=""; char bak2[45]; int len; int s,i,t,j; char linecpy[45]; int count[256]={0}; strcpy(linecpy,line); m=strlen(line); for(z=0;z<m;z++) count[line[z]]++; for(len=m/2;len>0;len--) { int ans=0; for(s=0;s<m;s++) for(i=0;i<m;i++) { memset(str,0,sizeof(str)); strcpy(line,linecpy); getstr(s,i,len,line,stra); int bad=0; for(z=0;z<len;z++) { count[stra[z]]-=2; if(count[stra[z]]<0) bad=1; } for(z=0;z<len;z++) { count[stra[z]]+=2; } if(bad) continue; memcpy(bak2,line,sizeof(line)); int found=0; for(t=0;t<m;t++) { for(j=m;j>i;j--) { memcpy(line,bak2,sizeof(line)); if(matstr(t,j,len,line,stra)) { found=1; ans++; if(bestlen==len) { if(strcmp(beststr,stra)!=0) bestans++; } else { bestlen=len; bestans=1; strcpy(beststr,stra); } } if(found) break; } if(found) break; } } if(bestans) break; } casen++; if(bestans>1) printf("Code %d: Codeword not unique\n",casen); else printf("Code %d: %s\n",casen,beststr); } return 0; } -- "靈感 = 經驗 + 嘗試 + 快速的計算能力" --- Ledia "靈感, 是實力的累積" --- untitled --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.82 ※ 編輯: smartboy 來自: 140.112.30.82 (04/06 15:27)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP