当前位置:网站首页>cf:C. Column Swapping【排序 + 模擬】

cf:C. Column Swapping【排序 + 模擬】

2022-07-07 05:55:00 白速龍王的回眸

在這裏插入圖片描述

分析

記錄每一行不滿足排序的比特置
如果大於三個直接凉凉
然後用個set記錄需要換的(l,r)
如果大於1個凉凉
然後再判斷每個行的l r必須滿足a[l] < a[r]
否則凉凉

ac code

import sys
input = sys.stdin.readline

for _ in range(int(input())):
    n, m = list(map(int, input().split()))
    grid = [[0] * m for _ in range(n)]
    for i in range(n):
        grid[i] = list(map(int, input().split()))
    flag = True
    mustChanges = set()
    for i in range(n):
        lst = []
        temp = sorted(grid[i])
        for j in range(m):
            if temp[j] != grid[i][j]:
                lst.append(j)
        if len(lst) > 2:
            flag = False
            break
        elif len(lst) == 2:
            mustChanges.add((lst[0], lst[1]))
        if len(mustChanges) >= 2:
            flag = False
            break




    if not flag:
        print(-1)
    else:
        if len(mustChanges) == 0:
            print(1, 1)
        else:
            l, r = list(mustChanges)[0]
            flag = True
            for i in range(n):
                if grid[i][l] < grid[i][r]:
                    flag = False
                    break
            if flag:
                print(l + 1, r + 1)
            else:
                print(-1)

總結

排序 + 模擬

原网站

版权声明
本文为[白速龍王的回眸]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070037372731.html