• 全国高校绿色计算大赛 预赛第二阶段(Python)


    第1关统计分数的麻烦

    class Task:
        def get_lost_scores(self, scores):
            s = ""
            index = [1 for i in range(10001)]
            for i in scores:
                index[i] = 0
            for i in range(1,10001):
                if(index[i] == 1):
                    s+=str(i)
            ans = int(s) % 11
            return ans
    
    
    
    
    if __name__ == '__main__':
        task = Task
        score = [2, 3, 5, 6, 7, 8, 9]
        print(task.get_lost_scores(task, score))
    
    

    第2关最强战队

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    class BestTeam:
        def get_best_team(self, numbers, abilities, selectedNum, distance):
            n = numbers
            k = selectedNum
            d = distance
            res = 0
            maxval = [([0] * 100) for i in range(50)]
            minval = [([0] * 100) for i in range(50)]
            for i in range(n):
                minval[i][0] = abilities[i]
                maxval[i][0] = abilities[i]
            for i in range(n):
                for j in range(1, k):
                    # for kk in range(i - 1, 0, -1):
                    kk = i - 1
                    while (kk >= max(i - d, 0)):
                        # print(kk)
                        maxval[i][j] = max(maxval[i][j],
                                           max(maxval[kk][j - 1] * abilities[i], minval[kk][j - 1] * abilities[i]));
                        minval[i][j] = min(minval[i][j],
                                           min(maxval[kk][j - 1] * abilities[i], minval[kk][j - 1] * abilities[i]));
                        kk -= 1
                res = max(res, max(maxval[i][k - 1], minval[i][k - 1]));
            return res
    
    
    if __name__ == '__main__':
        bestTeam = BestTeam
        numbers = 10
        abilities = [12,11,8,9,15,22,7,9,12,10]
        selectedNum = 3
        distance = 5
        print(bestTeam.get_best_team(bestTeam, numbers, abilities, selectedNum, distance))
    
    

    第3关完美的团建活动

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    class TeamBuilding:
    
        def get_minium_steps(self, stones):
            xx = 0
            yy = 0
            ans = 0
            n = len(stones)
            points = []
            for i in range(n):
                for j in range(n):
                    if stones[i][j] > 1:
                        points.append((stones[i][j], i, j))
            points = sorted(points, key=lambda points: points[0]);
            for nn, x, y in points:
                mp = [([0] * n) for p in range(n)]
    
                ind = self.bfs(self, xx, yy, x, y, stones, mp, 0)
                # print(ind)
                if ind != -1:
                    ans += ind
                else:
                    return -1
                xx = x
                yy = y
            return ans
    
        def bfs(self, xx, yy, x, y, stones, mp, step):
            if(xx == x and yy == y): return 0
            mp[xx][yy] = 1
            to = [[0, 1], [1, 0], [-1, 0], [0, -1]]
            import queue
            q = queue.Queue()
            q.put((xx, yy, step))
            while not q.empty():
                tx, ty, stepp = q.get()
                for i in range(4):
                    tox = tx + to[i][0]
                    toy = ty + to[i][1]
                    if self.judge(self, tox, toy, stones) and mp[tox][toy] != 1:
                        if tox == x and toy == y:
                            return stepp + 1
                        q.put((tox, toy, stepp + 1))
                        mp[tox][toy] = 1
            return -1
    
        def judge(self, x, y, stones):
            l = len(stones)
            w = len(stones[0])
            if x < 0 or x >= l or y < 0 or y >= w:
                return False
            if stones[x][y] == 0:
                return False
            else:
                return True
    
    
    if __name__ == '__main__':
        t = TeamBuilding
        stones = [[12,34,5,7,8,0],
        [1,0,8,9,12,0],
        [13,0,0,0,11,24],
        [23,32,17,0,0,10],
        [1,2,3,0,0,6],
        [4,8,12,0,0,19]]
    
    
        # stones = [[2, 3, 4], [0, 0, 5], [8, 7, 6]]
        print(t.get_minium_steps(t, stones))
        # mp = [([0] * 3) for p in range(3)]
        # print(t.bfs(t, 0, 0, 2, 0, stones,mp, 0))
    
    
  • 相关阅读:
    朋友你的HTML标签语义化了吗?
    左岸的一篇文章关于早起的:早起的鸟儿有虫吃!
    方法比知识重要
    软件项目经理素质能力的必备要求
    老早以前收藏的一些专业技能
    浅谈如何衡量SEO工作成效
    8.29几个腾讯微博邀请链接
    又是一篇很老的文章:三五个人十来条枪如何走出软件作坊成为开发正规军
    收藏的零碎东西
    拆掉思维里的墙摘抄
  • 原文地址:https://www.cnblogs.com/somliy/p/9868998.html
Copyright © 2020-2023  润新知