zoukankan      html  css  js  c++  java
  • Java实现洛谷 P1873 砍树(StreamTokenizer+IO+二分)

    P1873 砍树

    在这里插入图片描述

    输入输出样例
    输入  
    5 20
    4 42 40 26 46
    输出 
    36
    

    PS:
    get新知识,以前只知道STringTokenizer并没有了解过StreamTokenizer,这次才知道
    原来io输入的jdk提供了方法接收这个,大概感觉貌似差不多,好久没用io了,一边百度一边用
    现学现卖哈哈

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.io.StreamTokenizer;
    
    public class 砍树 {
    
    	public static void main(String[] args) throws IOException {	
    	    StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    	    PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
    	    in.nextToken();
    	    int n = (int)in.nval;
    	    in.nextToken();
    	    int m = (int)in.nval;
    	    int[] s = new int[n];
    	    int l = 0,r = 0;
    	    for(int i = 0;i < n;i++) {
    	    	in.nextToken();
    	    	s[i] = (int)in.nval;
    	    	r = Math.max(r, s[i]);
    	    }
    	    while(l <= r) {
    	    	int mid = (l + r) / 2;
    	    	if(judge(mid,s,m)) {
    	    		l = mid + 1;
    	    	}else {
    	    		r = mid - 1;
    	    	}
    	    }
    	    out.print(l - 1);
    	    out.close();
    	}
    	
    	public static boolean judge(int mid,int[] s,int m) {
    		int sum = 0;
    		for(int i = 0;i < s.length;i++) {
    			if(s[i] > mid) {
    				sum += (s[i] - mid);
    				if(sum >= m) {
    					return true;
    				}
    			}
    		}
    		return false;
    	}
    }
    
    
  • 相关阅读:
    C++ istringstream总结
    C++各数据类型的最值
    AcWing 机器人跳跃问题 二分
    蓝桥杯 矩形面积交
    蓝桥杯 完美的代价
    蓝桥杯 数的读法
    国内 镜像 下载
    redis的pipline使用
    MySQL额外操作
    sql强化演练( goods 表练习)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075213.html
Copyright © 2011-2022 走看看