牛客周赛 Round 140

小红的区间计数

考点:模拟

思路:

直接一个循环,判断区间内有多少个跟a,b,c都不同的数。

复杂度:O(n)

python 复制代码
import sys
input = sys.stdin.readline
a,b,c,l,r=map(int,input().split())
cnt=0
for i in range(l,r+1):
    if i!=a and i!=b and i!=c:
        cnt+=1
print(cnt)

小红的牛魔

考点:栈

思路:

题目说的是能否删掉对应的niu或者mo的子串,那么我们直接用栈,匹配到哪一个就开删就行了。最后再判断栈是不是空的,如果是空的那就是Yes,否则就是No。

复杂度:O(n)

python 复制代码
import sys
input = sys.stdin.readline
n=int(input())
s=input().strip()
p=[]
for v in s:
    if v=='u' and len(p)>=2 and p[-2]=='n' and p[-1]=='i':
        p.pop()
        p.pop()
    elif v=='o' and len(p)>=1 and p[-1]=='m':
        p.pop()
    else:
        p.append(v)
if len(p)==0:
    print("Yes")
else:
    print("No")

小红的矩阵计数

考点:模拟

思路:

他说了每个格子只有三种状态,又是每次只看2*2的格子内的,于是我们可以一个个找每个2*2的格子里面有多少个满足条件的L即可。

复杂度:O(n*m)

python 复制代码
import sys
input = sys.stdin.readline
n,m=map(int,input().split())
a=[list(input().strip()) for _ in range(n)]
cnt=0
for i in range(n-1):
    for j in range(m-1):
        c1=a[i][j]
        c2=a[i][j+1]
        c3=a[i+1][j]
        c4=a[i+1][j+1]
        if c1!=c2 and c2!=c3 and c1!=c3:
            cnt+=1
        if c1!=c2 and c2!=c4 and c1!=c4:
            cnt+=1
        if c1!=c3 and c3!=c4 and c1!=c4:
            cnt+=1
        if c2!=c3 and c3!=c4 and c2!=c4:
            cnt+=1
print(cnt)import sys
input = sys.stdin.readline
n,m=map(int,input().split())
a=[list(input().strip()) for _ in range(n)]
cnt=0
for i in range(n-1):
    for j in range(m-1):
        c1=a[i][j]
        c2=a[i][j+1]
        c3=a[i+1][j]
        c4=a[i+1][j+1]
        if c1!=c2 and c2!=c3 and c1!=c3:
            cnt+=1
        if c1!=c2 and c2!=c4 and c1!=c4:
            cnt+=1
        if c1!=c3 and c3!=c4 and c1!=c4:
            cnt+=1
        if c2!=c3 and c3!=c4 and c2!=c4:
            cnt+=1
print(cnt)

小红的排序(easy)

考点:并查集

思路:

图论中有一个性质,只要再同一个连通块中,我们最后都能换到相应的位置里去,于是问题就转换成判断当前位置和当前位置的值是否处于同一个连通块中。

复杂度:O(n)

python 复制代码
import sys
import math
input = sys.stdin.readline
sys.setrecursionlimit(300000)
t=int(input())
for _ in range(t):
    n,x,y=map(int,input().split())
    a=list(map(int,input().split()))
    parent=list(range(n+1))
    def find(i):
        if i ==parent[i]:
            return i
        parent[i]=find(parent[i])
        return parent[i]
    def union(i,j):
        root_i=find(i)
        root_j=find(j)
        if root_i!=root_j:
            parent[root_i]=root_j

    for i in range(1,n-x+1):
        union(i,i+x)
    for i in range(1,n-y+1):
        union(i,i+y)

    ok=True
    for i in range(n):
        val=a[i]
        if find(i+1)!=find(val):
            ok=False
            break
    if ok:
        print("Yes")
    else:
        print("No")

小红的三角形构造

考点:构造

思路:

一个数学问题,当x<=2的时候直接输出no,因为题目要是直角三角形。

当x大于2的时候,不管x给的是奇数还是偶数,我们都默认把它放在直角边来进行构造,现在我们在进行分类讨论:

当x是奇数的时候,现在就变成了。于是我们可以设c-b为1,c+b为,然后联立解方程即可。

当x是偶数的时候,现在就变成了。于是我们可以设c-b为2,c+b为,然后联立解方程即可。

复杂度:O(n)

python 复制代码
import sys
import math
input = sys.stdin.readline
t=int(input())
for _ in range(t):
    x=int(input())
    if x<=2:
        print("No")
    else:
        print("Yes")
        if x%2==0:
            print(f"{x} {(x**2+4)//4} {(x**2-4)//4}")
        else:
            print(f"{x} {(x ** 2 + 1) // 2} {(x ** 2 - 1) // 2}")
相关推荐
船厂电气自动化ai大模型21 分钟前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习
wuyk55526 分钟前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
绘梨衣54734 分钟前
异步任务队列-学习2
爬虫·python·学习·任务队列
人工智能培训1 小时前
人工智能数据安全下的个人信息保护实践方案
大数据·人工智能·算法·生活
用户8356290780511 小时前
使用 Python 在 Excel 中插入 OLE 对象
后端·python
one3121 小时前
高精度MEMS电容式倾角传感器:原理、结构与Python三维可视化
开发语言·python
Brilliantwxx1 小时前
【算法从零到千】【59-65】链表专题
数据结构·链表
元启数宇2 小时前
幕墙AI设计算法逻辑:元启数宇如何智能分格
人工智能·算法
宵时待雨2 小时前
优选算法专题16:多源BFS
算法·宽度优先
重生之后端学习2 小时前
53. 最大子数组和[中等]✅
java·数据结构·算法·leetcode·职场和发展