欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

牛客编程巅峰赛S2第7场 - 青铜&白银&黄金 (升砖二了)

程序员文章站 2022-03-26 09:50:12
牛客编程巅峰赛S2第7场 - 青铜&白银&黄金今天又是拉跨操作, 又是一题选手踩坑: 子序列 与 子串战绩第一题: 牛牛爱喝酒说什么, 做什么, 模拟就可以了import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 返回牛牛能喝的最多的酒 * @param m int整型 酒单价 * @param...

牛客编程巅峰赛S2第7场 - 青铜&白银&黄金


今天又是拉跨操作, 又是一题选手

第二题踩坑: 子序列 与 子串 ( 二分

战绩

牛客编程巅峰赛S2第7场 - 青铜&白银&黄金 (升砖二了)



第一题: 牛牛爱喝酒

牛客编程巅峰赛S2第7场 - 青铜&白银&黄金 (升砖二了)


说什么, 做什么, 模拟就可以了


import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 返回牛牛能喝的最多的酒
     * @param m int整型 酒单价
     * @param n int整型 牛牛的现金
     * @return int整型
     */
    public int countWine (int m, int n) {
        // write code here
        int k = n / m;
        int ans = k;
        int a = k, b = k;
        while(a >= 2 || b >= 4){
            int temp = 0;
            temp += a / 2;
            temp += b / 4;
            a = a % 2 + temp;
            b = b % 4 + temp;
            ans += temp;
        }
        
        return ans;
    }
}




第二题: 踩坑题 牛牛的子序列

牛客编程巅峰赛S2第7场 - 青铜&白银&黄金 (升砖二了)


最小里面找最大, 最大里面找最小 >> 想到二分

  1. 二分查找 (通用的解法)
  2. 双指针(O(N))

二分

二分查找模板

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param x string字符串 
     * @return int整型
     */
    public int Maximumlength (String x) {
        // write code here
        int n = x.length();
        int left = 0, right = n, ans = 0;
        
        while(left <= right){
            int mid = (left + right) / 2;
            if(check(mid, x)){
                ans = mid;
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        
        return ans * 3;
    }
    
    public boolean check(int mid, String x){
        int n = x.length();
        int a = 0, b = 0, c = 0;
        for(int i = 0; i < n ; i++){
            if(a < mid){
                if(x.charAt(i) == 'a'){
                    a++;
                }
            } else if(b < mid){
                if(x.charAt(i) == 'b'){
                    b++;
                }
            } else if(x.charAt(i) == 'c'){
                c++;
            }
        }
        
        return c >= mid;
    }
    
}




第三题: 分贝壳的游戏

牛客编程巅峰赛S2第7场 - 青铜&白银&黄金 (升砖二了)


这就是博弈题嘛??

猜结论 ?

抄来的代码


AC Code


import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 
     * @param p int整型 
     * @param q int整型 
     * @return int整型
     */
    public int Gameresults (int n, int p, int q) {
        // write code here
        if(p >= n) return 1;
        if(p == q){
            if(n % (p + 1) == 0) return -1;
            else return 1;
        } else {
            if(p > q) return 1;
            else return -1;
        }
    }
}

本文地址:https://blog.csdn.net/qq_43765535/article/details/110886301