• Extraordinarily Tired Students UVA


      不知道叫什么,好像是模拟的方法,看懂了题就好办(英语硬伤←_←)

      题意大概是当一个同学想睡觉的时候判断周围睡觉的人数,不睡的人数大于等于睡觉的话就死撑着,否则就睡觉。

      一开始没有什么思路,就直接用了个结构体,主要是把每个人醒着与睡着合在一个字符串中,中途出了点事过几天再来把上次的错误改了后,ac是ac了,但是2141的代码量还是吓到了O__O "…

      虽说不推荐看,但还是留在这当做纪念吧http://paste.ubuntu.com/23809285/

      后来觉得没必要用结构体,就直接用数组,写完后把测试代码删了代码量也有1451,ok,继续做纪念(*^__^*) 嘻嘻……http://paste.ubuntu.com/23809301/

      后来没想到别的思路,就看了vj上一个六百代码量的代码,他的变量名我觉得不太可取,不过对于末尾数据处理挺不错,思路应该都差不多,就是少了睡觉和醒着合在一起的步骤,而是直接把状态与数字比较,恩,挺好的。

      写完后第一次没a,改完后代码九百多O__O "…(真是的,不就是变量名比他长了那么一点吗。。。)

      最后一次代码如下,没有很复杂,就不写注释了

    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    int sleep[12] = {0}, awake[12] = {0}, first[12] = {0};
    int main()
    {
    int t;
    int order = 0;
    while(scanf("%d", &t) && t)
    {
    order++;
    for(int i = 1; i <= t; i++)
    scanf("%d%d%d", &awake[i], &sleep[i], &first[i]);
    int time = 1;
    for(; ;time++)
    {
    int num_awake = 0;
    for(int i = 1; i <= t; i++)
    if(first[i] <= awake[i])num_awake++;
    if(num_awake == t)break;
    for(int i = 1; i<= t; i++)
    {
    if(first[i] == awake[i] + sleep[i]) first[i] = 1;
    else if(first[i] == awake[i] && num_awake >= t - num_awake) first[i] = 1;
    else first[i]++;
    }
    if(time > 1000)break;
    }
    if(time > 999)printf("Case %d: -1 ", order);
    else printf("Case %d: %d ", order, time);
    }
    return 0;
    }

    做题反思:没有计时,中间隔了好几天,不过很清楚写的确实很慢,这是老毛病了,字数第四章写的都有点阴影,所以ac的时候还是蛮激动的,一开始自己写的代码每一次都会有点小错误,而且是不该犯的错误,恩,细节要注意,否则要为此花费很长的时间,要清楚自己到底在写什么。ok,到此为止,虽说是一道水题,但毕竟是自己的第一篇博客,就啰嗦了一点,嘿嘿......

    print “ 欢迎来到渣小狼的博客,这既是博客,也是日记,里面记录了小狼的学习经历还有一些小狼的见解,非常希望每一个来到这里的人能够留下只言片语,更加的希望留下的是对于小狼的不足的补充,谢谢(*^__^*) 嘻嘻……”
  • 相关阅读:
    CF932E Team Work(第二类斯特林数)
    BZOJ 3732: Network(Kruskal重构树)
    BZOJ 2753: [SCOI2012]滑雪与时间胶囊(最小生成树)
    BZOJ 2286: [Sdoi2011]消耗战(虚树+树形dp)
    hdu 4336 Card Collector(状压dp/Min-Max反演)
    BZOJ 3622: 已经没有什么好害怕的了(二项式反演)
    BZOJ 2839: 集合计数(二项式反演)
    CF gym 101933 K. King's Colors(二项式反演)
    BZOJ 1101: [POI2007]Zap(莫比乌斯反演)
    BZOJ 3747: [POI2015]Kinoman(线段树)
  • 原文地址:https://www.cnblogs.com/wolf-yasen/p/6290058.html
Copyright © 2020-2023  润新知