头像

私の世界では私は神です

無敵神組織




离线:3天前


最近来访(43)
用户头像
种花家的兔兔
用户头像
WangLaoHei
用户头像
mikumag
用户头像
csu_cangkui
用户头像
DegenZ
用户头像
Aigrl
用户头像
zhaozixu2006
用户头像
pccc
用户头像
解封用户
用户头像
SUPERDOGE
用户头像
忘打周赛
用户头像
hzh_34
用户头像
垫底抽風
用户头像
C_227
用户头像
lsz_
用户头像
北海没有WA
用户头像
露西亚
用户头像
hanyucan
用户头像
福贵
用户头像
_如鲸向海

活动打卡代码 AcWing 3559. 围圈报数

from __future__ import print_function 
T=int(input())
while T:
    n=int(input())
    line=[i for i in range(1,n+1)]
    #print(line)
    index=0
    while len(line)!=0:
        index=(index+2)%n
        #print(index,end='ii ')
        print(line[index],end=" ")
        line.pop(index)
        n-=1
    print()



活动打卡代码 AcWing 3311. 最长算术

t=int(input())
for i in range(1,t+1):
    n=int(input())
    arr=list(map(int,input().split()))+[float("inf")]
    ans=2
    left=0
    right=2
    while right<=n:
        if arr[right]-arr[right-1]!=arr[left+1]-arr[left]:
            ans=max(ans,right-left)
            left=right-1
        right+=1
    print("Case #{}: {}".format(i,ans))
。


活动打卡代码 AcWing 3474. 坠落的蚂蚁

#include <bits/stdc++.h>
using namespace std;
int c[1010], w[1010], dp[1010], n, m;
int main() {
    scanf("%d%d", &n, &m);
    for (int i = 1;i <= n; i++) scanf("%d%d", &c[i], &w[i]);
    for (int i = 1;i <= n; i++)
        for (int j = c[i]; j <= m; j++)
            dp[j] = max(dp[j], dp[j - c[i]] + w[i]);
    printf ("%d\n", dp[m]);
    return 0;
}





def qmi(a, b, q):
    res = 1
    while b:
        if b & 1:
            res = (res*a)%q
        a = (a*a)%q
        b >>= 1
    print(res)


活动打卡代码 AcWing 4273. 链表合并

to = {}
val = {}
L1, L2, n = input().split()
for i in range(int(n)):
    L, v, nex = input().split()
    val[L], to[L] = v, nex
a = []
b = []
while L1 != '-1':
    a.append(L1)
    L1 = to[L1]
while L2 != '-1':
    b.append(L2)
    L2 = to[L2]
if len(a) < len(b):
    a, b = b, a
a = a[::-1]
while len(a):
    print(a[-1], val[a[-1]], to[a[-1]])
    a.pop()
    if len(b):
        print(a[-1], val[a[-1]], b[-1])
        print(b[-1], val[b[-1]], to[a[-1]])
        a.pop() and b.pop()




活动打卡代码 AcWing 4274. 后缀表达式

n=int(input())
string=[1e14]*(n+1)
l=[-1]*(n+1)
r=[-1]*(n+1)
st=[0]*(n+1)
for i in range(1,1+n):
    a,b,c=input().split()
    b=int(b)
    c=int(c)
    string[i]=a
    if b!=-1:
        l[i]=b
        st[b]=1

    if c!=-1:
        r[i]=c
        st[c]=1

for i in range(1,1+n):
    if st[i]==0:
        root=i

def dfs(i):
    print('(',end='')
    if l[i]==-1 and r[i]==-1:
        print(string[i],end='')
    elif l[i]!=-1 and r[i]!=-1:
        dfs(l[i])
        dfs(r[i])
        print(string[i],end='')
    else:
        print(string[i],end='')
        dfs(r[i])

    print(')',end='')


dfs(root)


版权说明

  1. 版权所有者
  2. 免费“借阅”


活动打卡代码 AcWing 4275. Dijkstra序列

n,m=map(int,input().split())
graph=[[1e15]*(n+1) for i in range(n+1)]

for i in range(m):
    x,y,z=map(int,input().split())
    graph[x][y]=z
    graph[y][x]=z

k=int(input())

def check(data):
    begin=data[0]
    length=[1e15]*(n+1)
    length[begin]=0
    for i in range(0,n):
        b=data[i]
        for j in range(i+1,n):
            e=data[j]
            if length[e]<length[b]:
                return False
            length[e]=min(length[e],length[b]+graph[b][e])
    return True

for _ in range(k):
    data=list(map(int,input().split()))
    if check(data):
        print('Yes')
    else:
        print('No')

版权说明

  1. 版权所有者
  2. 免费“借阅”


活动打卡代码 AcWing 2070. 自行车之旅

T=int(input())
for t in range(1,T+1):
    n=int(input())
    a=list(map(int,input().split()))
    ans=0
    for i in range(1,n-1):
        if(a[i]>a[i-1] and a[i]>a[i+1]):
            ans+=1
    print("Case #",t,": ",ans,sep='')



题目描述

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。

第 i 件物品的体积是 vi,价值是 wi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。

接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。

输出格式
输出一个整数,表示最大价值。

数据范围
0<N,V≤1000
0<vi,wi≤1000

样例

输入样例
4 5
1 2
2 4
3 4
4 5
输出样例:
8

算法1

python3

import sys
def solve(n, t, w, v):
    ans = [[0 for i in range(t + 1)] for j in range(n + 1)]
    for i in range(n + 1):
        ans[i][0] = 0
    for i in range(t + 1):
        ans[0][i] = 0
    for i in range(1, n + 1):
        for j in range(1, t + 1):
            if j >= w[i]:
                ans[i][j] = max(ans[i - 1][j], ans[i - 1][j - w[i]] + v[i])
            else:
                ans[i][j] = ans[i - 1][j]
    return ans

if __name__ == '__main__':
    n, t = map(int, input().strip().split())
    w = [0 for i in range(n + 1)]
    v = [0 for j in range(n + 1)]
    for i in range(1, n + 1):
        w[i], v[i] = map(int, input().strip().split())
    ans = solve(n, t, w, v)
    print(ans[-1][-1])

https://www.acwing.com/problem/content/description/2/
https://www.acwing.com/user/myspace/index/213704/
@私の世界では私は神です



活动打卡代码 AcWing 3526. 素数

def is_prime(n):
    i = 2
    while i <= n//i:
        if n % i == 0:
            return False
        i += 1
    return True


while True:
    try:
        n = int(input())
        if n <= 11:  # 左闭右开
            print(-1)
        else:
            cnt = 0
            for i in range(11, n):
                if(i % 10 == 1 and is_prime(i)):
                    print(i, end=' ')
                    cnt += 1
            if not cnt:
                print(-1)
            else:
                print()
    except:
        break