简单错误记录_马戏团_合唱团

简单错误记录

简单错误记录

image-20220526141553429

马戏团

马戏团

image-20220527155741844

import java.util.*;
class Node implements Comparable<Node>{
    public int w;
    public int h;
    public Node(int w,int h){
        this.w = w;
        this.h = h;
    }
    public int compareTo(Node obj){
        int ret = this.w - obj.w;
        if(ret==0){//体重相同,身高降序!
            return obj.h - this.h;
        }
        //按照身高升序排序!
        return ret;
    }
}
public class Main{
    public static int getMathLen(Node[] nodes,int n){
        //按体重排升序,体重相同,身高降序!
        Arrays.sort(nodes);
        //动归求最长递增子序列!
        //f(i):以i结尾的最长递增子序列!
        // f(i) = math(f(j)+1,f(i)) (j<i)&& nodes[j].h<=nodes.h;
        //初始化 f(i) = 1;//以i结尾的子序列至少长度为1
        //返回结果 Math(f(i)) 
        int result = 0;
        int[] dp = new int[n];
        for(int i = 0;i<n;i++){
            dp[i] = 1;
        }
        for(int i = 1;i<n;i++){
            for(int j = 0;j<i;j++){
                if(nodes[j].h <= nodes[i].h){
                    dp[i] = Math.max(dp[j]+1,dp[i]);
                }
            }
            result = Math.max(dp[i],result);
        }
        return result;
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            Node[] nodes = new Node[n];
            for(int i = 0;i< n;i++){
                sc.nextInt();
                nodes[i] = new Node(sc.nextInt(),sc.nextInt());
            }
            System.out.println(getMathLen(nodes,n));
        }
    }
}

合唱团

合唱团

image-20220527160213881

import java.util.*;
public class Main{
    public static long getMaxVal(long[] arr,int n,int k,int d){
         long[][] MaxVal = new long[n+1][k+1];
         long[][] MinVal = new long[n+1][k+1];
        //初始化:
        for(int i = 1;i<=n;i++){
            MaxVal[i][1] = MinVal[i][1] = arr[i];
        }
        long result = MaxVal[1][1];
        //状态转移:
        for(int i = 2;i<=n;i++){
            for(int j = 2;j<= k;j++){
                //i-d <= m <= i-1;
               for(int m = Math.max(1,i-d);m<=i-1;m++){
                   MaxVal[i][j] = Math.max(MaxVal[i][j],
                                 Math.max(MaxVal[m][j-1]*arr[i],MinVal[m][j-1]*arr[i]));
                    MinVal[i][j] = Math.min(MinVal[i][j],
                                 Math.min(MaxVal[m][j-1]*arr[i],MinVal[m][j-1]*arr[i]));
               }
            }
           result = Math.max(MaxVal[i][k],result);
        }
        return result;
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNextInt()){
            int n = sc.nextInt();
            long[] arr = new long[n+1];
            for(int i = 1;i<=n;i++){
                arr[i] = sc.nextInt();
            }
            int k = sc.nextInt();
            int d = sc.nextInt();
            System.out.println(getMaxVal(arr,n,k,d));
        }
    }
}

image-20220527164207668

#笔试#
全部评论
记录的重要性
点赞 回复 分享
发布于 2022-08-27 13:04 河南

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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