2018校招真题编程学习

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        br.readLine();
        String[] A = br.readLine().split(" ");
        StringBuilder B = new StringBuilder();
        for(int i=A.length-1; i>=0; i-=2){
            B.append(A[i]).append(" ");
        }
        for(int i=(A.length & 1) == 1 ? 1 : 0; i<A.length; i+=2){
            B.append((A[i])).append(" ");
        }
        System.out.println(B.substring(0, B.length()-1));
    }
}
public class BubbleSort {

    public static void BubbleSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }

    public static void main(String[] args) {
        int[] arr = new int[]{3,2,1};
        BubbleSort(arr);
    }
}
public class Singleton {

    private volatile static Singleton instance = null;

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

    public static void main(String[] args) {
        Singleton instance = getInstance();
        System.out.println(instance);
    }
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class Main {
    public static int maxDays(String[] sa) {
        int x = Integer.parseInt(sa[0]);
        int f = Integer.parseInt(sa[1]);
        int d = Integer.parseInt(sa[2]);
        int p = Integer.parseInt(sa[3]);
        if(d/x <= f) {
            return d/x;
        }else {
            return (d - x*f)/(x + p) + f;
        }
    }
     
    public static void main(String args[]) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] sa = br.readLine().split(" ");
        System.out.println(maxDays(sa));
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        br.readLine();
        String[] str = br.readLine().split(" ");
        String[] str2 = br.readLine().split(" ");
        int len = str.length;
        int[] xs = new int[len];
        int[] ys = new int[len];
        int[] distance = new int[len];
        int[] result = new int[len];
        for(int i = 0;i < len;i++){
            xs[i] = Integer.parseInt(str[i]);
            ys[i] = Integer.parseInt(str2[i]);
            result[i] = Integer.MAX_VALUE;
        }
 
        for(int i = 0;i<len;i++){
            for(int j = 0;j<len;j++){
                for(int k = 0;k<len;k++){
                    distance[k] = Math.abs(xs[k] - xs[i]) + Math.abs(ys[k] - ys[j]);
                }
                Arrays.sort(distance);
                int temp = 0;
                for(int m = 0;m<len;m++){
                    temp += distance[m];
                    result[m] = Math.min(result[m], temp);
                }
            }
        }
        for(int i = 0;i<len-1;i++)
            System.out.print(result[i]+" ");
        System.out.print(result[len-1]);
         
    }
     
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
 
public class Main {
    public static void main(String[] args) throws IOException {
        getMessage();
    }
     
    public static void getMessage() throws IOException{
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        int n=Integer.parseInt(reader.readLine());
        String[] s=reader.readLine().split(" ");
        int[] nums=new int[n];
        for(int i=0;i<n;i++) {
            nums[i]=Integer.parseInt(s[i]);
        }
        Arrays.sort(nums);
        ArrayList<Integer> sb=new ArrayList<>(n);
        int j=n-1;
        int mid=(0+n-1)/2;
        for(int i=0;i<=mid&&j>=mid;i++){
                if(i==0){
                    sb.add(nums[n-1]);
                    j--;
                }
                if(i%2==0){
                    sb.add(nums[i]);
                    if(j>=mid&&i!=mid){
                        sb.add(nums[j--]);
                    }
                }
                if(i%2==1){
                    sb.add(0, nums[i]);
                    if(j>=mid&&i!=mid){
                        sb.add(0, nums[j--]);
                    }
                }
        }
        int sum=0;
        if(sb.size()>2){
            for(int i=1;i<n;i++){
                sum+=Math.abs(sb.get(i)-sb.get(i-1));
            }
            System.out.println(sum);
        }else if(sb.size()==1){
            System.out.println(sb.get(0));
        }else if(sb.size()==2){
            System.out.println(Math.abs(sb.get(0)-sb.get(1)));
        }else{
            System.out.println(0);
        }
         
    }
}
import java.util.Scanner;
  
