杭电 OJ 1000-1009 Java解法

Problem Set

1000

高精度

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            System.out.println(sc.nextBigInteger().add(sc.nextBigInteger()));
        }
    }
}

1001

位运算防爆 1000题的阴影

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            long num= sc.nextLong();
            System.out.println((1+num)*num>>>1);

        }
    }
}

1002

还是开大数

记得输出没有空格

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        long cnt=1;
        long n= sc.nextLong();
        for (long i = 0; i < n; i++) {
            BigInteger b1=sc.nextBigInteger();
            BigInteger b2=sc.nextBigInteger();
            System.out.println("Case"+cnt+":");
            System.out.println(b1+"+"+b2+"="+b1.add(b2));
            cnt++;
        }
    }
}

1003

将双层for循环替换成剪枝 还是没过

线性遍历过了 时间复杂度为O(2n) 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int cnt = 1;
        long t = sc.nextLong();
        for (long i = 0; i < t; i++) {
            int n = sc.nextInt();
            long arr[] = new long[n + 1];
            long ans[] = new long[n + 1];
            for (int i1 = 1; i1 <= n; i1++) {
                arr[i1] = sc.nextLong();
                ans[i1] = arr[i1] + ans[i1 - 1];
            }
            long max = Integer.MIN_VALUE;
            int left = -1;
            int right = -1;
            long min = 0;
            for (int i1 = 1; i1 <= n; i1++) {
                if (ans[i1] - min > max) {
                    max = ans[i1] - min;
                    right = i1;
                    left = findLeftIndex(ans, min, i1);
                }
                min = Math.min(min, ans[i1]);
            }
            System.out.println("Case " + cnt + ":");
            System.out.println(max + " " + left + " " + right);
            cnt++;
        }
    }

    private static int findLeftIndex(long[] ans, long min, int endIndex) {
        for (int i = 0; i < endIndex; i++) {
            if (ans[i] == min) {
                return i + 1;
            }
        }
        return -1;
    }
}

1004

用java特有双列集合

默认开哈希 速度快

最后再遍历一次即可 时间复杂度O(n)

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            long n= sc.nextLong();
            if(n==0)return;
            //双列集合存储
            Map<String,Long>map=new HashMap<>();
            for (long i = 0; i < n; i++) {
                //输入键
                String str= sc.next();
                //如果集合有键 把键对应的数值拿出来 加1 再放回去
                if(map.containsKey(str)){
                    long num=map.get(str);
                    num++;
                    map.put(str,num);
                }
                //如果集合里没有键 把(键,1)放到集合里面去
                else map.put(str,1L);
            }
            //把键放到一个单列集合里
            Set<String> set=map.keySet();
            String s="";
            long ans=0;
            //遍历单列集合 找到值最大的键 记录
            for (String str : set) {
                if(map.get(str)>ans){
                    s=str;
                    ans=map.get(str);
                }
            }
            System.out.println(s);
        }
    }
}

1005

有取余必出现周期

对7取余就只能出现0到7

第三个数由第一个和第二个决定

两两组合 7*7 周期为49

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()) {
            long a = sc.nextLong();
            long b = sc.nextLong();
            long n = sc.nextLong();
            if (a == 0 && b == 0 && n == 0) return;
            //最大周期为49
            n %= 49;
            long ans1=1;
            long ans2=1;
            long ans3=1;
            if(n==1) System.out.println(1);
            else if(n==2) System.out.println(1);
            else {
                for (long i = 0; i < n - 2; i++) {
                    ans3=(a*ans2+b*ans1)%7;
                    ans1=ans2;
                    ans2=ans3;
                }
                System.out.println(ans3);
            }
        }
    }
}

1006

数学题 恶心人

import java.util.Scanner;

public class Main {

    // 定义常量
    static final int maxn = 12 * 60 * 60;
    static double hm, hs, ms;
    static double T_hm, T_hs, T_ms;

    // 初始化函数
    static void init() {
        double h = 1.0 / 120;
        double m = 1.0 / 10;
        double s = 6;
        hm = m - h;
        hs = s - h;
        ms = s - m;
        T_hm = 360 / hm;
        T_hs = 360 / hs;
        T_ms = 360 / ms;
    }

    // 最大值函数
    static double max(double a, double b, double c) {
        return Math.max(Math.max(a, b), c);
    }

    // 最小值函数
    static double min(double a, double b, double c) {
        return Math.min(Math.min(a, b), c);
    }

    // 主函数
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        init();

