牛客周赛 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)
相关推荐
2301_793804692 小时前
深入理解Python的if __name__ == ‘__main__‘
jvm·数据库·python
仰泳的熊猫2 小时前
题目2580:蓝桥杯2020年第十一届省赛真题-分类计数
数据结构·c++·算法·蓝桥杯
用户637818131192 小时前
优先队列的使用
算法
qq_334903152 小时前
C++与人工智能框架
开发语言·c++·算法
夕珩2 小时前
Java 排序算法详解:冒泡排序、选择排序、堆排序
java·算法·排序算法
紫檀香2 小时前
Alembic入门教程
后端·python
Magic--2 小时前
从入门到精通:快速排序的核心原理、实现与优化
数据结构·算法·排序算法
weixin_649555672 小时前
C语言程序设计第四版(何钦铭、颜晖)第十章函数与程序结构之统计完全平方数
c语言·数据结构·算法
沈阳信息学奥赛培训2 小时前
深搜算法 6300:Grid Path Construction(2418)
算法