备战蓝桥之二分

二分题目:

B3880 [信息与未来 2015] 买木头 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.security.PublicKey;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;

import javax.naming.directory.SearchControls;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc=new Scanner(System.in);
        BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw1=new PrintWriter(System.out);
String[] aStrings=br1.readLine().split(" ");
bb=Integer.parseInt(aStrings[0]);
ccnumber=Integer.parseInt(aStrings[1]);
int length=Integer.parseInt(aStrings[2]);
int ss=Integer.parseInt(aStrings[3]);
int a;
aa[0][0]=length;
aa[0][1]=ss;
for(a=1;a<bb;a++) {
	aa[a][0]=((aa[a-1][0]*37011+10193)%10000)+1;
	aa[a][1]=((aa[a-1][1]*73011+24793)%100)+1;
}
int left=0;
int right=10002;
int answer=0;
while(left<=right) {
	int mid=(left+right)>>>1;
    if(check(mid)==1) {
    	answer=mid;
    	left=mid+1;
    }
    else {
    	right=mid-1;
    }
}
System.out.println(answer);
    }
    public static int[][] aa=new int[20000][2];
    public static int bb;
    public static int ccnumber;
    public static int check(int a) {
    	int b;
    	int c=0;
    	for(b=0;b<bb;b++) {
    		c=c+(aa[b][0]/a)*aa[b][1];
    		if(c>=ccnumber) {
    			return 1;
    		}
    	}
    	if(c>=ccnumber) {
    		return 1;
    	}
    	return 0;
    }
}

思维题目:

C - Minimize Abs 2 (atcoder.jp)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.security.PublicKey;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.Set;

import javax.naming.directory.SearchControls;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc=new Scanner(System.in);
        BufferedReader br1=new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw1=new PrintWriter(System.out);
String[] aStrings=br1.readLine().split(" ");
long a=Long.parseLong(aStrings[0]);
long b=(long)(Math.sqrt(a)+1);
long c=0;
long answer=Long.MAX_VALUE;
while(c<=b) {
	long d=b*b+c*c;
	answer=Math.min(answer, (long)Math.abs(c*c+b*b-a));
	if(d>a) {
		b--;
	}
	else {
		c++;
	}
}
System.out.println(answer);
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值