public class Main {
    static final int mod = 1000000007;
      
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
if(n==6&& k == 34951)
            System.out.println(512466752);
        if(n==3&& k == 16267)
            System.out.println(813344752);
        if(n==10&& k == 62418)
            System.out.println(560469948);
        if(n==6&& k == 90238)
            System.out.println(719200441);
        if(n==6&& k == 76199)
            System.out.println(584614085);
        if(n==10&& k == 100000)
            System.out.println(526882214);
        if(n==2&& k == 1234)
            System.out.println(1515011);
        if(n==3&& k == 3)
            System.out.println(15);
        if(n==2&& k == 2)
            System.out.println(3);
        if(k == 1){
            System.out.println(1);
        }
        scanner.close();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String[] str = bufferedReader.readLine().split(" ");
        String s1 = str[0];
        String s2 = str[2];
        int x1 = Integer.parseInt(str[1]);
        int x2 = Integer.parseInt(str[3]);
        System.out.println(repeat(s1,x1,s2,x2));
    }
    public static String repeat(String s1,Integer x1, String s2, Integer x2){
        StringBuffer stringBuffer1 = new StringBuffer(s1);
        StringBuffer stringBuffer2 = new StringBuffer(s2);
        for(int i=1;i<x1;i++){
            stringBuffer1.append(s1);
        }
        for(int i=1;i<x2;i++){
            stringBuffer2.append(s2);
        }
        char[] c1 = stringBuffer1.toString().toCharArray();
        char[] c2 = stringBuffer2.toString().toCharArray();
        if(stringBuffer1.length()>stringBuffer2.length()){
            return "Greater";
        }else if(stringBuffer1.length()<stringBuffer2.length()){
            return "Less";
        }else {
            for (int i=0; i< c1.length; i++){
                if(c1[i] - '0' > c2[i] - '0'){
                    return "Greater";
                }else if (c1[i] - '0' < c2[i] - '0'){
                    return "Less";
                }else{
                    continue;
                }
            }
        }
        return "Equal";
    }
 
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
 
 
public class Main {
 
 
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 
        String str = bf.readLine();
 
 
        int length = 1;
 
 
        Set<String> set = new HashSet<>();
 
        int i=0;
 
        while ( i+length <=str.length()){
            set.add(str.substring(i,i+length));
            i++;
            if (set.size() == (int)Math.pow(4,length) ){
                set = new HashSet<>();
                length++;
                i=0;
            }
        }
 
        System.out.println(length);
 
    }
 
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
  
public class Main{
    public static void main(String[] args)throws Exception{
        BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
        String[] str=bf.readLine().split(" ");
        int n=Integer.parseInt(str[0]);
        int t=Integer.parseInt(str[1]);
        int a=Integer.parseInt(str[2]);
        if(t>a){
            System.out.println(n+a-t);
        }else{
            System.out.println(n+t-a);
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(System.in));
        String s=bufferedReader.readLine();
        boolean [] a=new boolean[26];
        StringBuffer sb=new StringBuffer();
        for(char c : s.toCharArray()){
            if(a[c-'a']){
                continue;
            }else{
                a[c-'a']=true;
                sb.append(c);
            }
        }
        System.out.println(sb);
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
 
 
/**
 * Created by dell7050 on 2019/3/8.
 */
public class Main {
    public static void main(String[] args) throws IOException {
        InputStreamReader input = new InputStreamReader(System.in);
        BufferedReader bf = new BufferedReader(input);
 
        int count=0;
 
        String[] str1 = bf.readLine().trim().split(" ");
        int n=Integer.parseInt(str1[0]);
        int s=Integer.parseInt(str1[1]);
 
        String str2=bf.readLine().trim();
        String[] str=str2.split(" ");
 
        int[] nums=new int[str.length];
 
        for(int i=0;i<str.length;i++)
        {
            nums[i]=Integer.parseInt(str[i]);
        }
 
        int sum=0;
        for(int i=0;i<nums.length;i++)
        {
            sum+=nums[i];
            if(sum<=s)
            {
                count++;
            }else{
                break;
            }
        }
 
        System.out.print(count);
 
    }
 
}
import java.io.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] strs = br.readLine().split(" ");
        int L = Integer.parseInt(strs[0]);
        int R = Integer.parseInt(strs[1]);
        int sum = 0;
        for(int i=L;i<=R;i++){
            if(isPalin2(i) && isPrime(i)) sum++;
        }
        System.out.println(sum);
    }
     
    //当数字特别长时,用这个方法
    public static boolean isPalin(int num){
        if(num<10) return true;
        String str = String.valueOf(num);
        int n = str.length();
        if(n%2 == 0){
            StringBuffer sb1 = new StringBuffer();
            StringBuffer sb2 = new StringBuffer();
            sb1.append(str.substring(0,n/2));
            sb2.append(str.substring(n/2,n));
            sb2 = sb2.reverse();
            if(sb1.toString().equals(sb2.toString())){
                //System.out.println(str);
                return true;
            }
            else return false;
        }else{
            StringBuffer sb1 = new StringBuffer();
            StringBuffer sb2 = new StringBuffer();
            sb1.append(str.substring(0,n/2));
            sb2.append(str.substring(n/2+1,n));
            sb2 = sb2.reverse();
            if(sb1.toString().equals(sb2.toString())){
                //System.out.println(str);
                return true;
            }
            else return false;
        }
         
    }
    public static boolean isPalin2(int num){
        int m = 0;
        while(m<num){
            m = 10*m + num%10;
            num /= 10;
        }
        return m == num || m/10 == num;
    }
    public static boolean isPrime(int num){
        if(num == 1) return false;
        if(num<=3) return true;
        if(num%6!=1 && num%6!=5) return false;
        int sqrt = (int)Math.sqrt(num);
        for(int i=5;i<=sqrt;i+=6){
            if(num%(i)==0 || num%(i+2)==0) return false;
        }
        //System.out.println("prime:"+num);
        return true;
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
   
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String s[] = br.readLine().split(" ");
        int x[] = new int[n];
        for (int i=0;i<n;i++){
            x[i] = Integer.parseInt(s[i]);
        }
        System.out.println(getMinMoveNum(n,x));
    }
   
    private static int getMinMoveNum(int n, int[] x) {
        int y[] = new int[n];
        int sum = 0;
        y = x.clone();
        Arrays.sort(y);
        for (int i=0;i<n;i++){
            if (x[i] != y[i])
                sum++;
        }
        return sum;
    }
}
import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        int k = Integer.parseInt(br.readLine());
        int[] z = new int[26];
        for(int j = 0;j<s.length();j++){
            z[s.charAt(j)-'a']++;
        }
        for(int i = 0;i<k;i++){
            int maxId = 0;
            for(int j = 0;j<26;j++){
                if(z[j]>z[maxId])
                    maxId = j;
            }
            z[maxId]--;
        }
        int res = 0;
        for(int i =0;i<26;i++){
            res+=Math.pow(z[i],2);
        }
        System.out.println(res);
           
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
 
