ZJYC2023 浙江省大学生程序设计竞赛校内选拔赛全题题解

A:正着写不方便,那倒着写就行了

from collections import deque
n = int(input())
s = input()
cur = n
ans = deque([cur])
cur -= 1
for i in s[::-1]:
    if i == 'L':
        ans.append(cur)
    else:
        ans.appendleft(cur)
    cur -= 1
print(*ans)

B:找规律构造

n,a,b = map(int,input().split())
ans = [[''] for _ in range(n)]
for i in range(n):
    for j in range(n):
        if (i+j)%2 == 0:
            ans[i][0] += '.'*b
        else:
            ans[i][0] += '#'*b
for i in ans:
    for j in range(a):
        print(i[0])

C:水题

n,x = map(int,input().split())
a = list(map(int,input().split()))
print(a.index(x)+1)

D:x&y=a(a二进制为1的位x和y也必须为1),x+y=s,s为剩下几位的和,即这几位不能和前面重合

for _ in range(int(input())):
    def func():
        a, s = map(int, input().split())
        c = s - 2 * a
        if c < 0:return False
        for i in range(61):
            if a&(1<<i) and c&(1<<i):
                return False
        return True
    if func():print('Yes')
    else:print('No')

E:标准前缀和哈希

n,k = map(int,input().split())
a = list(map(int,input().split()))
from collections import Counter
cnt = Counter([0])
ans = 0
pre = 0
for i in a:
    pre += i
    ans += cnt[pre-k]
    cnt[pre] += 1
print(ans)

F:枚举a,b然后算出c

n = int(input())
ans = 0
for a in range(1,n+1):
    if a*a*a > n:break
    for b in range(a,n+1):
        if a*b*b > n:break
        ans += n//(a*b)+1-b
print(ans)

G:从终点开始枚举bfs,最后看哪些点是必须要遍历的,全部加上就是答案了

n = int(input())
v = []
nums = []
for _ in range(n):
    lst = list(map(lambda x:int(x)-1,input().split()))
    v.append(lst[0]+1)
    nums.append(lst[2:])
rep = [0]*n
rep[n-1] = 1
res = deque([])
for i in nums[n-1]:
    rep[i] = 1
    res.append(i)
while res:
    p = res.pop()
    for i in nums[p]:
        if rep[i]:continue
        rep[i] = 1
        res.append(i)
ans = 0
for i in range(n):
    if rep[i]:
        ans += v[i]
print(ans)

H:k为1的时候显然是inf的,其他情况枚举两个点然后找跟这两个点在同一条直线上的点,注意去重!

from collections import Counter
def func():
    n, k = map(int, input().split())
    a = []
    for _ in range(n):
        a.append(list(map(int, input().split())))
    if k == 1:
        return 'Infinity'
    ans = 0
    rep = [set() for _ in range(n)]
    for i in range(n):
        for j in range(i+1,n):
            if j in rep[i]:continue
            m = (a[i][0]-a[j][0],a[i][1]-a[j][1])
            aaa = []
            for x in range(j+1,n):
                mm = (a[i][0]-a[x][0],a[i][1]-a[x][1])
                if m[0]*mm[1] == m[1]*mm[0]:
                    aaa.append(x)
            if len(aaa) >= k:
                ans += 1
            has = set(aaa)
            for xx in aaa:
                rep[xx].update(has)
    return ans
print(func())


I:01背包

n,xx = map(int,input().split())
a = []
for _ in range(n):
    a.append(list(map(int,input().split())))
pre = {0}
for i,j in a:
    lin = set()
    for x in pre:
        if x+i <= xx:
            lin.add(x+i)
        if x+j <= xx:
            lin.add(x+j)
    pre = lin
if xx in pre:print('Yes')
else:print('No')

J:从前往后枚举,直到不能再递增为止

n = int(input())
h = list(map(int, input().split()))
pre = h[0]
for i in range(1, n):
    if h[i] <= pre:
        return pre
    pre = h[i]
print(pre)

K:dp,中间枚举到的值必须都是k的因子,加上这个剪枝之后就很快了

from collections import Counter
n,xx = map(int,input().split())
dp = {1:1}
for _ in range(n):
    lst = list(map(int,input().split()))
    cnt = Counter(lst[1:])
    lin = Counter()
    for i,j in cnt.items():
        for x,y in dp.items():
            if xx%(x*i) == 0:
                lin[x*i] += j*y
    dp = lin
print(dp[xx])

L:从前往后枚举,减去字典里重复的就行

n = int(input())
a = list(map(int,input().split()))
a.sort()
from collections import Counter
cnt = Counter()
ans = 0
for i in range(n):
    ans += i-cnt[a[i]]
    cnt[a[i]] += 1
print(ans)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于2023年全国大学生电子设计大赛的E题,我可以为您提供一些思路。请注意,以下仅为参考,具体的设计方案需要根据比赛要求和您的实际情况来确定。 E题通常是一个开放性的设计题目,可能要求参赛队伍设计一个具有创新性和实用性的电子产品或系统。以下是一些可能的思路: 1. 智能家居系统:设计一个智能家居控制系统,可以通过手机应用或语音控制实现对家庭电器、照明、安防等设备的远程控制和自动化管理。 2. 健康监测设备:设计一个便携式的健康监测设备,可以实时监测人体指标如心率、血压、体温等,并将数据传输到手机应用或云平台进行分析和记录。 3. 智能交通系统:设计一个智能交通系统,利用传感器和图像识别技术实现车辆的自动导航、交通信号控制和路况监测,提高交通效率和安全性。 4. 环境监测与控制系统:设计一个基于传感器网络的环境监测与控制系统,可实时监测温湿度、空气质量等环境指标,并实现对室内空调、照明系统等设备的自动控制,提高生活质量和能源利用效率。 5. 智能农业系统:设计一个智能农业系统,利用传感器和数据分析技术,实现对农作物生长环境的监测和控制,提高农业生产效率和质量。 这些只是一些参考思路,您可以根据自己的兴趣和专业背景选择适合的方向,并进一步细化和创新。在设计过程中,要考虑到功能的可行性、系统的稳定性和用户体验等方面。祝您在比赛中取得优异的成绩!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值