头像

归藏0v0




离线:8小时前


最近来访(10)
用户头像
fiv3
用户头像
种花家的蒟蒻
用户头像
垫底抽風
用户头像
throwsException
用户头像
GG_boy
用户头像
howerguss
用户头像
学算法的小菜鸡
用户头像
pikachu_
用户头像
zc_1

活动打卡代码 AcWing 844. 走迷宫

归藏0v0
10小时前
n,m=list(map(int,input().split()))
l=[]
for _ in range(n):
    l.append(list(map(int,input().split())))
flag=[[0]*m for _ in range(n)]
q=[]
q.append((0,0))
flag[0][0]=1

dir=[(-1,0),(0,-1),(1,0),(0,1)]
ans=0

while q:
    le=len(q)
    # print(q)
    f=False
    for _ in range(le):
        a,b=q.pop(0)
        if (a,b)==(n-1,m-1):
            print(ans)
            f=True
            break
        for x,y in dir:
            na,nb=a+x,b+y
            if 0<=na<n and 0<=nb<m:
                if l[na][nb]==0 and flag[na][nb]==0:
                    q.append((na,nb))
                    flag[na][nb]=1
    ans+=1
    if f:
        break








活动打卡代码 AcWing 843. n-皇后问题

归藏0v0
11小时前
n=int(input())
ans=[["."]*n for _ in range(n)]

def check(i,j):
    global n
    for a in ans[i]:
        if a=="Q":
            return False
    for b in [a[j] for a in ans]:
        if b=="Q":
            return False
    for r in range(n):
        c=j-i+r
        if c<0 or c>=n:
            continue
        else:
            if ans[r][c]=="Q":
                return False
    for r in range(n):
        c=i+j-r
        if c<0 or c>=n:
            continue
        else:
            if ans[r][c]=="Q":
                return False
    return True

def print_ans():
    for a in ans:
        print("".join(a))
    print()

def dfs(x):
    global n
    if x==n:
        print_ans()
        return
    for c in range(n):
        if check(x,c):
            ans[x][c]="Q"
            dfs(x+1)
            ans[x][c]="."

dfs(0)



活动打卡代码 AcWing 838. 堆排序

n,m=list(map(int,input().split()))
l=list(map(int,input().split()))

size=len(l)
l.insert(0,0)
def down(x):
    global size
    t=x
    if 2*x<=size and l[2*x]<l[x]:
        t=2*x

    if 2*x+1<=size and l[2*x+1]<l[t]:
        t=2*x+1
    if t!=x:
        l[t],l[x]=l[x],l[t]
        down(t)

for i in range(size//2,-1,-1):
    down(i)

for _ in range(m):
    print(l[1],end=" ")
    l[1]=l[size]
    size-=1
    down(1)


活动打卡代码 AcWing 787. 归并排序

n=int(input())
l=list(map(int,input().split()))

def merge_sort(arr,l,r):
    if l>=r:
        return
    mid=l+(r-l)//2
    merge_sort(arr,l,mid)
    merge_sort(arr,mid+1,r)
    temp=[None]*(r-l+1)
    i,j=l,mid+1
    k=0
    while i<=mid and j<=r:
        if arr[i]<=arr[j]:
            temp[k]=arr[i]
            i+=1
        else:
            temp[k]=arr[j]
            j+=1
        k+=1
    while i<=mid:
        temp[k]=arr[i]
        k+=1;i+=1
    while j<=r:
        temp[k]=arr[j]
        k+=1;j+=1
    arr[l:r+1]=temp
    return
merge_sort(l,0,n-1)
print(" ".join(map(str,l)))


活动打卡代码 AcWing 104. 货仓选址

n=int(input())
l=sorted(map(int,input().split()))
print(sum(l[n-1-i]-l[i] for i in range(n//2)))


活动打卡代码 AcWing 913. 排队打水

//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
n=int(input())
l=list(map(int,input().split()))
l.sort()
print(sum(x*(n-1-i) for i,x in enumerate(l)))




//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
n=int(input())
l=[]
for _ in range(n):
    l.append(tuple(map(int,input().split())))
l.sort(key=lambda x:(x[1],x[0]))
last=float("-inf")
ans=0
for a,b in l:
    if a>last:
        ans+=1
        last=b
print(ans)




n,m=list(map(int,input().split()))
deg=[0]*(n+1)
graph=[set() for _ in range(n+1)]
for _ in range(m):
    a,b=list(map(int,input().split()))
    # if a==b:
    #     continue
    if b in graph[a]:
        continue
    graph[a].add(b)
    deg[b]+=1
# print(graph)
st=[]
for i in range(1,n+1):
    if deg[i]==0:
        st.append(i)

ans=[]
while st:
    temp=st.pop(0)
    for node in graph[temp]:
        deg[node]-=1
        if deg[node]==0:
            st.append(node)
    ans.append(temp)
if len(ans)==n:
    print(" ".join(map(str,ans)))
else:
    print(-1)




n,m=list(map(int,input().split()))
s1=list(input().split()[0])
s2=list(input().split()[0])
dp=[[0]*(n+1) for _ in range(m+1)]
for i in range(1,m+1):
    for j in range(1,n+1):
        if s2[i-1]==s1[j-1]:
            dp[i][j]=dp[i-1][j-1]+1
        else:
            dp[i][j]=max(dp[i-1][j],dp[i][j-1])
# print(dp)
print(dp[m][n])



n=int(input())
l=list(map(int,input().split()))
dp=[0]*n
for i in range(n):
    ma=0
    for j in range(0,i):
        if l[j]<l[i]:
            ma=max(dp[j],ma)
    dp[i]=ma+1
#     print(dp)
# print(dp)
print(max(dp))