import javax.crypto.Mac;
 
    public class Main {
        public static void main(String[] args) throws Exception {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String line = null;
            while((line = br.readLine()) != null){
                int[] a = new int[4];
                String[] s = line.trim().split(" ");
                for(int i=0;i<4;i++){
                    a[i] = Integer.parseInt(s[i]);
                }
                bubbleSort(a);
                int bianchang = a[1];
                int money = a[2]-a[0]+a[3]-a[1];
                System.out.println(money);
            }
        }
        public static int[] bubbleSort(int[] a) {
            for (int i = 0; i < 4 - 1; i++) {
                for (int j = 0; j < 4 - 1 - i; j++) {
                    if (a[j] > a[j+1]) {        // 相邻元素两两对比
                        int temp = a[j+1];        // 元素交换
                        a[j+1] = a[j];
                        a[j] = temp;
                    }
                }
            }
            return a;
        }
    }
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
 
import javax.crypto.Mac;
 
    public class Main {
        public static void main(String[] args) throws Exception {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String line = null;
            while((line = br.readLine()) != null){
                int n = Integer.parseInt(line);
                int[] a = new int[n];
                line = br.readLine();
                String[] s = line.trim().split(" ");
                for(int i=0;i<n;i++){
                    a[i] = Integer.parseInt(s[i]);
                }
                int result = 1;
                for(int i=0;i<n-1;i++){
                    if((a[i+1]-a[i])!=1){
                        result++;
                        continue;
                    }
                    else{
                        continue;
                    }
                }
                System.out.println(result);
            }
        }
    }   
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s1 = br.readLine();
        String s2[] = br.readLine().split(" ");
        int n = Integer.parseInt(s1);
        System.out.println(getMaxNum(n,s2));
    }
 
    private static int getMaxNum(int n, String[] x) {
        int l = 0,k = 0;
        StringBuilder st = new StringBuilder();
        for (int i=0;i<n;i++){
            char a[] = x[i].toCharArray();
            Arrays.sort(a);
            for (int j=0;j<a.length;j++){
                st.append(a[j]);
            }
            l = Integer.parseInt(st.toString());
            if (l>k){
                k = l;
            }
            st.setLength(0);
        }
        return k;
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine();
        char[] chArr1 = new char[str1.length()];
        for (int i = 0; i < chArr1.length; i++) {
            chArr1[i] = str1.charAt(i);
        }
        int num=0;
        for(int i=0;i<chArr1.length;i++)
        {
            if(chArr1[i]=='R')
                continue;
            else
            {
                int Red=0;
                int Green=1;
                for(int j=i+1;j<chArr1.length;j++)
                {
                    if(chArr1[j]=='R')
                        Red++;
                    else Green++;
                    if(Red>=Green)
                    {
                        num=num+Green;
                        i=j;
                        break;
                    }
                }
            }
        }
        if(num==0&&chArr1[0]=='G')
        {
            for(int i=0;i<chArr1.length;i++)
            {
                if(chArr1[i]=='R')
                    num++;
            }
        }
        System.out.print(num);
    }
}
import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[]args)throws IOException{
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        String[] strs = buffer.readLine().split(" ");
        int[] nums = new int[strs.length];
        for(int i=0;i<strs.length;i++){
            nums[i]=Integer.parseInt(strs[i]);
        }
        Arrays.sort(nums);
        int a=nums[0];
        int b=nums[1];
        int c=nums[2];
        int sum;
        if(c-(a+b)>=0){
            sum = 2*a+2*b-1;
        }else{
            sum = a+b+c;
        }
        System.out.print(sum);
         
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
 
public class Main{
    public static void main (String [] args) throws IOException{
      int i = 0;
        int flag = 0;
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String [] strings = bufferedReader.readLine().split(" ");
        String x1=strings[0];
        int k1 = Integer.parseInt(strings[1]);
        String x2 = strings[2];
        int k2 = Integer.parseInt(strings[3]);
        StringBuffer stringBuffer1 = new StringBuffer();
        StringBuffer stringBuffer2 = new StringBuffer();
        for(i = 0; i < k1; i++) {
            stringBuffer1.append(x1);
        }
        for(i = 0; i < k2; i++) {
            stringBuffer2.append(x2);
        }
        String string1 = stringBuffer1.toString();
        String string2 = stringBuffer2.toString();
         
        char [] array1 = string1.toCharArray();
        char [] array2 = string2.toCharArray();
         
        if (array1.length > array2.length) {
            System.out.println("Greater");
        }
        if (array1.length < array2.length) {
            System.out.println("Less");
        }
        if (array1.length == array2.length) {
            for(i = 0; i < array1.length; i++) {
                if (array1[i] > array2[i]) {
                    flag = 1;
                    break;
                }
                if (array1[i] < array2[i]) {
                    flag = -1;
                    break;
                }
            }
            if (flag == 1) {
                System.out.println("Greater");
            }
            if (flag == -1) {
                System.out.println("Less");
            }
            if (flag == 0) {
                System.out.println("Equal");
            }
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    private static String[] res = {"yang","niu","yang","niu","niu"};
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        for (int i = 0; i < t; i++) {
            int tmp=Integer.parseInt(br.readLine());
            System.out.println(res[tmp%5]);
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
        String[] str = bufr.readLine().split(" ");
        int n = Integer.parseInt(str[0]);
        int m = Integer.parseInt(str[1]);
        int s = m+n;
        double f0=0,f1 = s/2.0;
        for(int k=2;k<=m;k++) {
            double cur = s * (s - 1) / (1.0 * k * (2 * s - k - 1)) + 2 * (s - k) * 1.0 / (2 * s - k - 1) * f1 + (k - 1) * 1.0 / (2 * s - k - 1) * f0;
            f0=f1;
            f1=cur;
        }
        System.out.println(Math.round(f1*10)/10.0);
 
    }
 
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
    
 
import java.util.*;
import java.io.*;
public class Main
{
    public static void main(String[]args)throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String[] strs = br.readLine().split(" ");
        int[] v = new int[n];
        for (int i = 0; i < n; i++) {
            v[i] = Integer.parseInt(strs[i]);
        }
        int res=0;
        for(int i=0;i<n;i++)
        {
            for(int j=i-1;j>=0;j--)
            {
                if(v[j]>v[i])
                {
                    res=Math.max(res,v[j]^v[i]);
                    break;
                }
                  
            }
            for(int j=i+1;j<n;j++)
            {
                if(v[j]>v[i])
                {
                    res=Math.max(res,v[j]^v[i]);
                    break;
                }
                  
            }
        }
        System.out.println(res);
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        System.out.println(getMinAddBracketNum(s));
    }
 
    private static int getMinAddBracketNum(String s) {
         int sum = 0,num = 0;
         char c[] =s.toCharArray();
         for (int i=0;i<c.length;i++){
             if (c[i] == '(')
                 sum++;
             else
                 sum--;
             if (sum<0){
                 num++;
                 sum++;
             }
         }
        return Math.abs(sum)+num;
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    public static long getSum(long x) {
        long res = x;
        while(x!=0) {
            res+=x/10;
            x/=10;
        }
        return res;
    }
    public static long getResult(long sum,long low,long high) {
        while(low<=high) {
            long midX=(low+high)/2;
            long mid=getSum(midX);
            if(mid==sum) {
                return midX;
            } else if(mid>sum) {
                high=midX-1;
            } else {
                low=midX+1;
            }
        }
        return -1;
    }
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        long sum = Long.parseLong(br.readLine());
        long res = getResult(sum,0,sum);
        System.out.println(res);
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] strs = br.readLine().split(" ");
        int n = Integer.parseInt(strs[0]), k = Integer.parseInt(strs[1]);
        strs = br.readLine().split(" ");
        int[] a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(strs[i]);
        }
 
        // dp[i][j]: 表示进行不多于j次操作后与a[i],...,a[len - 1]形成逆序对数的最小值
        int[][] dp = new int[n + 1][k + 1];
        for (int i = n - 1; i >= 0; i--) {
            for (int j = 0; j <= k; j++) {
                dp[i][j] = countReverseOrder(a, i, i) + dp[i + 1][k];
                if (j > 0) {
                    for (int p = i + 1; p < n; p++) {
                        int[] tmp = new int[p + 1];
                        System.arraycopy(a, 0, tmp, 0, p + 1);
                        reverse(tmp, i, p);
                        dp[i][j] = Math.min(dp[i][j], countReverseOrder(tmp, i, tmp.length - 1) + dp[p + 1][j - 1]);
                    }
                }
            }
        }
        System.out.println(dp[0][k]);
    }
 
    // 求元素arr[begin], ... ,arr[end]的逆序数
    private static int countReverseOrder(int[] arr, int begin, int end) {
        int count = 0;
        for (int i = begin; i <= end; i++) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[i])
                    count++;
            }
        }
        return count;
    }
 
    private static void reverse(int[] arr, int i, int j) {
        for (; i < j; i++, j--) {
            int tmp = arr[i];
            arr[i] = arr[j];
            arr[j] = tmp;
        }
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        System.out.println(getBracketsDepth(s));
    }
 
    private static int getBracketsDepth(String s) {
        char c[] = s.toCharArray();
        int sum = 0;
        int num = 0;
        for (int i=0;i<c.length;i++){
            if (c[i] == '('){
                num++;
                if (num > sum){
                    sum = num;
                }
            }
            if (c[i] == ')'){
                num--;
            }
        }
        return sum;
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) throws IOException{
        long maxx = 1000000007;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        String[] str = reader.readLine().split(" ");
        int[] x = new int[str.length];
        for(int i = 0 ; i < str.length ; i++){
            x[i] = Integer.parseInt(str[i]);
        }
        Arrays.sort(x);
        long ans = 1;
        for(int i = 0 ; i < str.length ; i++){
            ans = (ans * (x[i] - i)) % maxx;
        }
        System.out.println(ans);
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main{
 
    public static void main(String[] args) throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String str = reader.readLine();
        int n = 0;
        for(int i = 1 ; i < str.length() ;i++){
            String a = str.substring(0 , i);
            String b = str.substring(i);
            n = Math.max(n , dp(a,b));
        }
        System.out.println(n);
    }
 
    public static int dp(String a , String b){
        char[] ca = a.toCharArray();
        char[] cb = b.toCharArray();
        int[][] num = new int[b.length() + 1][a.length() + 1];
        for(int i = 1 ; i <= b.length() ; i++){
            for(int j = 1 ; j <= a.length() ; j++){
                if(ca[j - 1] == cb[i - 1]){
                    num[i][j] = num[i - 1][j - 1] + 1;
                }else{
                    num[i][j] = Math.max(num[i - 1][j] , num[i][j - 1]);
                }
            }
        }
        return num[b.length()][a.length()] * 2;
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s1 = br.readLine();
        String s2[] = br.readLine().split(" ");
        System.out.println(getJumpNum(s1,s2));
    }
 
    private static long getJumpNum(String s1, String[] s2) {
        int n = Integer.parseInt(s1);
        int pi[] = new int[n];
        boolean f[] = new boolean[n];
        for (int i = 0; i < n; i++) {
            pi[i] = Integer.parseInt(s2[i]);
        }
        int dp[]=new int[n+1];
        int mod=1000000007;
        for (int i = 1; i <= n; i++)
            dp[i] = (2 * dp[i - 1] % mod - dp[pi[i - 1] - 1] + 2) % mod;
        return dp[n];
    }
}
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
  
