学习笔记(算法学习+Maven)

单调队列优化多重背包

#include <bits/stdc++.h>

using namespace std;

const int M = 2010;

const int N = 20010;

int q[N];

int hh = 0, tt = -1;

int f[N];

int g[N];

int v[M], w[M], s[M];

int n, m;

int main() {

    cin >> n >> m;

    for (int i = 1; i <= n; i++) {

        scanf("%d%d%d", &v[i], &w[i], &s[i]);

    }

    for (int i = 1; i <= n; i++) {

        for (int j = 0; j < v[i]; j++) {

            hh = 0, tt = -1;

            memcpy(g,f,sizeof f);

            for (int k = j; k <= m; k += v[i]) {

                if (hh <= tt && q[hh] < k - s[i] * v[i]) hh++;

                if (hh <= tt) f[k] = max(f[k], g[q[hh]] + (k - q[hh]) / v[i] * w[i]);

                while (hh <= tt && g[q[tt]] - (q[tt] - j) / v[i] * w[i] <= g[k] - (k - j) / v[i] * w[i]) {

                    tt--;

                }

                q[++tt] = k;

            }

        }

    }

    cout << f[m];

    return 0;

}

复习二维0-1背包,0-1背包,多重背包,完全背包,设计问题的‘恰好’和‘不超过’

Maven:

介绍

是 Apache 软件基金会旗下的一个项目,它采用项目对象模型(Project Object Model,POM)的概念来管理项目。POM 是一个 XML 文件,用于描述项目的基本信息、依赖关系、构建配置等。通过 POM,Maven 能够统一管理项目的构建过程,包括编译、测试、打包、部署等各个环节,使得项目的构建更加标准化和自动化。

核心功能

依赖管理:Maven 可以方便地管理项目的依赖关系。在 POM 文件中,只需声明项目所依赖的库及其版本号,Maven 就会自动从中央仓库或其他指定的仓库中下载所需的依赖库,并将其添加到项目的类路径中。这大大简化了项目中依赖库的管理,避免了手动下载和配置依赖库可能带来的版本冲突和路径错误等问题。

项目构建:Maven 定义了一套标准的项目构建生命周期,包括清理、编译、测试、打包、安装、部署等阶段。开发人员只需执行相应的 Maven 命令,就可以按照预定的生命周期阶段对项目进行构建。例如,执行mvn clean install命令,Maven 会先清理项目的输出目录,然后编译源代码,运行测试用例,将项目打包成可部署的格式,并将其安装到本地仓库中。

插件扩展:Maven 通过插件机制来实现各种功能的扩展。插件可以在 Maven 的生命周期的各个阶段被执行,从而实现对项目构建过程的定制化。例如,使用 Surefire 插件可以运行单元测试,使用 Failsafe 插件可以运行集成测试,使用 Javadoc 插件可以生成项目的 Java 文档等。

工作原理

仓库:Maven 有本地仓库和远程仓库之分。本地仓库是存储在本地计算机上的一个目录,用于缓存从远程仓库下载的依赖库和项目构件。远程仓库则是位于网络上的服务器,用于存储各种开源项目的依赖库和构件。当 Maven 需要下载某个依赖库时,它会先在本地仓库中查找,如果找不到,则会从远程仓库中下载,并将其存储到本地仓库中供后续使用。

构建过程:Maven 根据 POM 文件中的配置信息,按照预定的生命周期阶段来执行构建任务。在每个阶段,Maven 会调用相应的插件来完成具体的工作。例如,在编译阶段,Maven 会调用 Compiler 插件来编译 Java 源代码;在打包阶段,会根据项目的类型(如 Java Web 项目、Java 应用程序等)调用相应的打包插件(如 War 插件、Jar 插件等)将项目打包成可部署的格式。

第一部:构建Maven项目

java->构建系统:Maven->创建

现在就是第一个Maven项目了

第二部:了解Maven的项目结构

src使我们的资源部分,它分为main和test,分别是用于我们主要代码编写和测试代码的编写

main/java:我们编写java类

main/resource:我们存静态资源和配置文件

main/webapp:网页资源

test也同理

target:存放编译出来的内容

pom.xml是我们Maven项目的核心,里面以project为根,通过三元定位项目:(groupId组名,artifactId组中唯一名称,version版本号)

第三部:依赖导入

<dependencies>

<dependency>

三元组(Maven坐标)

</dependency>

</dependencies>

可以在浏览器的官方库里面找找

如果下载慢or下载不了,可以换成国内的镜像仓库:

配置方法:

在IDEA的文件夹中的plugings/maven/lib/maven3/conf的settings找到里面的mirrors,把里面的mirror改为国内仓库即可

第四部:主要的Maven作用域

1. compile(默认作用域)

此作用域是默认的依赖作用域。处于该作用域的依赖在项目的所有构建阶段都可用,包括编译、测试和运行时,并且依赖会被传递给依赖该项目的其他项目。

