携程笔试2021.09.09

2023-11-01

三道编程

第一题 (AC)

类似于linux系统下,文件路径的前进和后退以及输出当前路径的指令。

思路:直接模拟就可以,不过每一行用的nextInt()和next()接收数据的时候需要注意用nextLine()把回车吃掉。

输入:

7

cd a

cd b

pwd

cd ..

pwd

cd ..

pwd

输出:

/a/b

/a

/

第二题 (18%)

给定n,k,然后给n个数。划分数组,最多为k个分段,每个分段内部的val表示为max-min。输出:任意划分,使得val最小。

思路:读完数据,输出“2”,偷了18%;输出“4”,9%;如果没有k的限制,默认会有n个分段,题目还规定,分段中一个数的时候,val = 0。所以大概要找一种方法,就是在n-1个间隙内进行两两合并,还要保证val最小。

第三题 (AC)

给定n,m。然后给一个长度为n的由1和0组成的字符串,再给m组数据(c,v),每组数据表示连续的c个1消除之后,可以获取v。输出整个字符串的1全部消除之后的最大价值;

n:[1,100000], m:[1,100]

思路:字符串中的0是没有作用的,所以先使用 split 函数根据 “0” 将字符串切分为连续1组成的字符串数组,然后转变为字符串长度的数组,即 int[] num。开始想的是将m个切分条件放入结构体按照v/c排序,直接对字符串长度取模求结果,但是这样比较的是单个1的价值,没有考虑连续1消除的条件,只能看运气拿分。

写道num数组这里,突然想起来完全背包,然后看了下n和m的取值区间,max(n*m) <= 1e7 < 1e8.最坏的情况,字符串中全部为1,时间复杂度为o(nm),所以不会超时。这里完全背包使用了一维滚动数组,所以m从前向后遍历,复用上次遍历的结果。

输入:

11 2

11111101111

3 10

4 15

输出:

35

import java.util.* ;

public class Main{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in) ;
        int n = in.nextInt() ;
        int m = in.nextInt() ;
        in.nextLine() ;
        String s = in.nextLine() ;
        int[] v = new int[m] ;
        int[] c = new int[m] ;
        for(int i = 0; i<m; ++i) {
            c[i] = in.nextInt() ;
            v[i] = in.nextInt() ;
        }
        String[] t = s.split("0") ;
        int len = t.length ;
        int[] num = new int[len] ;
        int maxx = -1 ;
        int ans = 0 ;
        for(int i = 0; i<len; ++i) {
            num[i] = t[i].length();
            maxx = num[i];
            int[] dp = new int[maxx + 1];
            dp[0] = 0 ;
            for (int j = 1; j <= maxx; ++j) {
                for (int k = 0; k < m; ++k) {
                    if (c[k] <= j) {
                        dp[j] = Math.max(dp[j - c[k]] + v[k], dp[j]);
                    }
                }
            }
            ans += dp[maxx] ;
        }
        System.out.println(ans) ;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

携程笔试2021.09.09 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何使用assertEquals 和 Epsilon 在 JUnit 中断言两个双精度数?

    不推荐使用双打的assertEquals 我发现应该使用带有Epsilon的形式 这是因为双打不可能100 严格 但无论如何我需要比较两个双打 预期结果和实际结果 但我不知道该怎么做 目前我的测试如下 Test public void te
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Java中super关键字的范围和使用

    为什么无法使用 super 关键字访问父类变量 使用以下代码 输出为 feline cougar c c class Feline public String type f public Feline System out print fe