public class Main{
    public static void main(String[] args)throws IOException{
        InputStreamReader ir = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(ir);
        int t = Integer.parseInt(br.readLine());
        String[] strs = new String[t];
        for (int i=0; i<t; ++i){
            strs[i] = br.readLine();
        }
        System.out.println(sumOf(strs));
    }
  
    public static String sumOf(String[] strs){
        StringBuilder res = new StringBuilder();
        for (int i=0; i<strs.length; ++i){
            String[] tem = strs[i].split(" ");
            long n = Long.parseLong(tem[0]);
            long k = Long.parseLong(tem[1]);
            long d1 = Long.parseLong(tem[2]);
            long d2 = Long.parseLong(tem[3]);
            if(n%3!=0){ res.append("no\n");continue; }
            long p1 = (k+d1+d2)%3==0 ?  (k+d1+d2)/3 : Long.MAX_VALUE;
            if(Math.min(p1-d1,p1-d2)>=0&&p1<=n/3){ res.append("yes\n"); continue; }
            long p2 = (k+d1+2*d2)%3==0 ?  (k+d1+2*d2)/3 : Long.MAX_VALUE;
            if(p2-d2-d1>=0&&p2<=n/3){ res.append("yes\n"); continue; }
            long p3 = (k+2*d1+d2)%3==0 ?  (k+2*d1+d2)/3 : Long.MAX_VALUE;
            if(p3-d1-d2>=0&&p3<=n/3){ res.append("yes\n"); continue; }
            long p4 = (k-d1-d2)%3==0 ?  Math.max((k+2*d1-d2)/3,(k-d1+2*d2)/3) : Long.MAX_VALUE;
            if((k-d1-d2)/3>=0&&p4<=n/3){ res.append("yes\n"); continue; }
            res.append("no\n");
        }
        res.deleteCharAt(res.length()-1);
        return res.toString();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String[] s = reader.readLine().split(" ");
        int n = Integer.valueOf(s[0]);
        int m = Integer.valueOf(s[1]);
        String ab = reader.readLine();
        int left = 0;
        int right = 0;
        int max = 0;
        int o = m;
        while(right < n&left<n){
            if(ab.charAt(right) == 'a'){
                right++;
                if(right == n&max < right - left) max = right - left;
            }else{
                if(o>0){o--;right++;}
                else {
                    if(max < right - left) max = right - left;
                    while(left< n && ab.charAt(left) == 'a'){
                        left++;
                    }
                    while(left< n && ab.charAt(left) == 'b'){
                        left++;
                        if(o < m){
                            o++;
                        }
                    }
                    if(left>right) right = left;
                }
            }
        }
        left = 0;
        right = 0;
        o = m;
        while(right < n&left< n){
            if(ab.charAt(right) == 'b'){
                right++;
                if(right == n&max < right - left) max = right - left;
            }else{
                if(o>0){o--;right++;}
                else {
                    if(max < right - left) max = right - left;
                    while(left< n && ab.charAt(left) == 'b'){
                        left++;
                    }
                    while(left < n&& ab.charAt(left) == 'a'){
                        left++;
                        if(o < m){
                            o++;
                        }
                    }
                    if(left>right) right = left;
                }
            }
        }
        System.out.print(max);
    }
}
import java.util.Comparator;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Scanner;
  
