当前位置: 首页 > news >正文

洛谷【算法1-1】模拟与高精度

洛谷题单,蓝桥备赛
题单链接

未完待续… 预计 2025年2月26日 前完成

目录

  • 进度
  • 题解与碎碎念
    • P1042 [NOIP 2003 普及组] 乒乓球
      • 题面
      • 小结
      • ac代码
    • P2670 [NOIP 2015 普及组] 扫雷游戏
      • 题面
      • 小结
      • ac代码
      • 题面
      • 小结
      • ac代码
      • 题面
      • 小结
      • ac代码

进度

【2025年2月19日19点33分】写了前俩,歇了

题解与碎碎念

P1042 [NOIP 2003 普及组] 乒乓球

题面

在这里插入图片描述在这里插入图片描述
原题链接

小结

  1. 读入处理的一般(蒟蒻刚从C++转python,见谅)
  2. 输出处理的很冗余丑陋(勉强能满足输出条件)
  3. 为什么一定要匹配 W L E,用 else 死了一半

槽点/易错点:

  1. 最后一个数据点,在匹配E,0:0 也是要输出的,亏我多虑卡 90(我恨
  2. 考虑只有 E 的情况
  3. (可能需要考虑)没有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("")

在这里插入图片描述

题面

小结

ac代码

题面

小结

ac代码

相关文章:

  • Redis如何解决大Key问题
  • SpringCloud面试题----什么是Feign?是如何实现负载均衡的
  • VGGNet 图像分类实现
  • 8.PG实例层连接访问管理(pg系列课程) 第2遍
  • 【Spring+MyBatis】_图书管理系统(下篇)
  • 升级 SpringBoot3 全项目讲解 — Spring Boot 3 中如何发Http请求?
  • 检测网络安全漏洞 工具
  • 【R语言】非参数检验
  • 技术总结 | MySQL面试知识点
  • Mysql基础语句
  • AIGC:开启内容创作新纪元,我们如何看待它的影响与前景?
  • ApplicationContextInitializer钩子函数学习
  • Linux环境开发工具
  • Three.js 快速入门教程【二】透视投影相机
  • 【个人总结】7. Linux 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)
  • 在IDEA的Maven中(同步所有Maven项目)和(重新加载所有Maven项目)的区别
  • 《95015网络安全应急响应分析报告(2024)》
  • 激光雷达YDLIDAR X2 SDK安装
  • RESTful 的特点与普通 Web API 的区别
  • 【GPT】从GPT1到GPT3
  • 顾家家居:拟定增募资近20亿元,用于家居产品生产线的改造和扩建等
  • 视频|漫画家寂地:古老丝路上的文化与交流留下的独特印记
  • 我国外汇储备规模连续17个月稳定在3.2万亿美元以上
  • 预告:央行等部门将发声,介绍“一揽子金融政策支持稳市场稳预期”有关情况
  • 强沙尘暴压城近万名游客被困,敦煌如何用3小时跑赢12级狂风?
  • 山大齐鲁医院回应论文现“男性确诊子宫肌瘤”:给予该护士记过处分、降级处理