        while (scanner.hasNext()) {
            double n = scanner.nextDouble();
            if (n == -1) break;

            double[] a = new double[6];
            a[0] = n / hm;
            a[1] = n / hs;
            a[2] = n / ms;
            a[3] = (360 - n) / hm;
            a[4] = (360 - n) / hs;
            a[5] = (360 - n) / ms;

            double ans = 0;

            for (double i = 0; i <= maxn; i += T_hm) {
                for (double j = 0; j <= maxn; j += T_hs) {
                    if (j + a[1] > i + a[3]) break;
                    if (i + a[0] > j + a[4]) continue;
                    for (double k = 0; k <= maxn; k += T_ms) {
                        if (k + a[2] > i + a[3] || k + a[2] > j + a[4]) break;
                        if (i + a[0] > k + a[5] || j + a[1] > k + a[5]) continue;

                        double p = max(i + a[0], j + a[1], k + a[2]);
                        double q = min(i + a[3], j + a[4], k + a[5]);

                        if (q > p) {
                            ans += q - p;
                        }
                    }
                }
            }

            double percentage = 100.0 * ans / maxn;
            System.out.printf("%.3f\n", percentage);
        }

        scanner.close();
    }
}

1007

不会

而且没看懂题解

分治算法是什么玩意

1008

枚举吧

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n= sc.nextInt();
            if(n==0)return;
            int ans=0;
            int sum=0;
            for (int i = 0; i < n; i++) {
                int temp= sc.nextInt();
                if(temp>ans){
                    sum+=(temp-ans)*6;
                }
                else if(temp<ans){
                    sum+=(ans-temp)*4;
                }
                ans=temp;
                sum+=5;
            }
            System.out.println(sum);
        }
    }
}

1009

贪心

先解性价比最高的做法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            int n= sc.nextInt();
            int m= sc.nextInt();
            if(n==-1&&m==-1)return;
            int arr1[]=new int[m];
            int arr2[]=new int[m];
            double arr3[]=new double[m];
            for (int i = 0; i < m; i++) {
                arr1[i]= sc.nextInt();
                arr2[i]= sc.nextInt();
                arr3[i]=arr1[i]*1.0/arr2[i];
            }
            double max=0;//性价比
            int ans=0;//记录最大值
            double sum=0;
            while (n>0){
                for (int i = 0; i < m; i++) {
                    if(arr3[i]>max){
                        max=arr3[i];
                        ans=i;
                    }
                }
                if(max==0)break;
                if(n>arr2[ans]){
                    sum+=arr1[ans];
                    arr3[ans]=0;
                    n-=arr2[ans];
                }
                else {
                    sum+=arr3[ans]*n*1.0;
                    n=0;
                }
                max=0;
            }
            System.out.println(String.format("%.3f",sum));
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/593047.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

颜值高的浏览器 ARC

可以使用 chrome 的插件&#xff0c;和书签&#xff0c;现在可以下载&#xff0c;别的不说这个ui 的颜值是可以的, 而且很丝滑

思考题 —— Windows 登录密码

1.windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff1f;密文存放在哪个文件下&#xff1f;该文件是否可以打开&#xff0c;并且查看到密文&#xff1f; 系统通过保存密码的哈希值来确保安全性&#xff0c;进行加密存储的方法通常为NTLM或Kerberos身份认证协议。该…

SFOS1:开发环境搭建

一、简介 最近在学习sailfish os的应用开发&#xff0c;主要内容是QmlPython。所以&#xff0c;在开发之前需要对开发环境&#xff08;virtualBox官方SDKcmake编译器python&#xff09;进行搭建。值得注意的是&#xff0c;我的开发环境是ubuntu22.04。如果是windows可能大同小异…

Codeforces Round 943 (Div. 3 ABCDEFG1G2题) 视频讲解

A. Maximize? Problem Statement You are given an integer x x x. Your task is to find any integer y y y ( 1 ≤ y < x ) (1\le y<x) (1≤y<x) such that gcd ⁡ ( x , y ) y \gcd(x,y)y gcd(x,y)y is maximum possible. Note that if there is more tha…

Webshell绕过技巧分析之-base64/HEX/Reverse/Html/Inflate/Rot13

在网络安全运营&#xff0c;护网HVV&#xff0c;重保等活动的过程中&#xff0c;webshell是一个无法绕过的话题。通常出现的webshell都不是以明文的形式出现&#xff0c;而是针对webshell关键的内容进行混淆&#xff0c;编码来绕过网络安全产品&#xff08;IDS&#xff0c;WAF&…

Linux USB转串口设备路径的查找方法

1、USB转串口设备 USB转串口设备是在嵌入式软件开发过程中经常要使用的&#xff0c;常常用于对接各种各样的串口设备。如果一台linux主机上使用多个usb转串口设备时&#xff0c;应用程序中就需要知道自己操作的是哪个串口设备。串口设备在系统上电时&#xff0c;由于驱动加载的…