示例代码如下:

<dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.13.2</version>

    <!-- 这里scope默认是compile --></dependency>

2. provided

provided作用域意味着该依赖在编译和测试阶段是必需的,但在运行时由 JDK 或者容器提供。比如在开发 Java Web 应用时,Servlet API 通常是由 Servlet 容器(像 Tomcat)提供的,因此 Servlet API 依赖就可以设置为provided作用域。

示例代码如下:

<dependency>

    <groupId>javax.servlet</groupId>

    <artifactId>javax.servlet-api</artifactId>

    <version>4.0.1</version>

    <scope>provided</scope></dependency>

3. runtime

runtime作用域表示依赖在运行和测试阶段是必需的,但在编译阶段不是必需的。像 JDBC 驱动,在编译代码时不需要它,但在运行时要使用它来连接数据库。

示例代码如下:

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>8.0.26</version>

    <scope>runtime</scope></dependency>

4. test

test作用域表明依赖仅在测试编译和测试运行阶段可用,在项目的正常编译和运行时不会用到。JUnit 就是一个典型的例子,它仅用于编写和运行测试用例。

示例代码如下:

<dependency>

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.13.2</version>

    <scope>test</scope></dependency>

第五部:自己项目作为依赖

把自己代码作为依赖引入,在pom.xml里面找到我们的三元组信息

找到maven选项

点击install

然后在这个主机上就可以直接引入了

第六部:测试和打包

clean:执行后会清理掉target文件夹

validate:严重项目的可用性

compile:编译项目

test:一键运行test下的测试案例(在/test,用Junit里面的测试注释)

verify:按照默认的生命周期运行项目:validate->compile->package

package:大宝成为jar包,但是没有依赖,没有主清单属性等等

可以通过 mvn package -Dmaven.test.skip=true 可以跳过测试直接打包

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

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

相关文章

WPF之项目创建

文章目录 引言先决条件创建 WPF 项目步骤理解项目结构XAML 与 C# 代码隐藏第一个 "Hello, WPF!" 示例构建和运行应用程序总结相关学习资源 引言 Windows Presentation Foundation (WPF) 是 Microsoft 用于构建具有丰富用户界面的 Windows 桌面应用程序的现代框架。它…

JAVAEE初阶01

个人主页 JavaSE专栏 JAVAEE初阶01 操作系统 1.对下&#xff08;硬件&#xff09;管理各种计算机设备 2.对上&#xff08;软件&#xff09;为各种软件提供一个稳定的运行环境 线程 运行的程序在操作系统中以进程的形式存在 进程是系统分配资源的最小单位 进程与线程的关…

HTML快速入门-4:HTML <meta> 标签属性详解

<meta> 标签是 HTML 文档头部&#xff08;<head> 部分&#xff09;的重要元素&#xff0c;用于提供关于文档的元数据&#xff08;metadata&#xff09;。这些数据不会直接显示在页面上&#xff0c;但对浏览器、搜索引擎和其他服务非常重要。 常用属性 1. name 和 …

前端基础之《Vue(12)—插件封装》

一、插件封装 1、在Vue生态中&#xff0c;除了Vue本身&#xff0c;其它所有的与Vue相关的第三方包&#xff0c;都是插件 例子&#xff1a; import VueRouter form vue-router Vue.use(VueRouter) // 注册插件 2、如何封装Vue插件 &#xff08;1&#xff09;第一种写法 const…

TCP基础题:音乐播放列表管理系统

需求描述 服务器端 创建一个 TCP 服务器&#xff0c;监听本地的 9999 端口&#xff0c;支持多个客户端连接。维护一个音乐播放列表&#xff0c;每个音乐条目包含歌曲名称、歌手、时长等信息。能够处理客户端的以下请求&#xff1a; 添加音乐到播放列表&#xff1a;接收客户端发…

Verilog 语法 (二)

在掌握了 Verilog 的基础语法和常用程序框架之后&#xff0c;本节将带大家深入学习一些 高级设计知识点。这些内容包括&#xff1a; 阻塞赋值&#xff08;&#xff09;与非阻塞赋值&#xff08;<&#xff09;的区别及使用场景&#xff1b; assign 和 always 语句的差异&am…

OpenCV 图形API(61)图像特征检测------检测图像边缘的函数Canny()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用Canny算法在图像中查找边缘。 该函数在输入图像中查找边缘&#xff0c;并使用Canny算法在输出映射&#xff08;edges&#xff09;中标记它们…

ubantu中下载编译安装qt5.15.3

操作步骤如下&#xff1a; 克隆 Qt 仓库&#xff1a; git clone https://code.qt.io/qt/qt5.git cd qt5 切换到 Qt 5.15.3 标签&#xff1a; git checkout v5.15.3-lts-lgpl 初始化子模块&#xff1a; perl init-repository 配置和编译 Qt&#xff1a; ./configure -prefix $H…

