今天受在UESTC深造的某OI神牛在UESTC的好基友秋秋同学邀请,参加了UESTC“第五届ACM趣味程序设计竞赛第一场”。
比赛三个小时,说好只有五道题,打来一看八道!
再定睛一看,第一题竟然是人民的好朋友A+B Problem。果断AC之。
这次比赛有校队参加,再加上又是非原创题,才开始几分钟就各种AC满天飞了……鸭梨山大,还是先找道水题慢慢做吧。
看上了一道英文题The Heroes(UESTC 1148),大意是给几个基因序列,然后判断输入的几个字符串里有没有。
本来以为不算太难,写起来却十分纠结。最后代码修修补补,逻辑非常混乱,连我自己都看不懂了,提交两次,勉强AC。
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,a,j,k,t,m;
scanf("%d",&n);
char gene[n][100];
for(i=0;i<n;i++)
scanf("%s",gene[i]);
scanf("%d",&a);
for(i=0;i<a;i++)
{
int flag;
char people[100];
scanf("%s",people);
for(j=0;j<n;j++)
{
for(m=0;m<strlen(people);m++)
{
k=m;flag=0;
while(people[k]!=gene[j][0])
k++;
if(k<strlen(people)-2)
{
for(t=1,flag=1;t<strlen(gene[j]);t++)
if(people[k+t]!=gene[j][t])
flag=0;
}
if(flag)
break;
}
if(flag)
break;
}
if(flag)
printf("A new hero discovered\n");else
printf("Just an ordinary person\n");
}
return 0;
}
//写的时候 strlen(people) 愣是被我错写成 people.length() 了啊!!同时学习两门语言是多么可怕!!!!
过了之后有了点信心,可以好好做下面的了。
选了另一道水题,懒惰的妹纸(UESTC 1608)。这个潜下心来慢慢分析情况很好写的。
写的很顺,一遍AC。
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
long a,b,t,t1;
double ans=1;
scanf("%ld %ld %ld %ld",&a,&b,&t,&t1);
if(t1<a || t1>b+t)
ans=0;
else
{
if(a+t>=b)
{
if(t1>=b && t1<=a+t)
ans=1;else
if(t1<b)
ans=(double)(t1-a)/(b-a);else
ans=(double)(b+t-t1)/(b-a);
}else
{
if(t1<=a+t)
ans=(double)(t1-a)/(b-a);else
if(t1>a+t && t1<b)
ans=(double)t/(b-a);else
ans=(double)(b-(t1-t))/(b-a);
}
}
printf("%.4f\n",ans);
}
return 0;
}
不知不觉3题了,再来一题我就心满意足了。
选了三国杀(UESTC 1366)。处理输入费了半天事。
最后始终没有AC,不是WA就是RE。还在排查原因,搞定了再贴code吧。
最终3题,排名15。
/*
比完了感觉很累很累……联系了秋秋同学,立马迎来了让人惨不忍视的吐槽 = = 他的三国杀悲剧的在17:02AC……他下午悲剧的拉肚子……更操蛋的,UESTC的图书馆下午着火了……尽管是烟雾报警器的误报,他还是英勇的冲过去拿回了自己的书包。一馆的人都被轰出来,在图书馆里做题的很多都悲剧了。
同时他还热情邀请我参加下周第二场的比赛。介个,咱下周再说吧=。=
吃饭去!晚上吉他课!一堆高数等着刷!学算法!Java作业!…………
…………嗯,明天早起。
*/