“战疫杯”大学生程序设计在线邀请赛(1)题解

1. 我的账本

简单模拟题:

用一个数组 a ,来统计每个人钱的情况

对于每次买饭的操作,如果1号买饭,1号对应的数也就是a[1] + 5 * 支付钱数即可,而其他的舍友,每次减少支付钱数即可,最后输出没有空行

a = [0] * 7
n = int(input())
for i in range(n):x,y = map(int,input().split())for j in range(1,7):# 如果让舍友买饭,就减下钱数if j != x:a[j] -= y# 买饭的人加上钱数*5a[x] += (5*y)
for i in range(1,7):if i != 6:print(a[i],end=" ")else:print(a[i],end="")

2. 核酸检测扫码

原本想错了,想成dfs判断连通性的问题,写了几十行代码,发现好多个联通块,输出了十几个点

后来仔细读题,发现直接模拟开搞

思路:读入每行的字符串之后,存入数组

另外开一个vis数组标记每次是否遍历过该点,如果遍历过直接跳过(用于剪枝,可以优化)

另外如果是0开头的直接跳过,还有如果下方和右方点的数量小于8的直接跳过

需要判断的只有1开头的以及没有遍历过的,用64个字符逐个字符对比,如果对比成功,标记这64个点(不重复遍历),并且加入开头点的坐标

最后答案输出前排一下序即可

n,m = map(int,input().split())
g = []
for i in range(n):g.append(input())
vis = [[0] * 1010 for _ in range(1010)]
nums = []
s = "1111111110000001101111011011110110111101101111011000000111111111"
for i in range(n):for j in range(m):if g[i][j] == '0' or vis[i][j] == 1 or i + 8 > n or j + 8 > m:continueif g[i][j] == '1':# 标记是否能够对比成功flag = True# 逐字符遍历时记录下标cnt = 0for k in range(i,i+8):for l in range(j,j+8):if g[k][l] == s[cnt]:cnt += 1# 逐字符对比失败跳出循环else:flag = Falsebreak# 对比成功后加入该顶点坐标 并标记该8*8方块上的点if flag:nums.append([i,j])for k in range(i,i+8):for l in range(j,j+8):vis[k][l] = 1
nums.sort(key = lambda x: (x[0],x[1]))
for i in range(len(nums)):print(nums[i][0],nums[i][1])

3. 辛苦的楼长

大模拟直接开搞

# 测试组数
t = 3
nums = []
# 映射
dic = {"song" : 0,"jv":1,"liu":2}
# 三个类型的数组
cnt1,cnt2,cnt3 = [],[],[]
dish = [[0] * 3 for _ in range(3)]
for i in range(t):n = int(input())s = []for j in range(n):ts = input()nums.append(ts)s.append(ts)morning,moon,night = 0,0,0for i in range(len(s)):s1,s2,s3,s4,s5 = s[i].split(" ")yuan,lou = s1[:-1],s1[-1]m = dic[yuan]# 通过映射的下标,简化代码dish[m][0] += int(s3)dish[m][1] += int(s4)dish[m][2] += int(s5)if m == 0:cnt1.append(s[i])if m == 1:cnt2.append(s[i])if m == 2:cnt3.append(s[i])
# 关键字排序 注意数组切片的 起始点和终点
cnt1.sort(key = lambda x : (int(x[4]),int(x[6:9])))
cnt2.sort(key = lambda x : (int(x[2]),int(x[4:7])))
cnt3.sort(key = lambda x : (int(x[3]),int(x[5:8])))
# 输出答案
# 先输出每个园区的点餐的宿舍数,早中晚的数量
# 再输出每个园区降序排列后的字符串
print(len(cnt1),dish[0][0],dish[0][1],dish[0][2])
for i in range(len(cnt1)):print(cnt1[i])
print(len(cnt2),dish[1][0],dish[1][1],dish[1][2])
for i in range(len(cnt2)):print(cnt2[i])
print(len(cnt3),dish[2][0],dish[2][1],dish[2][2])
for i in range(len(cnt3)):print(cnt3[i])

4. 等待做核酸

简单模拟,比第三题难度小

没有涉及任何概率论和期望的算法

用一个表简单模拟一下样例

理论到来时间 13 14 15 16 17 18 19 20 21
去的时间 15 15 15 15 15 15 15 15 15
等待时间 0 0 0 1 2 3 4 5 6
期望值 0 0 0 1/30 2/30 3/30 4/30 5/30 6/30

所以直接统计转化一下时间为分钟后,累加分子,分子是大于去的时间的累加和

(1 + 2 + … + 14) / 30 ,最后保留两位小数输出

不循环求和也可以通过等差公式来做,O(1)做法

(a1 + an ) * n / 2 ,这样写的转换一下即可

数据范围小无所谓了_

t = input().split("-")
m = input()
nums = []
t1,t2 = t[0],t[1]
m1,m2 = int(t1[:2]) * 60 + int(t1[3:]), int(t2[:2]) * 60 + int(t2[3:])
for i in range(m1,m2+1):nums.append(i)
m3 = int(m[:2]) * 60 + int(m[3:])
fz,fm = 0,len(nums)
for i in range(len(nums)):if nums[i] > m3:fz += (nums[i] - m3)
print("%.2f"%(fz/fm))