随机推荐

  • 20个解决日常问题的Python代码片段

    在本文中 将分享20 个 Python 代码片段 以帮助你应对日常编程挑战 你可能已经知道其中一些片段 但有些其他片段对你来说可能是新的 赶紧使用这些有用的 Python 代码片段提升你的编程技能吧 1 简单的 HTTP Web 服务器 简
  • CSS 布局(一)

    到目前为止 我们已经了解了CSS基础知识 如何设置文本样式 以及如何设置和操作内容所在的框 现在是时候看看如何根据视口以及彼此之间的关系正确地安排你的盒子了 我们已经介绍了必要的先决条件 所以让我们深入了解CSS布局 查看各种功能 不同的显
  • 接上一篇 对多个模型环形旋转进行优化 指定旋转位置

    using System Collections using System Collections Generic using UnityEngine using DG Tweening public class ModelAnimal M
  • Vue全局日期格式化(过滤器式)

    设置 main js文件下 全局日期时间过滤器 Vue filter dateFormat function v let date new Date v if Number isNaN Number date date new Date l
  • 问答专场

    作为一名产品经理 或许你刚刚进入某个领域 或许你在为管理头疼 或许你在为创业辗转 或许你还不知如何拥抱移动互联网 那么 我们来聊聊吧 本期PMCAFF 问答专场 邀请到阿里巴巴无线创始人 费杰 擅长领域 创业 管理 电商 供应链 移动互联网
  • javascript--BOM(browser object model)五大对象

    浏览器对象模型 作用 访问 控制 修改浏览器 与浏览器进行交互 打开新的窗口 回退历史记录 获取url BOM与的DOM区别 JS通过BOM与浏览器进行交互 BOM的window对象包含了document对象 document对象是DOM的
  • JavaScript教程-空值合并运算符 ‘??‘优先级,循环,while,for,for...of..,for..in,do...while循环,跳出循环,break,continue

    空值合并运算符 最近新增的特性 这是一个最近添加到 JavaScript 的特性 旧式浏览器可能需要 polyfills 空值合并运算符 nullish coalescing operator 的写法为两个问号 由于它对待 null 和 u
  • 《深入理解计算机系统》实验二Bomb Lab下载和官方文档机翻

    前言 深入理解计算机系统 官网 http csapp cs cmu edu 3e labs html 该篇文章是实验二Bomb Lab的Writeup机翻 原文 http csapp cs cmu edu 3e bomblab pdf 阅读
  • 各种开源协议对比

    开源协议允许对比 Name Commercial use Modification Distribution Private use Patent use BSD Zero Clause License Academic Free Lice
  • 史上最详细mybatis与spring整合教程

    点击上方 田守枝的技术博客 关注我 mybatis本身使用比较灵活 和spring整合也有多种方式 本文一网打尽mybatis与spring整合所有方式 让你彻底掌握mybatis与spring整合原理 堪称史上最全面的mybatis与sp
  • java试题

    题目 下列程序会输出什么结果 E class Super public int getLength return 4 public class Sub extends Super public long getLength return 5
  • STM32F207 USART+DMA代码+个人理解

    环境 STM32F207 目的USART通过DMA通信 DMA初步理解 1 之前发送数据的方式 数据放到串口数据寄存器里面 等待一个字节发送完成 重复第一二步 看到我们平时的方式我们就会有个想法 如果我们发送五百个字节 我们就需要让CPU在
  • zookeeper源码(01)集群启动

    本文介绍一下zookeeper 3 5 7集群安装 解压安装 tar zxf apache zookeeper 3 5 7 bin tar gz 创建数据 日志目录 mv apache zookeeper 3 5 7 bin app zoo
  • shell 中函数function()

    Shell函数类似于Shell脚本 里面存放了一系列的指令 不过Shell的函数存在于内存 而不是硬盘文件 所以速度很快 另外 Shell还能对函数进行预处理 所以函数的启动比脚本更快 1 函数定义 function 函数名 语句 retu
  • 【陕西理工大学-数学软件实训】数学实验报告(8)(数值微积分与方程数值求解)

    目录 一 实验目的 二 实验要求 三 实验内容与结果 四 实验心得 一 实验目的 1 掌握求数值导数和数值积分的方法 2 掌握代数方程数值求解的方法 3 掌握常微分方程数值求解的方法 二 实验要求 1 根据实验内容 编写相应的MATLAB程
  • Hadoop学习——MapReduce的组件及简单API(一)

    上一篇参考Hadoop学习 MapReduce的简单介绍及执行步骤 MapReduce的组件 组件是实现MapReduce的真正干活的东西 即我们的业务逻辑 就是要写到这里边来的 MapReduce共有4个组件 一 Mapper组件 介绍
  • Neo4j学习笔记(二) SpringMVC中使用Spring Data Neo4j

    目录 一 pom xml中添加spring data neo4j依赖 二 数据库连接配置文件neo4j properties 三 日志打开Cypher的DEBUG信息 便于调试 四 JAVA代码 4 1 Neo4jConfiguration
  • 百度文库副业项目,适合新手,后期躺赚

    前几天帮朋友找资料 费尽周折 最后在百度文库中找到了 但需要付费 百度文库 我之前有关注过 但没真正把它作为项目来操作 通过这几天的研究 发现做百度文库还蛮赚钱的 有的文库资料是几年前上传的 现在还在赚钱 这真是个躺赚的好项目 那么 下面浩
  • JDBC连接多个库进行数据操作(常用于数据迁移)

    package turnOverClass import java lang reflect Method import java sql Connection import java sql DriverManager import ja
  • 携程笔试2021.09.09

    三道编程 第一题 AC 类似于linux系统下 文件路径的前进和后退以及输出当前路径的指令 思路 直接模拟就可以 不过每一行用的nextInt 和next 接收数据的时候需要注意用nextLine 把回车吃掉 输入 7 cd a cd b