牛客周赛 Round 136

小红的数组重排

考点:无

思路:

按题意模拟即可。

复杂度:O(1)

python 复制代码
import sys
input=sys.stdin.readline
a1,a2,a3=map(int,input().split())
b1=a2
b2=a3
b3=a1
print(b1,b2,b3)

小红的回文串构造

考点:无

思路:

因为题目说了要所有字符互不相同,所以我们可以得出结论只有n是1的时候才有输出,其他都是No。

复杂度:O(n)

python 复制代码
import sys
input=sys.stdin.readline
t=int(input())
for _ in range(t):
    n=int(input())
    if n==1:
        print(chr((ord('a')+(n-1))))
    else:
        print("No")

小红的排列

考点:逆元

思路:

我们可以先算出偶数,奇数在n中的个数,然后在算出o,j,?在字符串a中的个数。

然后可以得到结论问号个数对上还要放的奇数个数的逆元乘上奇数总数的阶乘乘上偶数总数的阶乘就行了。

复杂度:O(n)

python 复制代码
import sys
input=sys.stdin.readline
mod=998244353
n=int(input())
a=input().strip()
os=n//2
js=n-os
gso=a.count('o')
gjs=a.count('j')
qt=a.count('?')
if gso>os or gjs>js:
    print(0)
    sys.exit()
need=js-gjs
if need<0 or need>qt:
    print(0)
    sys.exit()
f=[1]*(n+1)
for i in range(1,n+1):
    f[i]=f[i-1]*i%mod
def C(n,k):
    if k<0 or k>n:
        return 0
    return f[n]*pow(f[k],mod-2,mod)%mod*pow(f[n-k],mod-2,mod)%mod
cnt=C(qt,need)*f[js]%mod*f[os]%mod
print(cnt%mod)

小红的中位数

考点:二分

思路:

找出比中位数小的和大的有多少个,然后将中位数公式变一下形,可以得出关于两边的两个式子。

复杂度:O(nlogn)

python 复制代码
import sys
input=sys.stdin.readline
from bisect import bisect_left,bisect_right
n=int(input())
a=list(map(int,input().split()))
a.sort()
x=a[(n-1)//2]
l=bisect_left(a,x)
r=bisect_right(a,x)
g=n-r
ans=10**18
if l>0:
    ans=min(ans,n-2*l)
if g>0:
    ans=min(ans,n-(2*g-1))
if ans==10**18:
    print(-1)
else:
    print(ans)
相关推荐
沉淀的.晴天5 小时前
FreeRTOS信号量
数据结构·算法
renzao_ai6 小时前
本地 35B 大模型部署实战:Ollama 跑 Ornith-35B 全流程
python·llama·免费ai大模型
the局外人6 小时前
学习 FastAPI 的 Day 4:完成用户系统与接口联调(完结)
后端·python·fastapi
青山木6 小时前
Hot 100 --- 打家劫舍
java·数据结构·算法·leetcode·动态规划
机器学习之心6 小时前
均值、中值、圆周期:三种 InSAR 干涉相位滤波的实测对比与参数取舍
算法·均值算法
AIFQuant6 小时前
Python股票实时价格告警系统:WebSocket订阅与REST快照实战
开发语言·python·websocket·a股行情
xy20266 小时前
多轮 Tool Agent 训不动?先把环境 token 从 loss 里拿掉
算法
名字还没想好☜6 小时前
Java Collectors.groupingBy 进阶:多级分组、下游收集器与统计聚合一次搞定
java·windows·后端·python·spring
wzdark6 小时前
多核架构下算法并行化的瓶颈与突破点4
算法·架构