ccf 2018.12.2 小明放学解法

if __name__ == "__main__":
    (x,y,z) = map(str , input().split())
    number = int(input())
    counter = 0
    time_list = []
    red_time = int("1" + x)
    yellow_time = int("2"+y)
    green_time = int("3"+z)

    for i in range(int(x)):
        time_list.append(red_time-i)
    for i in range(int(z)):
        time_list.append(green_time - i)
    for i in range(int(y)):
        time_list.append(yellow_time - i)


    def re_index(flag_count , time_list , counter):
        try:index = time_list.index(flag_count)
        except:return -1
        inter_index = index+1+counter-len(time_list)
        if inter_index > 0:
            index = inter_index - 1
        else:
            index = index+counter
        return index

    for i in range(number):
        (n,m) = map(str , input().split())
        if "2" not in n and len(m) < 2:
            n = n+"0"
        flag_count = int(n+m)
        index = re_index(flag_count=flag_count , time_list = time_list , counter = counter)
        if index == -1:
            counter = counter+flag_count
        else:
            true_time = str(time_list[index])
            if "1" in true_time[0]:
                true_time = true_time.replace("1" , "0" , 1)
                counter = counter + int(true_time)
            if "2" in true_time[0]:
                true_time = true_time.replace("2" , "0" , 1)
                counter = counter + int(true_time)+int(x)
    print(counter)

将红绿灯的持续时间和状态标志合在一起记为一个整数,然后依次放入数组中,红,绿,黄为30,3,30时,数组为[130, 129, 128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, 303, 302, 301, 23, 22, 21]。

然后结合已经用去的时间来判断此刻红绿灯的状态,然后在计算在路口花费的时间,但是超时了,我以为是后面比较的问题,然后我尝试新添加一个直接判断特定状态所需时间的数组,[30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 32, 31],不用再if比较,但还是超时了,看来这个方法用python行不通,但也是一个思路

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值