1 条题解

  • 0
    @ 2025-8-24 23:03:21

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar MLE_Automaton
    一坨蒟蒻

    搬运于2025-08-24 23:03:21,当前版本为作者最后更新于2024-08-30 20:43:54,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    来水一发题解。

    既然是 Python 组的,就拿 Python 写吧。

    题目分析

    给定一个 n×mn \times m 的矩阵,问你有多少对点在同一对角线上,满足两点值相同。

    用八皇后的思路,正斜线(/ 型)上的两点横坐标与竖坐标和相同,反斜线(\ 型)上的两点横坐标与竖坐标差相同。

    所以我们可以建立 22dict,一个存横坐标与竖坐标和与值,另外一个存横坐标与竖坐标差与值。遍历每个元素并累加值,最后别忘了乘以 22

    其中,还要注意一些 Python 的小细节(比如写 main 函数等等),不然很容易 TLE。

    Talk is cheap,show me the code!

    # By ChenXiJie2013(luogu uid:928418)
    def main():
        a = []
        n, m = map(int, input().split())
        zheng, fan = dict(), dict()
        getz, getf = zheng.get, fan.get
        ans = 0
        for i in range(n):
            a.append(tuple(map(int, input().split()))) # 注意map强转成tuple
        for i in range (n):
            for j in range(m):
                ans += getz((i + j, a[i][j]), 0)
                zheng[(i + j, a[i][j])] = getz((i + j, a[i][j]), 0) + 1
                ans += getf((i - j, a[i][j]), 0)
                fan[(i - j, a[i][j])] = getf((i - j, a[i][j]), 0) + 1
        print(ans * 2)
    if __name__ == "__main__":
        main()
    

    非常惊险的记录

    注:本蒟蒻第一次写题解,若有不足请及时指出。

    • 1

    信息

    ID
    10694
    时间
    2000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者