1

A :

最多有3*k个人玩明日方舟,但人数为n,所以玩明日方舟总人数 t 为min(3*k,n)

剩下n-t个人中,最多999个人玩fgo,总人数为min(n-t,999)

n,k=map(int,input().split())
t=min(n,3*k)
print(t)
print(min(n-t,999))

B:

理解题目意思即可,必然有至少一个混沌的字符串与那人的名字相等,这句话的意思就是最短的那个字符串就是答案,直接输出最短的字符串即可

n=int(input())
print(min([input() for i in range(n)],key=lambda x:len(x)))

C:

找规律题,可以把1异或到20都列举出来

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

0 1 3 0 4 1 7 0 8 1 11 0 12 1 15 0 16 1 19 0 20

瞪眼易证法 : 存在如下规律,每4个一循环 , 当 n%4==0或 n==1 时, 答案为n, 当n%4==3时,答案为n-1 ,其他情况为-1

for i in range(int(input())):
    n=int(input())
    if n%4==0 or n==1:
        print(n)
    elif n%4==3:
        print(n-1)
    else:
        print(-1)

D :

此为麦乐鸡定理,证明比较复杂,需要可以自己上网查询,也可以参照上一题的打表方式看出规律。

结论就是:当a与b的最大公约数为1的时候,答案为a*b-a-b,否则为INF

import math
for i in range(int(input())):
    a,b=map(int,input().split())
    if math.gcd(a,b)==1:
        print(a*b-a-b)
    else:
        print('INF')

E:

此为一个n个节点,n-1条边的图,并且全联通,拿起必然是一个树。首先使用领接表或者其他方式建图,由于1号节点不能去,删去与1号节点相连的所有边。剩下的就是以a和b为起始点,分别跑一遍广度优先搜索或者深度优先搜索或者最短路算法等等,算出能跑的最大距离,之后看谁能跑的最大距离更大即可(这题真的比D简单吗,原来这题是想放D题的位置的)

#include <bits/stdc++.h>
//#include <bits/extc++.h>
using namespace std;
//using namespace __gnu_pbds;
typedef long long ll;typedef unsigned long long ull;
//typedef __int128_t i128;typedef __uint128_t ui128;
typedef pair<int, int> pii;typedef pair<ll, ll> pll;
const int MAXN=2e5+5,INF=0x3f3f3f3f,MOD=998244353;
const ll LLINF=0x3f3f3f3f3f3f3f3f;
//const double PI=acos(-1);

vector<int> s[MAXN];
int dfs(int nd,int par)
{
    if(nd==1) return 0;
    int ma=0;
    for (auto i:s[nd])
    {
        if(i==par) continue;
        ma=max(ma,dfs(i,nd));
    }
    return ma+1;
}

void solve()
{
    int n;cin>>n;
    int a,b;cin>>a>>b;
    for (int i=0; i<n-1; ++i)
    {
        int u,v;cin>>u>>v;
        s[u].push_back(v);s[v].push_back(u);
    }

    int x=dfs(a,a),y=dfs(b,b);
    cout<<(x>y?"Alice":"Bob")<<'\n';

}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    //int cases;cin>>cases;while(cases--)
        solve();
    

    return 0;
}
import collections
import sys
input=lambda:sys.stdin.readline().rstrip()

n=int(input())
inf=float('inf')
a,b=map(int,input().split())

g=collections.defaultdict(list)
for i in range(n-1):
    u,v=map(int,input().split())
    if u==1 or v==1:
        continue
    g[u].append(v)
    g[v].append(u)
def bfs(x):
    dis=[inf]*(n+1)
    dis[x]=0
    que=collections.deque()
    que.append(x)
    while que:
        u=que.popleft()
        for v in g[u]:
            if dis[v]==inf:
                dis[v]=min(dis[u]+1,dis[v])
                que.append(v)        
    return max([i for i in dis if i !=inf])
if bfs(a)>bfs(b):
    print("Alice")
else:
    print("Bob")

F :

待写(

全部评论

相关推荐

06-15 20:57
已编辑
门头沟学院 Java
CARLJOSEPH...:年轻人有傲气很正常,但是建议工作前洗净傲气。 说实在的,什么奖学金什么奖项的都很一般。尊重你的老师,在有时间的时候去上课,真遇到走不开的事,请态度端正地向你的老师说明情况,请求请假。我相信任何一个有师德的老师都会允许的(我的老师就是这样)。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务