ACM校赛 咱也快乐一回

–记2010ACM校赛

昨天我和阿炳同学、柏柏同学一大早就起床了,目标就是紫金港。柏柏同学由于是工作人员,很早就没影了。我和阿炳不是工作人员,只是打酱油的,但打酱油也要有打酱油的素质,为了不迟到,我们最终选择打的。在8点左右到达zjg,领取了参赛证和信封。

随后阿炳要去续签,我俩到西区后就分头行动了,我找到了当年的218教室,坐下来自习,然后享受着温暖的阳光、闲逸的空气和麦香早餐奶,在微薄上发了这么一句:

春日里的阳光总是很舒服很柔和,我又一次回到紫金港享受这样的阳光,坐在两面皆是窗户、明亮的218,仿佛又回到了一年前早起贪黑自习抢插座的时光。。

无比快乐,11点20分,准备到临湖二楼吃中饭,一路上看到情人坡上搭着一个个帐篷,许多小孩子在玩耍,看来浙大建设开放性校园还比较成功,市民春游都游到我们学校来了。到了临湖二楼发现二楼已经不卖笼仔饭了,于是点了一个香汁排骨。。没有想象中的好吃,但是吃完享受了一下不用端碗筷直接走人的特权。

接着在图书馆待了一会儿(见到ZL)就和队友卢龙和阿邵会合(阿邵居然骑车来的=_=!)。步入机房前和云超、达敏聊了一会儿。座位是60号,迅速坐下,然后有点“幸灾乐祸”地看到隔壁队因为拆看题目被警告惹得cyjj都来教育一番。。待到比赛正式开始后我们三分工,阿邵看第一题,卢龙看第二题,我看第三题。然后就是很长一阵子的安静,大家各自思考。。当然我们这种从来不做ACM题目的小菜不知道怎么选题,后来在列表中看到A,E,I三道题有人提交成功后决定做这三题。阿邵计算了两页纸后做了A,提交后成功,随后惊呼这么简单在呼“上当了,花了N多时间在上面”,当时我不知道这题简单到什么程度,今天一看,呵,只要把输出乘以480,输出的时候用%.2f就成了。。

接着是我和卢龙的E和I,题目E我思考得比较成熟,自己电脑上也成功,但提交后是WA,阿邵也提交了他写的E题的代码也是WA。我认为我的做法思路非常清楚简单也很好实现,缺点是for循环嵌套比较多,随后再仔细检查发现我把本应分开的两个for循环合成一个造成少考虑了一些情况,改完提交终于AC了,拿了个蓝色的气球。。当然,阿邵功不可没,在I题连续WA了两遍后他提醒卢龙一个关键地方有个判断或许是多余的,删了之后果真AC了

最终做出三道题,阿邵A,我E,卢龙I。
这个结果满意了呵呵,至少说明简单题我们都能做嘿嘿。

为了赶回玉泉做晚上的实验,我们和cx他们队提早15分钟走出考场,正遇上cyjj,被拉住和了一张影。随后人群分成两拨,阿邵一拨,其他5人一拨(不要问我阿邵干嘛去了)。在门口热情的mm向我们推销气球,于是众人又拿了几个自己喜欢的颜色。至于气球的归宿,我选择将它留在充满回忆的紫金港。。。的某条路边。。的某棵树下。
我做的题目E :

?#include<stdio.h>
int main() {
    int n,m,i,j,k;
    int in, out, next;
    int temp, maxday;
    int renter[101][3]={0};
    int room[101]={0};
    scanf("%d%d",&n,&m);
    while(n!=0&&m!=0) {
        for(i=0;i<101;i++) room[i]=0;
        maxday = 0;
        next = 1;
        for(j=0;j<n;j++) {
            scanf("%d%d",&in,&out);
            renter[j][0] = in;
            renter[j][1] = out;
            if(in>maxday) maxday = in;
            if(out>maxday) maxday = out;
        }
        for(i=1;i<=maxday;i++) {
            for(j=0;j<n;j++) {
                if(renter[j][1]==i){
                    temp = renter[j][2];
                    room[temp]=0;
                    if(temp<next&&temp!=0) next=temp;
                }
            }
            for(j=0;j<n;j++) {
                if(renter[j][0]==i){
                    if(next>m) renter[j][2] = 0;
                    else {
                        room[next] = 1;
                        renter[j][2] = next;
                        for(k=next;k<=m;k++){
                            if(room[k] ==0){next = k;break;}
                            if(k==m) next = k+1;
                        }
                    }
                }
            }
        }
        for(j=0;j<n;j++) {
            printf("%dn",renter[j][2]);
        }
        scanf("%d%d",&n,&m);
    }
dsd#include<stdio.h>

int main() {
int n,m,i,j,k;
int in, out, next;
int temp, maxday;

int renter[101][3]={0};
int room[101]={0};

scanf(“%d%d”,&n,&m);
while(n!=0&&m!=0) {
for(i=0;i<101;i++) room[i]=0;
maxday = 0;
next = 1;

for(j=0;j<n;j++) {
scanf(“%d%d”,&in,&out);
renter[j][0] = in;
renter[j][1] = out;
if(in>maxday) maxday = in;
if(out>maxday) maxday = out;
}

for(i=1;i<=maxday;i++) {
for(j=0;j<n;j++) {
if(renter[j][1]==i){
temp = renter[j][2];
room[temp]=0;
if(temp<next&&temp!=0) next=temp;
}
}
for(j=0;j<n;j++) {
if(renter[j][0]==i){
if(next>m) renter[j][2] = 0;
else {
room[next] = 1;
renter[j][2] = next;
for(k=next;k<=m;k++){
if(room[k] ==0){next = k;break;}
if(k==m) next = k+1;
}
}
}
}
}
for(j=0;j<n;j++) {
printf(“%dn”,renter[j][2]);
}
scanf(“%d%d”,&n,&m);
}
return 1;
}

您可能还喜欢...

2 条回复

  1. Stariy说道:

    ym处冰!我发现你们第一题做的很慢,但是做出来之后,瞬间三道都做完了。做出三道已经很不错了!做出3道+的也只有20来只队伍而已~

回复 Stariy 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

18 − 11 =