短剧在线搜索表格-送模板

短剧在线搜索表格-附模板 介绍电脑界面手机界面送附加功能&#xff1a;反馈缺失短剧送&#xff1a;资源更新源头获取 介绍 你好&#xff01; 这是你第一次使用 金山在线文档 所生成的短剧搜索表格&#xff0c;支持批量导入自己转存的短剧名字和链接&#xff0c;实现在线搜索&a…

Kotlin基础知识总结(三万字超详细)

1、条件语句 &#xff08;1&#xff09;if条件 if条件表达式&#xff0c;每一个分支最后一条语句就是该分支的返回值。适用于每个分支返回值类型一致这种情况。 fun getDegree(score: Int): String{val result: String if(score 100){"非常优秀"}else if(score …

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job&#xff08;推荐该方式构建&#xff09;2.4 Docker安装redis2.5 Docker安装mysql 1 前言 上一篇介绍了Docker的基础概念&#xff0c;带你 入门Docker&#xff0c…

菜鸡学习netty源码(四)—— EventLoopGroup

1.概述 我们前面进行过分析,channel为netty网络操作的抽象类,EventLoop负责处理注册到其上的Channel处理的I/O事件;EventLoopGroup是一个EventLoop的分组,它可以获取到一个或者多个的EventLoop对象。 2.类关系图 NioEventLoopGroup的类继承图,蓝色部分为对应的java类,绿…

当管道运算符遇上无限可能:探索数据流的奇妙之旅

文章目录 序言目的进程间通信的理解进程间通信的发展历史管道创建验证管道的大小管道的4种情况管道的5种特征 序言 通过该命令计算了在当前路径下一共有多少个文件夹的任务 进程虽然有独立性,但是进程并不孤僻,他们之间也会相互进行协作共同完成一件事 这个前提是他们之间的信…

Java如何获取当前日期和时间?

Java如何获取当前日期和时间&#xff1f; 本文将为您介绍 Java 中关于日期和时间获取的方法&#xff0c;以及介绍 Java 8 中获取日期和时间的全新API。 1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取&#xff0c;此方法优势是…

Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)

Flutter笔记 Widgets Easier组件库&#xff08;12&#xff09;使用消息吐丝&#xff08;Notify Toasts&#xff09; - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 29114848416…

Linux(openEuler、CentOS8)基于chrony企业内网NTP服务器搭建实验

一、知识点 chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的 chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间&#xff0c;默认的配置文件是 /etc/chrony.conf chronyc 通过 323 端口与 chronyd 交互&#xff0c;可监控 chronyd 的性能并在运…

单例、工厂、策略、装饰器设计模式

1. 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a; 单例模式是一种常用的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这种模式的特点是类自己负责保存其唯一的实例&#xff0c;并控制其实例化过程。单例模式广泛应用…

微服务----nacos配置及简单使用

目录 什么是nacos 项目在nacos上进行注册 注入nacos依赖 配置application.yml文件 nacos写入配置文件 首先&#xff0c;还是需要导入依赖 然后在nacos中编写配置文件 prod是我自定义的一个命名空间&#xff0c;在这里面进行配置文件编写~ 启动类上加上注解 编写Patt…

构建智能化监控追踪系统:架构设计与实践

随着信息技术的不断发展&#xff0c;监控追踪系统在各个领域的应用越来越广泛。本文将探讨监控追踪系统的架构设计&#xff0c;介绍其关键特点和最佳实践&#xff0c;助力各行业实现智能化监控与管理。 1. **需求分析与功能设计&#xff1a;** 在设计监控追踪系统之前&#xf…

Microsoft 365 for Mac(Office 365)v16.84正式激活版

office 365 for mac包括Word、Excel、PowerPoint、Outlook、OneNote、OneDrive和Teams的更新。Office提供了跨应用程序的功能&#xff0c;帮助用户在更短的时间内创建令人惊叹的内容&#xff0c;您可以在这里创作、沟通、协作并完成重要工作。 Microsoft 365 for Mac(Office 36…

HTML/CSS1

1.前置说明 请点这里 2.img元素 格式&#xff1a; <img src"图片地址" alt"占位文字" width"图片宽度" height"图片高度">其中alt是当图片加载失败时显示的文字 而且不同内核的浏览器显示出来的占位文字的效果也是不尽相同的…

K8S哲学 - 资源调度 HPA (horizontal pod autoScaler-sync-period)

kubectl exec&#xff1a; kubectl exec -it pod-name -c container-name -- /bin/sh kubectl run 通过一个 deployment来 演示 apiVersion: apps/v1 kind: Deployment metadata:name: deploylabels: app: deploy spec: replicas: 1selector: matchLabels:app: deploy-podt…
最新文章