洛谷【算法1-1】模拟与高精度
洛谷题单,蓝桥备赛
题单链接
未完待续… 预计 2025年2月26日 前完成
目录
- 进度
- 题解与碎碎念
- P1042 [NOIP 2003 普及组] 乒乓球
- 题面
- 小结
- ac代码
- P2670 [NOIP 2015 普及组] 扫雷游戏
- 题面
- 小结
- ac代码
- 题
- 题面
- 小结
- ac代码
- 题
- 题面
- 小结
- ac代码
进度
【2025年2月19日19点33分】写了前俩,歇了
题解与碎碎念
P1042 [NOIP 2003 普及组] 乒乓球
题面
原题链接
小结
- 读入处理的一般(蒟蒻刚从C++转python,见谅)
- 输出处理的很
冗余丑陋(勉强能满足输出条件) - 为什么一定要匹配
W L E
,用else
死了一半
槽点/易错点:
- 最后一个数据点,在匹配E,
0:0
也是要输出的,亏我多虑卡 90(我恨 - 考虑只有
E
的情况 - (可能需要考虑)没有E,用字符串末尾控制结束,我用的是把
input_data
的\n
都替换成空,数它的length
ac代码
import sys
input_data = sys.stdin.read()
input_data = input_data.replace("\n", "")
def WorL(n):
Wcount, Lcount = 0, 0
head = 1
length = len(input_data)
# print(f"length= {length}")
for index, char in enumerate(input_data):
# print(f'idx= {index}')
# print(char)
if char == "E":
if head == 1:
print(f"{Wcount}:{Lcount}", end="")
else:
# 槽点1,意思是这里不用判断是不是0:0从而不输出
print(f"\n{Wcount}:{Lcount}", end="")
break
elif char == "W":
Wcount += 1
elif char == "L":
Lcount += 1
if index == length - 1:
if head == 1:
print(f"{Wcount}:{Lcount}", end="")
else:
if not(Wcount == 0 and Lcount == 0):
print(f"\n{Wcount}:{Lcount}", end="")
break
if max(Wcount, Lcount) >= n and abs(Wcount - Lcount) >= 2:
if head == 1:
print(f"{Wcount}:{Lcount}", end="")
head = 0
else:
print(f"\n{Wcount}:{Lcount}", end="")
Wcount, Lcount = 0, 0
WorL(11)
print("\n")
WorL(21)
P2670 [NOIP 2015 普及组] 扫雷游戏
题面
原题链接
小结
ez(就是python不熟悉,写的有点累
ac代码
import sys
firstLine = sys.stdin.readline().strip()
N, M = map(int, firstLine.split())
mineFiled = []
for _ in range(N):
line = sys.stdin.readline().strip()
mineFiled.append(line)
for i in range(N):
mineFiled[i] = '?' + mineFiled[i] + '?'
addRow = '?' * (M + 2)
mineFiled.insert(0, addRow)
mineFiled.append(addRow)
ans = [[0] * M for _ in range(N)]
def sumRegion(I, J, matrix):
# print(matrix)
sum = 0
for i in range(I - 1, I + 2):
for j in range(J - 1, J + 2):
# print(f'i= {i}, j= {j}')
if matrix[i][j] == '?':
sum += 1
return 9 - sum
for i in range(1, N + 1):
# print(mineFiled[i])
for j in range(1, M + 1):
if mineFiled[i][j] == '?':
# print(f'__i= {i}, j= {j}')
ans[i - 1][j - 1] = sumRegion(i, j, mineFiled)
else:
ans[i - 1][j - 1] = -1
# print(ans)
for i in range(0, N):
for j in range(0, M):
if ans[i][j] == 0-1:
print("*", end="")
else:
print(ans[i][j], end="")
print("")