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();
    }
    
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值