Codeforces Round #242 (Div. 2)

A.簡單題,將‘X’和‘x’個個數變得一樣,求出改變的次數,並打印出結果字符串

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;


public class Codeforces {

    public static void main(String[] args) {
        new TaskA().run();

    }
    
}

class TaskA {
    
    Scanner in = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);
    
    public void run() {
        int n = in.nextInt();
        in.nextLine();
        char[] str = in.nextLine().toCharArray();
        int x = 0, X = 0;
        for (int i = 0; i < n; ++i) {
            if (str[i] == 'x')++x;
            else ++X;
        }
        char[] ans = new char[n];
        int cnt = 0;
        for (int i = 0; i < n; ++i)ans[i] = str[i];
//      System.out.println(Arrays.toString(ans));
        if (x != X) {
            for (int i = 0; i < n && x != X; ++i) {
                if (ans[i] == 'x' && x > X) {
                    ans[i] = 'X';
                    --x;
                    ++X;
                    ++cnt;
                }
                else if (ans[i] == 'X' && x < X) {
                    ans[i] = 'x';
                    ++x;
                    --X;
                    ++cnt;
                }
            }
        }
        out.println(cnt);
        for (int i = 0; i < n; ++i)out.print(ans[i]);
        out.println();
        out.flush();
    }
    
}

B。用最小的圓將城市包含起來,使人數達到一百萬,將距離又小到大排序,逐個將城市包含,直到人數達到一百萬。

import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;


public class Codeforces {

    public static void main(String[] args) {
        new TaskB().run();

    }
    
}



class TaskB {
    
    Scanner in = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);
    
    public void run() {
        int n = in.nextInt(), s = in.nextInt();
        s = 1000000-s;
        
        City[] city = new City[n];
        for (int i = 0; i < n; ++i) {
            City c = new City();
            c.x = in.nextInt();
            c.y = in.nextInt();
            c.p = in.nextInt();
            c.dis = Math.sqrt(1.0*c.x*c.x+1.0*c.y*c.y);
            city[i] = c;
        }
        Arrays.sort(city);
//      System.out.println(Arrays.toString(city));
        int i = 0;
        double ans = 0;
        while (s > 0 && i < n) {
//          System.out.println(s);
            double dis = city[i].dis;
            while (i < n && city[i].dis <= dis) {
                s -= city[i].p;
                
                ans = city[i].dis;
                ++i;
            }
        }
        if (s <= 0)
            System.out.println(ans);
        else 
            System.out.println("-1");
    }
}

class City implements Comparable<City>{

    int x;
    int y;
    int p;
    double dis;
    
    @Override    public int compareTo(City o) {
        return o.dis > this.dis ? -1 : 1;
    }
    
    public String toString() {
        return new Double(this.dis).toString()+" "+this.p;
    }
    
}

c.給出表達式,求出表達式的值,將每一個q[i]的表達式寫出來,每一列又上往下看:除數沒變,被除數遞增,餘數成周期出現,故可先求出每個週期的值,再進行異或。




import java.io.PrintWriter;

import java.util.Scanner;


public class Codeforces {

    public static void main(String[] args) {
        new TaskC().run();

    }
    
}



class TaskC {
    
    Scanner in = new Scanner(System.in);
    PrintWriter out = new PrintWriter(System.out);

    public void run() {
        int n = in.nextInt();
        int[] xor = new int[n+1];
        xor[1] = 0;
        int ans = in.nextInt();
        for (int i = 1; i < n; ++i) {
            int p = in.nextInt();
            ans ^= p;
        }
        for (int i = 2; i <= n; ++i) {
            xor[i] = xor[i-1]^(i-1);
        }
        for (int i = 1; i <= n; ++i) {
            
            int tmp = n/i;
            if (tmp%2 == 1) {
                ans ^= xor[i];
            }
            if (n%i != 0) {
               ans ^= xor[n%i+1];
               ans ^= 0;
            }
            
        }
        out.println(ans);
        out.flush();
    }
    
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章