郑州大学“战疫杯”大学生程序设计在线邀请赛(1)题解(Python版本)相关推荐

  1. 郑州大学“战疫杯”大学生程序设计在线邀请赛(2)(C++题解+详细思路)2022年5月10日

    目录 1 公司的Logo 2 解封日期 3 语音设备是否正常? 1 公司的Logo 为了感谢河南省八六三软件有限公司对战疫杯ACM在线程序设计竞赛的大力支持,小Y决定为公司制作个logo. logo通 ...

  2. 郑州大学“战疫杯”大学生程序设计在线邀请赛(1)(C++题解+详细思路)2022年5月9日

    目录 1 我的账本 2 核酸检测扫码 3 辛苦的楼长 4 等待做核酸 1 我的账本 当前疫情防控形势严峻,学校为了减少同学们因为吃饭造成的聚集,规定一个寝室每次派个代表出去买饭,小W寝室的6人(编号1 ...

  3. 郑州大学“战疫杯”大学生程序设计在线邀请赛(5)(C++题解+详细思路)2022年5月13日

    目录 1 感染源在哪里 2 病毒序列 3 奇奇怪怪的形状 1 感染源在哪里 通过最近的一次核酸检测,疫情防控小组检测到了若干个阳性人员,通过调取行程码数据,防控小组获取到了这些病例曾经去过的地点.现在 ...

  4. “战疫杯”大学生程序设计在线邀请赛(6)题解

    "战疫杯"大学生程序设计在线邀请赛(6)题解 最后一场,第二题没做出来,想复杂了,可惜┭┮﹏┭┮ 1. 寝室分西瓜 分这些西瓜,每份是偶数,那么至少是12才够6个人分成最小的2,所 ...

  5. “战疫杯”大学生程序设计在线邀请赛(1)

    4题全为 :暴力/模拟 目录 我的账本 输入格式: 输出格式: 输入样例: 输出样例: 样例解释1 数据范围与提示 AC代码如下: 核酸检测扫码 输入格式: 输出格式: 输入样例: 输出样例: AC代 ...

  6. “战疫杯”大学生程序设计在线邀请赛(2)

    1 公司的Logo #include<bits/stdc++.h> using namespace std; char g[50][50]; signed main() {for(int ...

  7. 吉首大学第十届“新星杯”大学生程序设计大赛 A题题解

    这是一场很毒瘤的比赛. 鲁大师在一个星期前通知我们去打这场比赛,说名次高的有奖品,还说去年他们去参加这场比赛拿了前几名拿了个U盘-(疯狂暗示比赛很简单比赛很简单 ) 单纯的我真的信了 赛后得知这场比赛 ...

  8. “战疫杯”在线邀请赛——第五场题解

    "战疫杯"在线邀请赛--第五场题解 题目详情 - 1 感染源在哪里 (pintia.cn) 通过最近的一次核酸检测,疫情防控小组检测到了若干个阳性人员,通过调取行程码数据,防控小组 ...

  9. 2020 年 “联想杯”全国高校程序设计在线邀请赛H. Hay Mower

    2020 年 "联想杯"全国高校程序设计在线邀请赛H. Hay Mower 题意:n × m 网格图,每个格子内的草每秒增加 ai,j,接下 来 k 个操作,每个操作会在某个时间把 ...

最新文章

  1. 判断两直线段是否相交
  2. LeetCode 230. Kth Smallest Element in a BST--C++,Python解法--面试真题--找二叉树中第K小的元素
  3. Linux C :线程操作和线程同步的多线程并发编程
  4. Python学习系列:PyCharm CE 安装与测试
  5. 我的世界java版记分板_我的世界计分板指令 如何使用计分板教程
  6. 北大OJ(POJ 2808)校门外的树
  7. ROS 教程之 navigation : 用 move_base 控制自己的机器人(2)
  8. 【To Read】LeetCode | Jump Game II(转载)
  9. Bundle Adjustment原理及应用
  10. 三星手机怎么看html5,高端手机什么样?看三星S20 FE 5G就知道了
  11. 23_Shell语言————位置变量($@、$、$#、shift)
  12. https://blog.csdn.net/zxp_cpinfo/article/details/53692922
  13. 云计算实训总结_云计算·实训报告书
  14. 最好的投资理财工具 - 基金
  15. Android系统裁剪:手把手教你如何进行系统裁剪
  16. 猜拳游戏android报告,android 之猜拳游戏练习
  17. 知识产权贯标认证的好处,如何申请?
  18. PhotoShopCS6报错error:16解决办法
  19. 谷歌地图谷歌地图_为您的Google地图增添真实感
  20. 糖价回暖,甩掉包袱的南宁糖业能跑多快?

热门文章

  1. _environ与ssp攻击
  2. JAVA从入门到精通书中ZIP压缩和解压缩错误修正
  3. php cs fixer config,php cs fixer,如何运行有风险的规则?
  4. ProE 工程图教程系列-1. 零件的质量属性自动计算
  5. 2019-06-05 Java学习日记 day26 网络编程
  6. CCNA培训(五)_20210725day05
  7. 谷德威天津思科CCNA培训之用户访问和权限管理
  8. U盘无权访问,解决方法
  9. 暹罗网络目标跟踪_暹罗网络的友好介绍
  10. IoC+AOP的简单实现