今日刷三题(day4):简写单词+dd爱框框+除2!

news2024/12/31 6:47:47

题目一:简写单词

题目描述:

比如 “College English Test”可以简写成“CET”,“Computer Science”可以简写为“CS”,“I am Bob”简写为“IAB”

输入输出描述:
输入:一个复合单词

输出:输出一行,表示复合词的简写

思路解析:

step 1:输入一个字符串数组,规定以空格符号隔开
step 2:标记数组中每一组的第一个字母为ch
step 3:如果ch>=‘a’&&ch<='z',则转化为大写

作答情况(正确):

字符转化为大写的函数要掌握。

代码:

 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] s = sc.nextLine().split(" ");
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length; i++) {
         char ch=s[i].charAt(0);
         if(ch>='a'&&ch<='z'){
             ch=Character.toUpperCase(ch);
         }
         sb.append(ch);
        }
        System.out.print(sb);
    }

题目二:dd爱框框

题目描述:


读入n,x,给出n个数a[1],a[2],……,a[n],求最小的区间[l,r],使a[l]+a[l+1]+……+a[r]≥x,若存在相同长度区间,输出l最小的那个。

输入输出描述:
输入:第一行两个数(1≤n≤10000000),x(1≤x≤10000)

输出:第二行n个数a[i](1≤a[i]≤1000)

思路解析:

同相双指针/滑动窗口

step 1(进窗口):sum+=arr[right]
step 2(判断):sum>=x?
step 3(更新结果):(right-left+1<retlen)?

step 4(出窗口):sum-=arr[left]

作答情况(运行超时):

①如果使用简单的Scanner&&System.out是从IO设备中读入,每次读取性能开销较大,在写代码时会造成超时的情况。

②对这个判断加上循环,可以减少内存和时间开销。

代码:

import java.io.*;
import java.util.*;
public class Main{
    static class Read {
        //字符串裁剪
        StringTokenizer st = new StringTokenizer("");
  /*  Java 处理IO有两套标准:
    ①字节流(System.in)
    ②字符流(含有Reader、Writer的)*/

        //下面这一行两个作用:
        // (1)把输入的字节流(System.in)转化为点电脑可识别的字符流new InputStreamReader()
        //(2)BufferedReader 相当于一个内存缓冲区(读取数据快、稳)
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        String next() throws IOException {
            //下面这一行有两个作用:
            //(1)while循环相当于多组输入的情况
            //(2)new StringTokenizer(bf.readLine())按行裁剪
            while (!st.hasMoreTokens()) {
                st = new StringTokenizer(bf.readLine());
            }
            //读取裁剪后一行中的一个字符串
            return st.nextToken();
        }

        String nextLine() throws IOException {
            return bf.readLine();
        }

        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }

        long nextLong() throws IOException {
            return Long.parseLong(next());
        }

        double nextDouble() throws IOException {
            return Double.parseDouble(next());
        }
    }
 public static Read in = new Read();
   
    public static void main(String[] args) throws IOException {
       int n=in.nextInt();
        int x=in.nextInt();
       int[] arr=new int[n+1];
        for(int i=1;i<arr.length;i++){
       arr[i]=in.nextInt();
        }
        int sum=0;
        int left=1;
        int right=1;
        int retLen=0x3f3f3f3f;//系统最大值
        int retLeft=-1;
        int retRight=-1;
        //step 1(进窗口):sum+=arr[right] 
        while(right<=n){
            sum+=arr[right];
            //step 2(判断):sum>=x?
            while(sum>=x){
            //step 3(更新结果):(right-left+1<retlen)?
            if(right-left+1<retLen){ 
                retLeft=left;
                retRight=right;
                retLen=right-left+1;
              }   
                //step 4(出窗口):sum-=arr[left]
                sum-=arr[left];
                left++;
            }
            right++;
        }
    System.out.print(retLeft+" "+retRight);
    }
}

题目三:除2!

题目描述:

给一个数组,一共有 n 个数。你能进行最多 k 次操作。每次操作可以进行以下步骤:
选择数组中的一个偶数啊a[i],将其变成a[i]/2   现在你进行不超过 k次操作后,让数组中所有数之和尽可能小。请输出这个最小的和。

输入输出描述:

输入:第一行输入两个正整数 n 和 k ,用空格隔开  ;第二行输入 n 个正整数 ai

数据范围:1 ≤ n≤100000,1≤k≤10^9        1≤ai≤10^9

输出描述:
一个正整数,代表和的最小值。

思路解析:

大堆(每次选出最大的偶数)+贪心

作答情况(未作出):

①未想到大根堆解法;②sum根据输入描述必须用long

代码:

import java.io.*;
import java.util.*;
public class Main{
 
