牛客--贪心算法的简单题--最大 FST 距离

1.灵异背包


java 复制代码
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
      int n=in.nextInt();
      int a=0;
      int sum=0;
      int minJi=999999;
      //表示满足条件的最大偶数和。只要总和是偶数
      for(int i=0;i<n;i++){
        a=in.nextInt();
        sum+=a;

        if(a%2!=0){
            minJi=Math.min(minJi,a);
        }
      }

        if(sum%2!=0){
            System.out.print(sum-minJi);
        }else{
            System.out.print(sum);

        }   
    }
}

2.BGN34 01序列



java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt(); // 数组长度
        int[] arr = new int[m];
        for (int i = 0; i < m; i++) {
            arr[i] = sc.nextInt();
        }
        int n = sc.nextInt(); // 需要插入的1的数量

        int count = 0; // 最多能插入的1的数量
        for (int i = 0; i < m; i++) {
            // 当前是1,直接跳过
            if (arr[i] == 1) continue;
            
            // 检查左边:i>0时,左边不能是1  满足任意一个就代表左边安全:
        //i == 0 → 我是第一个位置,根本没有左边 → 安全
        //arr[i-1] == 0 → 我左边的位置是 0(没有 1)→ 安全    
            boolean left=(i==0)||(arr[i-1]==0);
            // 检查右边:i不是最后一个时,右边不能是1
            boolean right=(i==m-1)||(arr[i+1]==0);
            if(left&& right){
                // 插入1,修改数组,避免后续插相邻
                arr[i]=1;
                count++;//统计能加入的1的数量
                // 提前终止:够数了直接输出,不用再遍历
                if(count>n){
                    System.out.print(true);
                    return;
                }
               
            }
            
               
              
        }

        // 遍历完看是否满足需求
        System.out.println(count >= n ? "true" : "false");
    }
}

BGN28 最大 FST 距离






`import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

复制代码
    // 边界:只有1个数字,没有两两组合 → 距离=0
    if (n <= 1) {
        System.out.println(0);
        return;
    }

    // 读取第一个数字 p,下标 i=1
    long p = sc.nextLong();
    long i = 1;
    
    // 计算:数值² + 下标² → 就是我们说的 u
    long maxU = p * p + i * i;
    long minU = maxU;
    // 计算:数值² - 下标² → 就是我们说的 v
    long maxV = p * p - i * i;
    long minV = maxV;

    // 从下标 2 开始遍历剩下所有数字
    for (i = 2; i <= n; i++) {
        p = sc.nextLong();
        // 计算当前数字的 u 和 v
        long u = p * p + i * i;
        long v = p * p - i * i;
        
        // 更新 u 的最大/最小值
        maxU = Math.max(maxU, u);
        minU = Math.min(minU, u);
        // 更新 v 的最大/最小值
        maxV = Math.max(maxV, v);
        minV = Math.min(minV, v);
    }

    // 答案 = 两个差值里更大的那个
    System.out.println(Math.max(maxU - minU, maxV - minV));
}

}`

相关推荐
知识浅谈5 小时前
DeepSeek V4 和 GPT-5.5 在同一天发布了??我也很懵,但对比完我悟了
算法
DeepModel5 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
田梓燊5 小时前
力扣:19.删除链表的倒数第 N 个结点
算法·leetcode·链表
空中海5 小时前
Kubernetes 生产实践、可观测性与扩展入门
java·贪心算法·kubernetes
简简单单做算法7 小时前
基于GA遗传优化双BP神经网络的时间序列预测算法matlab仿真
神经网络·算法·matlab·时间序列预测·双bp神经网络
guygg887 小时前
利用遗传算法解决列车优化运行问题的MATLAB实现
开发语言·算法·matlab
武藤一雄7 小时前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
sali-tec8 小时前
C# 基于OpenCv的视觉工作流-章52-交点查找
图像处理·人工智能·opencv·算法·计算机视觉
yu85939588 小时前
MATLAB连续线性化模型预测控制(SL-MPC)
算法·机器学习·matlab
ytttr8738 小时前
基于ACADO工具包的自主车道跟踪与避障MPC控制
算法