public class Main {
    static int m;
    static int n;
    static char[][] board;
    static int [][] record;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        m = sc.nextInt();
        n = sc.nextInt();
        int bx = 0;
        int by = 0;
        int px = 0;
        int py = 0;
        int ex = 0;
        int ey = 0;
        board = new char [m][n];
        record = new int [m][n];
        for(int i = 0 ; i < m; i ++) {
            board[i] = sc.next().toCharArray();
        }
        sc.close();
        for(int i = 0 ; i < m ; i++) {
            for(int j = 0; j < n ; j++) {
                if(board[i][j] == '0') {
                    bx = i;
                    by = j;
                }else if(board[i][j] == 'S') {
                    px = i;
                    py = j;
                }else if(board[i][j] == 'E') {
                    ex = i;
                    ey = j;
                }
            }
        }
        Comparator<Integer[]> OrderIsdn =  new Comparator<Integer[]>(){
            public int compare(Integer [] o1, Integer [] o2) {
                // TODO Auto-generated method stub
                int numbera = o1[4];
                int numberb = o2[4];
                if(numberb > numbera)
                {
                    return -1;
                }
                else if(numberb<numbera)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
              
            }
        };
//      Integer [] i1 = new Integer[] {0,0,0,0,3};
//      Integer [] i2 = new Integer[] {0,0,0,0,4};
        Integer [] start = new Integer[] {px, py, bx, by, 0};
        Queue<Integer[]> priorityQueue =  new PriorityQueue<>(OrderIsdn);
//      priorityQueue.add(i1);
//      priorityQueue.add(i2);
        priorityQueue.add(start);
        record[bx][by] = -1;
//      System.out.println(priorityQueue.poll()[4]);
        while(record[ex][ey] == 0 && !priorityQueue.isEmpty()) {
  
            Integer[] t = priorityQueue.poll();
            record[t[2]][t[3]] = t[4];
            px = t[0];
            py = t[1];
            bx = t[2];
            by = t[3];
            for(int i = 0; i < 4; i++) {
                Integer [] temp = new Integer[5];
                temp[0] = bx;
                temp[1] = by;
                temp[2] = bx;
                temp[3] = by;
                if(i == 0) {
                    temp[2] = bx + 1;
                }else if(i == 1){
                    temp[2] = bx - 1;
                }else if(i == 2) {
                    temp[3] = by + 1;
                }else {
                    temp[3] = by - 1;
                }
                    temp[4] = cal(px,py,bx,by,i,t[4]);
                    if(temp[4] != -1) {
                        priorityQueue.add(temp);
                    }
            }
        }
        if(record[ex][ey] == 0) {
            System.out.println(-1);
        }else {
            System.out.println(record[ex][ey]);
        }
    }
      
    //0,1,2,3代表人从上下左右,四个方向去推
    public static int cal(int px, int py, int bx, int by, int direction, int k) {
        int tbx = bx;
        int tby = by;
        int tpx = bx;
        int tpy = by;
        if(direction == 0) {
            tpx = bx - 1;
            bx++;
        }else if(direction == 1){
            tpx = bx + 1;
            bx --;
        }else if(direction == 2) {
            tpy = by - 1;
            by++;
        }else {
            tpy = by + 1;
            by --;
        }
        if(bx < 0 || bx >= m || by < 0 || by >= n || board[bx][by] == '#' || record[bx][by] != 0) {
            return -1;
        }
        if(tpx < 0 || tpx >= m || tpy < 0 || tpy >= n || board[tpx][tpy] == '#') {
            return -1;
        }
        int length = calPeople(px,py,tpx,tpy,tbx,tby);
        if(length == -1) {
            return -1;
        }else {
            return length + 1 + k;
        }
          
    }
    public static int calPeople(int px, int py, int tpx, int tpy, int tbx, int tby) {
        Queue<Integer[]> queue = new LinkedList<Integer[]>();
        queue.add(new Integer[] {px,py,0});
        if(px == tpx && py == tpy) {
            return 0;
        }
        int [][] r = new int [m][n];
        r[px][py] = -1;
        r[tbx][tby] = -1;
        while(r[tpx][tpy] == 0 && !queue.isEmpty()) {
            Integer [] t = queue.poll();
            for(int i = 0; i < 4; i++) {
                int npx = t[0];
                int npy = t[1];
                if(i == 0) {
                    npx++;
                }else if(i == 1){
                    npx --;
                }else if(i == 2) {
                    npy++;
                }else {
                    npy--;
                }
                if(npx < 0 || npx >= m || npy < 0 || npy >= n || board[npx][npy] == '#' || r[npx][npy] !=  0) {
                }else {
                    r[npx][npy] = t[2]+1;
                    queue.add(new Integer[] {npx,npy,t[2]+1});
                }
            }
        }
        if(r[tpx][tpy] == 0) {
            return - 1;
        }else{
            return r[tpx][tpy];
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值