    public static Read in = new Read();
    static class Read {
        //字符串裁剪
        StringTokenizer st = new StringTokenizer("");
  /*  Java 处理IO有两套标准:
    ①字节流(System.in)
    ②字符流(含有Reader、Writer的)*/
 
        //下面这一行两个作用:
        // (1)把输入的字节流(System.in)转化为点电脑可识别的字符流new InputStreamReader()
        //(2)BufferedReader 相当于一个内存缓冲区(读取数据快、稳)
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 
        String next() throws IOException {
            //下面这一行有两个作用:
            //(1)while循环相当于多组输入的情况
            //(2)new StringTokenizer(bf.readLine())按行裁剪
            while (!st.hasMoreTokens()) {
                st = new StringTokenizer(bf.readLine());
            }
            //读取裁剪后一行中的一个字符串
            return st.nextToken();
        }
 
        String nextLine() throws IOException {
            return bf.readLine();
        }
 
        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
 
        long nextLong() throws IOException {
            return Long.parseLong(next());
        }
 
        double nextDouble() throws IOException {
            return Double.parseDouble(next());
        }
    }
 
    public static void main(String[] args) throws IOException {
       int n=in.nextInt();
        int k=in.nextInt();
        PriorityQueue<Integer> queue=new PriorityQueue<>((o1,o2)->o2-o1);
        long sum=0; long x=0;
        for(int i=0;i<n;i++){
            x=in.nextLong(); 
            sum+=x;//35
            if(x%2==0){
queue.add((int)x);
            }
        }
        while(!queue.isEmpty()&&k!=0){
            long t=queue.poll()/2;
            sum-=t;//35-5-4-2
            k--;
            if(t%2==0){
                queue.add((int)t);
            }
}
        System.out.print(sum);
    }
}

收获:

①字符大小写的转换

小写字符/字符串 转化为大写字符的函数:

         //字符
         Character ch='a';
         ch=Character.toUpperCase(ch);
          //字符串
         String str="HELLO";
         str=str.toUpperCase();

大写字符转化为小写字符的函数:

          //字符
         Character ch='a';
         ch=Character.toLowerCase(ch);
          //字符串
         String str="HELLO";
         str=str.toLowerCase();

②Scanner输入会导致超时,这里给了大家一个输入模板,请大家跳转到这条博客Java输入输出模板( 针对ACM模式)-CSDN博客

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

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

相关文章

一文读懂自动化运维工具ansible及其使用

1. ansible简介 ansible是干什么的 ansible是目前最受运维欢迎的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;SaltStack puppet、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令…

