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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP