首页 > 试题广场 >

小美的数组操作2

[编程题]小美的数组操作2
  • 热度指数:1558 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小美拿到了一个数组,她每次可以进行如下操作:
选择两个元素,一个加 1,另一个减 1。
小美总共进行了k次操作。她希望你回答最终数组是否是非降序,你能帮帮她吗?
请注意,元素可能会被减成负数!

输入描述:
第一行输入一个正整数 t,代表询问次数。
每次询问首先第一行输入两个正整数nk,代表数组长度和操作次数。
接下来的一行输入n个正整数 a_i,代表初始数组。
接下来的k行,每行输入两个正整数u,v,代表使得第u个元素加 1,第v个元素减 1。
1\leq t,n,k,a_i \leq 100


输出描述:
输出t行,每行输出该次询问的答案。
如果数组变成了非降序,则输出"Yes"。否则输出 "No"。
示例1

输入

2
3 2
3 4 5
2 3
1 2
3 2
3 4 5
2 3
2 3

输出

Yes
No

说明

第一组询问,操作两次后数组变成[4,4,4],为非降序。
第二组询问,操作两次后数组变成[3,6,3],并不是非降序。
#Python
whileTrue:
    try:
        c = list()
        n = int(input())
        fori in range(n):
            a = list(map(int, input().split()))
            b = list(map(int, input().split()))
            forj in range(a[1]):
                c.append([])
                c[j] = list(map(int, input().split()))
                b[c[j][0] - 1] += 1
                b[c[j][1] - 1] -= 1
            fork in range(a[0] - 1):
                ifb[k] > b[k + 1]:
                    print("No")
                    break
            else:
                print("Yes")
 
    except:
        break

发表于 2023-09-07 00:00:00 回复(0)
def isNonDecreasing(nums):
    n = len(nums)
    fori in range(n-1):
        ifnums[i] > nums[i+1]:
            returnFalse
    returnTrue
 
t = int(input())  # 读取询问次数
 
for_ in range(t):
    n, k = map(int, input().split())  # 读取数组长度和操作次数
    nums = list(map(int, input().split()))  # 读取初始数组
     
    for_ in range(k):
        u, v = map(int, input().split())  # 读取操作
        nums[u-1] += 1
        nums[v-1] -= 1
     
    result = isNonDecreasing(nums)
    ifresult:
        print("Yes")
    else:
        print("No")
发表于 2023-08-25 12:01:38 回复(0)