java高校办公室行政事务管理系统设计与实现(springboot+mysql源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于mvc的高校办公室行政…

基于SpringBoot + Vue实现的奖学金管理系统设计与实现+毕业论文+答辩PPT

介绍 角色:管理员、学院负责人、学校负责人、学生 管理员:管理员登录进入高校奖助学金系统的实现可以查看系统首页、个人中心、学生管理、学院负责人管理、学校负责人管理、奖学金类型管理、奖学金申请管理、申请提交管理、系统管理等信息 学院负责人:学院负责人登录系统后&am…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 &#x1f335;hoare版本 &#x1f335;挖坑法 ​编辑 &#x1f335;前后指针版本 ​编辑 3.2 快速排序优化 &#x1f33b;三数取中法选key 3.4 快速排序…

systemverilog中位的选择

常用的变量类型就是 reg 和 wire &#xff0c;这两种类型可以定义 一位的变量&#xff0c;也可以定义多位&#xff0c;其中 1 bit 的变量称为 标量(scalar)&#xff0c;多 bit 的变量称为 向量(vector)&#xff0c;如下所示&#xff1a; wire o_nor; // singl…

【JavaWeb】Day51.Mybatis动态SQL

什么是动态SQL 在页面原型中&#xff0c;列表上方的条件是动态的&#xff0c;是可以不传递的&#xff0c;也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中&#xff0c;我们会看到&#xff0c;我们将三个条件直接写死了。 如果页面只传递了参数姓名name 字…

Web前端框架/库/工具

前言 前端从步枪&#xff08;原生js&#xff09;到了半自动武器&#xff08;jQuery&#xff09;并进化为全自动武器&#xff08;三大框架&#xff08;angular&#xff0c;react&#xff0c;vue及其生态链&#xff09;&#xff09;。 常说工欲善其事必先利其器。对于那些想要提…

网络原理-IP协议

一、IP协议报头 版本号:用来表示IP协议的版本,现在常用的IP协议有两个版本,IPv4和IPv6&#xff0c;其他版本可能只存在于实验室中&#xff0c;并没有被广泛的使用。 首部长度:用来表示IP报头的长度,因为存在"选项"字段&#xff0c;所以IP报头是可变长的,此处单位为4…

B树和B+树试题解析

一、单项选择题 01&#xff0e;下图所示是一棵&#xff08;A ). A.4阶B树 B.3阶B树 C.4阶B树 D.无法确定 02.下列关于m阶B树的说法中&#xff0c;错误的是( C ). A.根结点至多有m棵子树 B.所有叶结点都在同一层次上 C.非叶结点至…

【MySQL】查询(进阶)

文章目录 前言1、新增2、聚合查询2.1聚合函数2.1.1count2.1.2sum2.1.3avg2.1.4max和min 2.2、GROUP BY子句2.3HAVING 3、联合查询/多表查询3.1内连接和外连接3.2自连接3.3子查询3.4合并查询 前言 在前面的内容中我们已经把查询的基本操作介绍的差不多了&#xff0c;接下来我们…

基于SpringBoot + Vue实现的学生心理咨询评估管理系统设计与实现+毕业论文+开题报告+答辩PPT

介绍 系统有管理员和用户。 管理员可以管理个人中心&#xff0c;用户管理&#xff0c;试题管理&#xff0c;试卷管理&#xff0c;考试管理等。用户参加考试。 学生心理咨询评估系统的登录流程&#xff0c;针对的角色就是操作员的操作角色。在登录界面需要的必填信息就是账号信…

创新案例|Amazon.com 2023 年营销策略:电子商务零售巨头商业案例研究

2022 年最后一个季度&#xff0c;亚马逊报告净销售额超过 1,492 亿美元。这种季节性峰值是亚马逊季度报告的典型特征&#xff0c;但增长是不可否认的&#xff0c;因为这是该公司有史以来最高的季度。毫无疑问&#xff0c;这家电商零售巨头继续引领电商增长。本文将介绍我们今天…

Flink学习(七)-单词统计

前言 Flink是流批一体的框架。因此既可以处理以流的方式处理&#xff0c;也可以按批次处理。 一、代码基础格式 //1st 设置执行环境 xxxEnvironment env xxxEnvironment.getEnvironment;//2nd 设置流 DataSource xxxDSenv.xxxx();//3rd 设置转换 Xxx transformation xxxDS.…

【春秋云镜】CVE-2023-43291 emlog SQL注入

靶场介绍 emlog是一款轻量级博客及CMS建站系统&#xff0c;在emlog pro v.2.1.15及更早版本中的不受信任数据反序列化允许远程攻击者通过cache.php组件执行SQL语句。 不感兴趣的可以直接拉到最后面&#xff0c;直接获取flag 备注&#xff1a;没有通过sql注入获取到flag&…

python多线程技术(Threading)

文章目录 前言一、多线程(Threading)是什么?二、threading库1.初识多线程2.增加新线程2.1 多线程的基本使用2.2 对多线程是同时进行的进行一个直观上的演示(非重点--理解是实时就行)2.3 thread.join()功能2.4 使用queue(队列)功能获取多线程的返回值(重要,这就是前面那…

MySql对于时间段交集的处理和通用实现方式(MyBatis-Plus)

问题&#xff1a;一般传统时间筛选是在[ 开始时间 → 结束时间 ]这个区间内的子集&#xff0c;也就是全包含查询方式&#xff0c;这种只会筛选一种情况。如果场景需要是开展一个活动&#xff0c;需要活动时间检索应该但凡包含就返回&#xff0c;也就是需要查询这个时间段有涉及…

Java的Hash算法及相应的Hmac算法

【相关知识】 加密算法知识相关博文&#xff1a;浅述.Net中的Hash算法&#xff08;顺带对称、非对称算法&#xff09;-CSDN博客 【出处与参考】 MessageDigest 类介绍、分多次调用update方法与一次性调用一致的说明引自&#xff1a; https://blog.csdn.net/cherry_chenr…

2024 IDM最新破解版及软件介绍

*IDM&#xff1a;信息时代的高效管理工具** 在快节奏的现代社会中&#xff0c;随着信息的爆炸式增长&#xff0c;如何高效、有序地管理信息成为每个人都需要面对的挑战。IDM&#xff0c;作为一种信息管理工具&#xff0c;正在逐渐受到人们的青睐。 IDM&#xff0c;全称Inform…

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程

HAL STM32 I2C方式读取MT6701磁编码器获取角度例程 &#x1f4cd;相关篇《Arduino通过I2C驱动MT6701磁编码器并读取角度数据》&#x1f388;《STM32 软件I2C方式读取MT6701磁编码器获取角度例程》&#x1f4cc;MT6701当前最新文档资料&#xff1a;https://www.magntek.com.cn/u…

Scanpy(1)数据结构和样本过滤

注&#xff1a;主要讲述scanpy处理数据的结构、数据过滤&#xff08;生信领域&#xff09;和数据预处理&#xff08;和机器学习类似&#xff0c;但是又有不同。&#xff09; 1. Scanpy简介与安装 Scanpy 是一个可扩展的工具包&#xff0c;用于分析与 AnnData&#xff08;一种…