杭电 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;//最大周期为49n %= 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.mzph.cn/web/6507.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Linux中磁盘满/dev/vda1使用率100%问题

发现根目录下占用100%&#xff0c;具体还要排场到底是有哪些大文件占用 那么就在根目录下查询各个子文件夹的占用状态&#xff0c;有过大不用的即可删除 df -h *我的磁盘是100G&#xff0c;但这些总共加起来也接近不了这个数值 那就是有可能出现 已删除空间却没有释放的进程…

嵌入式学习day09

每日面试题 堆栈溢出的原因有哪些 ①函数调用层次太深&#xff0c;函数递归调用时&#xff0c;系统要在栈中不断保存函数调用时的线程和产生的变量&#xff0c;递归调用太深&#xff0c;会造成栈溢出&#xff0c;这时递归无法返还。 ②动态申请空间使用后没有释放。由于C语言…

(centos)yum安装mysql8.4

1.MySQL官方已经提供了适用于不同Linux发行版的预构建软件包&#xff0c;包括适用于CentOS的Yum Repository MySQL :: MySQL Community Downloads 2.在/usr/local文件夹下创建mysql文件夹&#xff0c;将下载的rpm文件放到目录下 3.执行安装命令 yum install mysql-community-…

Vue3 + Vite + TypeScript + Element-Plus创建管理系统项目

官方文档 Vue3官网 Vite官方中文文档 创建项目 使用npm命令创建项目&#xff1a; npm create vitelatest输入项目名称&#xff1a; ? Project name:项目名选择vue&#xff1a; ? Select a framework: - Use arrow-keys. Return to submit.Vanilla > VueReactPrea…

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘

jupyter notebook 设置密码报错ModuleNotFoundError: No module named ‘notebook.auth‘ 原因是notebook新版本没有notebook.auth 直接输入以下命令即可设置密码 jupyter notebook password

「JavaEE」线程安全2:内存可见性问题 wait、notify

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 内存可见性问题& wait、notify &#x1f349;Java 标准库的线程安全类&#x1f349;内存可见性问题&#x1f34c;volatile 关键字 …

M2M vs. IoT?

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot). 连接设备已经开辟了创造价值和解决重大世界问题的广泛机会&#xff0c;例如可持续发展。 今天&#xff0c;我们网络设备的方式可…

【linuxC语言】vfork、wait与waitpid函数

文章目录 前言一、函数使用1.1 vfork1.2 wait1.3 waitpid 二、示例代码总结 前言 在Linux系统编程中&#xff0c;vfork()、wait() 和 waitpid() 函数是处理进程管理和控制流的重要工具。这些函数允许我们创建新进程、等待子进程结束并获取其退出状态&#xff0c;从而实现进程间…

GDPU JavaWeb 猜字母游戏

他在对你重定向打卡的大饼与立即跳转到你面前的谎言之间反复横跳。 sendRedirect与forward sendRedirect与forward区别 sendRedirect用于将请求重定向到另一个资源&#xff0c;可以是同一个应用程序内的其他 Servlet&#xff0c;也可以是其他 Web 应用程序的资源&#xff0c;…

配电网光伏储能双层优化配置模型(选址定容)

随着主动配电网中不可控分布式电源(distributed generation,DG)渗透率的不断提高,其给配电网规划运行提 出了更大的挑战,可能导致配电网电压越限、清洁能源弃电 等问题。基于此,该文在规划阶段充分应用不同类型 DG 和 负荷的时序性和潮流计算特性,以及引入不同恢复率的激励…

telement-plus中table合并行或者列

#element-plus中会有自带的合并方法 通过给 table 传入span-method方法可以实现合并行或列&#xff0c; 方法的参数是一个对象&#xff0c;里面包含当前行 row、当前列 column、当前行号 rowIndex、当前列号 columnIndex 四个属性。 该函数可以返回一个包含两个元素的数组&…

农作物害虫检测数据集VOC+YOLO格式18975张97类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;18975 标注数量(xml文件个数)&#xff1a;18975 标注数量(txt文件个数)&#xff1a;18975 标…

minio忘记密码

安装minio 对象存储minio-CSDN博客 cat << EOF > /etc/default/minio# Volume to be used for Minio server. MINIO_VOLUMES"/data"# Use if you want to run Minio on a custom port. #MINIO_OPTS"--address :9001" MINIO_OPTS"--address …

卷积神经网络要点和难点实际案例和代码解析

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够…

Boost读写xml

Boost读写xml 文章目录 Boost读写xml写在前面准备工作简单读写写xml读xml键值查找遍历 设置默认值异常处理 具有属性的xml写xml读xml键值查找遍历 知识补充 写在前面 ​ 前面我们讲过了如何使用Boost读写ini文件&#xff0c;这一篇我们将介绍如何用Boost读写xml文件。 ​ XML…

C++入门系列-类对象模型this指针

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类对象模型 如何计算类对象的大小 class A { public:void printA(){cout << _a << endl;} private:char _a; }; 算算看&#xff0c;这个类的大小是多少 我们知道…

掌握JavaScript面向对象编程核心密码:深入解析JavaScript面向对象机制对象概念、原型模式与继承策略全面指南,高效创建高质量、可维护代码

ECMAScript&#xff08;简称ES&#xff0c;是JavaScript的标准规范&#xff09;支持面向对象编程&#xff0c;通过构造函数模拟类&#xff0c;原型链实现继承&#xff0c;以及ES6引入的class语法糖简化面向对象开发。对象可通过构造函数创建&#xff0c;使用原型链共享方法和属…

从0开始linux(1)——文件操作

欢迎来到博主的专栏——从0开始linux 博主ID&#xff1a;代码小豪 博主使用的linux发行版是&#xff1a;CentOS 7.6 不同版本下的操作可能存在差异 文章目录 命令文件操作命令文件树和文件路径文件树绝对路径相对路径 文件属性tree指令删除文件复制文件 大家还记得在小学第一次…

Amazon EKS创建EBS的存储类

1、创建 Amazon EBS CSI 驱动程序 IAM 角色 相关文档 先决条件&#xff0c;是否有 IAM OIDC 提供商&#xff0c;详情 IAM OIDC 提供商创建文档 IAM OIDC 提供商id 在 Select trusted entity&#xff08;选择受信任的实体&#xff09;页面上操作&#xff0c;最后点击下一步 在…

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合

代码随想录算法训练营第25天 | 216.组合总和III、17.电话号码的字母组合 自己看到题目的第一想法看完代码随想录之后的想法 链接: 216.组合总和III 链接: 17.电话号码的字母组合 自己看到题目的第一想法 216.组合总和III&#xff1a;递归函数终止条件为搜索得到的数相加为n&…