牛客--贪心算法的简单题--最大 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));
}

}`

相关推荐
吴长建先生重名了8 分钟前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
贝壳69033 分钟前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
贝壳6901 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
青少儿编程课堂4 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
在所不辞兄4 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
I_belong_to_jesus14 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Code_Solitude21 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司1 天前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
YLCHUP1 天前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论