博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces336 A & B
阅读量:6243 次
发布时间:2019-06-22

本文共 2596 字,大约阅读时间需要 8 分钟。

第一题就是排序然后计算一下时间。没什么

package codeforces336;import java.io.InputStreamReader;import java.util.Scanner;public class MainA {    public static void sortArr(int[][] arr, int n) {        int[] tmp = new int[2];        for(int i = 0; i < n; ++i) {            for(int j = i+1; j < n; ++j) {                if(arr[i][0] < arr[j][0]) {                    tmp[0] = arr[i][0];                    tmp[1] = arr[i][1];                    arr[i][0] = arr[j][0];                    arr[i][1] = arr[j][1];                    arr[j][0] = tmp[0];                    arr[j][1] = tmp[1];                }            }        }    }    public static void main(String[] args) {        int n, s;        int[][] arr = new int[105][2];        Scanner sc = new Scanner(new InputStreamReader(System.in));        n = sc.nextInt();        s = sc.nextInt();        for(int i = 0; i < n; ++i) {            arr[i][0] = sc.nextInt();            arr[i][1] = sc.nextInt();        }        sortArr(arr, n);        int t = 0;        int[] tmp = new int[2];        for(int i = 0; i < n; ++i) {            tmp[0] = s - arr[i][0];            tmp[1] = arr[i][1];            if(tmp[1] < (t + tmp[0])){                t += tmp[0];            } else {                t = tmp[1];            }            s = arr[i][0];        }        if(s != 0) {            t += s;        }        System.out.println(t);    }}

 第二题,暴力肯定TLE,用前缀和算可以。看a的每一位,是0,统计在 lenb - lena + i  ~ i - 1 范围内 1的 个数;是 1,统计在 lenb - lena + i  ~ i - 1 范围内 0 的 个数

package codeforces336;import java.io.InputStreamReader;import java.util.Scanner;/** * Created by lenovo on 2016-01-28. */public class MainB {    public static void main(String[] args) {        String a;        String b;        Scanner sc = new Scanner(new InputStreamReader(System.in));        a = sc.nextLine();        b = sc.nextLine();        //System.out.println(a + " " + b);        long[][] pre = new long[200005][2];        int lena = a.length();        int lenb = b.length();        for(int i = 1; i <= lenb; ++i) {            if(b.charAt(i-1) == '1'){                pre[i][1] = pre[i-1][1] + 1;                pre[i][0] = pre[i-1][0];            }else {                pre[i][0] = pre[i-1][0] + 1;                pre[i][1] = pre[i-1][1];            }        }        long  ans = 0;        for(int i = 1; i <= lena; ++i) {            if(a.charAt(i-1) == '0') {                ans += pre[lenb - lena + i][1] - pre[i-1][1];            } else {                ans += pre[lenb - lena + i][0] - pre[i-1][0];            }        }        System.out.println(ans);    }}

 

转载于:https://www.cnblogs.com/ya-cpp/p/5165721.html

你可能感兴趣的文章
SLA
查看>>
MyProject / FuzzyPages | Elias的个人主页
查看>>
三子棋局-挑战你的逻辑思维
查看>>
Linux 安装 MySQL / MySQL 主从备份
查看>>
python调用linux shell脚本,并返回结果一例
查看>>
IT的一些常识
查看>>
无边框Winform 简单实现拖动
查看>>
潜移默化学会WPF--Border,焦点移动
查看>>
css解决span宽度问题
查看>>
调频广播六十年
查看>>
android sdk 如何重新生成debug.keystore
查看>>
黑马程序员-JAVA基础-练习之存储学生信息
查看>>
基于FPGA的跨时钟域信号处理——同步设计的重要
查看>>
【SAP HANA】关于SAP HANA中Analytic View创建、激活状况下在系统中生成对象的研究...
查看>>
ubuntu 12.04 ubuntu System program problem detected 解决方法
查看>>
c++智能指针《一》 auto_ptr
查看>>
我的代码观——关于ACM编程风格与librazy网友的对话
查看>>
Linux 总结2
查看>>
mysql C++ 使用
查看>>
android程序监听home键与电源键
查看>>