2024ICPC江西省赛 做+补

虚拟参与了一下,结果一般,有一点点不尽人意。

虚拟参与的讲解

A

Problem - A - Codeforces

这个就很简单了,直接相加就可以了

a,b,c = map(int,input().split())
print(a + b + c)

C

Problem - C - Codeforces

这道题需要贪心,如果所有的和相加刚刚好等于s,那么就返回n,如果不等于,那么我们就让一个人来填补空缺。

n,s = map(int,input().split())
arr = list(map(int,input().split()))
a = sum(arr)
if a == s:
    print(n)
else:
    print(n - 1)

G

Problem - G - Codeforcesz

这道题也很简单,因为无论11的多少次方,最后的尾数都肯定是1,而5的倍数尾数肯定不是5就是0,那我们只需要统计相加就行了

t = int(input())
for _ in range(t):
    n = int(input())
    sum = 0
    for i in range(n):
        a,b = input().split()
        if b != 'A':
            b = int(b)
            sum += int(a) * b
    if sum % 5 == 0:
        print('Yes')
    else:
        print('No')

H

H (codeforces.com)

这道题读懂了就很简单了,只需要一个二维前缀和,如果你学过神经网络的相关知识,你或许看一眼就懂了。

这道题主要就是

题目要的是最终结果的最大值,那么最终数组是怎么来的,就是通过上面那个公式,这个公式中每一个K里面的值乘上小数组I,然后题目还告诉你了K中只能是1,-1,0,那我们就在这个小数组I的和是正的时候选择K是1,和是负就选择-1,和是0就选择0,那么我们想要求I数组,这就需要二维前缀和了,我们先求每一行的前缀和得到一个二维数组,然后我们再求每一列的前缀和,最后就是一个二维前缀和数组了。

n, m, k, l = map(int, input().split())
a = []
for i in range(n):
    row = list(map(int, input().split()))
    a.append(row)
for i in range(n):
    for j in range(1, m):
        a[i][j] += a[i][j - 1]
for j in range(m):
    for i in range(1, n):
        a[i][j] += a[i - 1][j]
ans = 0
print(a)
for x in range(k):
    for y in range(l):
        ans += abs(a[n + x - k][m + y - l] +
                   (a[x - 1][y - 1] if x > 0 and y > 0 else 0) -
                   (a[n + x - k][y - 1] if y > 0 else 0) -
                   (a[x - 1][m + y - l] if x > 0 else 0))
print(ans)

J

J (codeforces.com)

这道题玩过麻将的读起来就很好理解了,也就是让看看是不是十三幺或者是七小对

十三幺:1和9的全部(饼子,条子,万)都要有,还要中发白,东南西北这就是13张牌,然后再随便摸一张幺。

七小对:有七对一样的牌

这道题就是判断是不是这两种,如果是就打印这两种牌的胡法,不是就打印其他

t = int(input())
for _ in range(t):
    a = "1s9s1p9p1m9m1z2z3z4z5z6z7z"
    dic = {}
    for i in range(0,len(a),2):
        dic[a[i:i + 2]] = 0
    s = input()
    dic1 = {}
    for i in range(0,len(s),2):
        if s[i:i + 2] in dic1:
            dic1[s[i:i + 2]] += 1
        else:
            dic1[s[i:i + 2]] = 1
    d,e = True,True
    if len(dic1) == 7:
        for key,value in dic1.items():
            if value != 2:
                print("Otherwise")
                d = False
                break
        if d:
            print("7 Pairs")
    elif len(dic1) == 13:
        for key,value in dic1.items():
            if key not in dic:
                print("Otherwise")
                e = False
                break
        if e:
            print("Thirteen Orphans")
    else:
        print("Otherwise")

补题讲解

K

Problem - K - Codeforces

一道诈骗题,刚开始点进去一看跟树有关,赶紧就跑了,vp的时候直接跑路了,结果!!!

通过简单的分析可以得到答案就是2 ** (m - 1)

m = int(input())
mod = 998244353
print(pow(2,m - 1,mod))

其他的题我看了看,发现暂时不是我这个水平可以碰瓷的,所以选择跑路!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值