毕业论文设计基本内容和要求:

毕业设计基本内容和要求&#xff1a; 研究内容 调查了解LAMP架构和PHP开发&#xff1b; 学习百度旅游调用的其他产品线服务并熟悉请求接口&#xff1b; 学习社区业务层规范&#xff1b; 设计并实现旅游主要模块&#xff1b; 技术指标 熟悉企业中流程运转的方式&#xff0c;…

【大语言模型】大语言模型(LLMs)在工业缺陷检测领域的应用

大语言模型&#xff08;LLMs&#xff09;在工业缺陷检测领域的应用场景正在快速扩展&#xff0c;结合其多模态理解、文本生成和逻辑推理能力&#xff0c;为传统检测方法提供了新的技术路径。以下是该领域的主要应用场景及相关技术进展&#xff1a; 1. 多模态缺陷检测与解释 视…

【AI插件开发】Notepad++ AI插件开发1.0发布和使用说明

一、产品简介 AiCoder是一款为Notepad设计的轻量级AI辅助插件&#xff0c;提供以下核心功能&#xff1a; 嵌入式提问&#xff1a;对选中的文本内容进行AI分析&#xff0c;通过侧边栏聊天界面与AI交互&#xff0c;实现多轮对话、问题解答或代码生成。对话式提问&#xff1a;独…

第2讲:R语言中的色彩美学——科研图表配色指南

目录 一、背景导引:科研图表为何需要“配色讲究”? 二、色彩基础认知:别让“红绿盲”错过你的科研成果 三、R语言中的配色库全景图 四、案例演示与代码实战 🎨案例1:ggplot2 + viridis 配色的热图 🎨案例2:MetBrewer 中的印象派色彩 五、技巧点拨:如何为SCI图…

基于Django的个性化股票交易管理系统

本项目基于Python3.6、Django2.1、MySql8.0&#xff08;最好不要使用5.6&#xff0c;字符集等方面均不兼容&#xff0c;否则导入数据库会出错&#xff09;与股票信息工具包TuShare实现。 创建或激活对应Python开发环境 这里使用了conda来管理环境&#xff0c;强烈推荐&#xf…

超越GPT-4?下一代大模型的技术突破与挑战

超越GPT-4&#xff1f;下一代大模型的技术突破与挑战 引言&#xff1a;大模型的演进历程 人工智能领域近年来最引人注目的发展莫过于大型语言模型(Large Language Models, LLMs)的快速进步。从GPT-3到GPT-4&#xff0c;再到如今各种宣称"超越GPT-4"的模型不断涌现&…

Js 之点击下拉搜索Ajax-Bootstrap-Select

一、效果图 二、文档 https://gitcode.com/gh_mirrors/aj/Ajax-Bootstrap-Select/tree/master 三、示例代码 引入插件js、css <link rel"stylesheet" href"{php echo MODULE_URL}template/lib/bootstrap-select/css/bootstrap-select.min.css"> <…

无线监控系统分类全解析:搭配视频融合平台EasyCVR开启高效监控

随着技术的发展&#xff0c;无线监控系统在家庭、小型企业、特定行业以及室外恶劣环境中的应用越来越广泛。本文将介绍几种常见的无线监控系统&#xff0c;分析其优缺点&#xff0c;并结合EasyCVR视频融合平台的功能&#xff0c;探讨如何优化无线监控系统的性能和应用。 一、主…

WebRTC服务器Coturn服务器中的通信协议

1、概述 作为WebRTC服务器&#xff0c;coturn通信协议主要是STUN和TURN协议 STUN&TURN协议头部都是20个字节,用 Message Type来区分不同的协议 |------2------|------2------|------------4------------|------------------------12-------------------------|-----------…

Vue Transition 组件详解:让元素动起来

文章目录 一、为什么需要 Transition 组件&#xff1f;二、核心工作原理三、基础用法&#xff1a;6个过渡类名四、进阶用法五、 JavaScript 钩子函数六、过渡模式&#xff08;Mode&#xff09;七、列表过渡&#xff08;TransitionGroup&#xff09;八、与第三方动画库结合&…

【Redis】有序集合类型Sortedset 常用命令详解

此类型和 set 一样也是 string 类型元素的集合&#xff0c;且不允许重复的元素 不同的是每个元素都会关联一个double类型的分数&#xff0c;redis正是通过分数来为集合中的成员进行从小到大的排序 有序集合的成员是唯一&#xff0c;但分数(score)却可以重复 1. zadd - 添加 语法…

微信小程序 van-dropdown-menu

点击其他按钮&#xff0c;关闭van-dropdown-menu下拉框 DropdownMenu 引入页面使用index.wxmlindex.scssindex.ts(重点)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入组件 "usingComponents": {"van-dropdown-menu": "vant/weapp…