差分-算法日常练习记录

AcWing 4262. 空调

4262. 空调 - AcWing题库

"""
https://www.acwing.com/problem/content/4265/
"""

n = int(input())
first = [0] + list(map(int, input().split()))
second = [0] + list(map(int, input().split()))
arr = [0 for i in range(0, n + 10)]
for i in range(1, n + 1):
    arr[i] = first[i] - second[i]
# print(arr)
res = 0
for i in range(1, n + 2):
    if arr[i] - arr[i - 1]>0:
        res += arr[i] - arr[i - 1]
print(res)

AcWing 5396. 棋盘

5396. 棋盘 - AcWing题库

"""
https://www.acwing.com/problem/content/5399/
"""
n, m = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(0, m)]
darr = [0 for _ in range(0, n ** 2 + 10)]
for i in range(len(arr)):
    x1, y1, x2, y2 = arr[i]
    for j in range(x1, x2 + 1):
        start = n * (j - 1) + y1
        end = n * (j - 1) + y2 + 1
        darr[start] += 1
        darr[end] -= 1
res = [0 for _ in range(0, n ** 2 + 10)]
for i in range(1, len(res)):
    res[i] = (res[i - 1] + darr[i]) % 2
for i in range(0, n):
    tem = res[1 + i * n:1 + i * n + n]
    tt = ""
    for j in range(len(tem)):
        tt += str(tem[j])
    print(tt)

AcWing 4655. 重新排序

4655. 重新排序 - AcWing题库

"""
https://www.acwing.com/problem/content/4658/
"""

n = int(input())
arr = [0] + list(map(int, input().split(" ")))
m = int(input())
op = [list(map(int, input().split(" "))) for _ in range(0, m)]
sum_arr = [0 for i in range(0, n + 10)]
d_arr = [0 for i in range(0, n + 10)]
pre = 0
now = 0
for i in range(1, n+1):
    sum_arr[i] = sum_arr[i - 1] + arr[i]
for i in range(len(op)):
    l, r = op[i]
    pre += sum_arr[r] - sum_arr[l - 1]
    d_arr[l] += 1
    d_arr[r + 1] -= 1
for i in range(1,n+1):
    d_arr[i] = d_arr[i] + d_arr[i-1]
d_arr.sort(reverse=True)
arr.sort(reverse=True)
for i in range(0, n):
    if d_arr[i] > 0:
        now += d_arr[i] * arr[i]
print(now - pre)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值