【蚂蚁笔试题汇总】[全网首发] 2024-03-30-蚂蚁春招笔试题-三语言题解(CPP Python Java)

m > \frac{n(n-1)}{2}

m>2n(n−1)​,就一定会出现重边或自环,不满足题目要求。所以当

m

n

(

n

1

)

2

m > \frac{n(n-1)}{2}

m>2n(n−1)​ 时,一定不存在合法方案。

综上所述,我们只需要判断

m

m

m 是否满足

n

1

m

n

(

n

1

)

2

n-1 \leq m \leq \frac{n(n-1)}{2}

n−1≤m≤2n(n−1)​,如果满足,就输出 “YES”,否则输出 “NO”。

时间复杂度

O

(

T

)

O(T)

O(T),空间复杂度

O

(

1

)

O(1)

O(1)。

参考代码
  • Python
t = int(input())
for _ in range(t):
    n, m = map(int, input().split())
    if n  <= m + 1 and m <= n \* (n - 1) // 2:
        print("YES")
    else:
        print("NO")

  • Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        while (t-- > 0) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            if (n - 1 <= m && m <= n \* (n - 1) / 2) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }
}

  • Cpp
#include <iostream>
using namespace std;

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n, m;
        cin >> n >> m;
        if (n - 1 <= m && m <= n \* (n - 1) / 2) {
            cout << "YES\n";
        } else {
            cout << "NO\n";
        }
    }
    return 0;
}

02.K小姐的植物大战僵尸

问题描述

K小姐正在玩一款类似植物大战僵尸的游戏。在游戏中,有

n

n

n 只僵尸排成一列向K小姐的家园前进。初始时,第

i

i

i 只僵尸的生命值为

a

i

a_i

ai​。

K小姐可以进行

m

m

m 次攻击。每次攻击,K小姐可以选择

k

k

k 只相邻的僵尸,使它们的生命值都减少

1

1

1。

K小姐想知道,在进行

m

m

m 次攻击之后,生命值最大的僵尸最少能有多少生命值。

输入格式

第一行包含三个正整数

n

,

m

,

k

n, m, k

n,m,k,分别表示僵尸的数量、攻击次数和每次攻击能选择的相邻僵尸数量。

第二行包含

n

n

n 个正整数

a

1

,

a

2

,

,

a

n

a_1, a_2, \ldots, a_n

a1​,a2​,…,an​,表示初始时每只僵尸的生命值。

输出格式

输出一个整数,表示在

m

m

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值