信息学奥赛一本通 1606:【 例 1】任务安排 1 | 洛谷 P2365 任务安排
【题目链接】
ybt 1606:【 例 1】任务安排 1
洛谷 P2365 任务安排
【题目考点】
1. 动态规划:线性动规
【解题思路】
可以先了解法1,虽然不是正解,但该解法只使用了动规的基本思路,易于理解,有助于理解这一问题。而后再了解该题的正解解法2。
解法1(非正解): 二维状态, O ( n 3 ) O(n^3) O(n3)解法
第i个任务执行时间为 t i t_i ti,第i个任务的费用系数为为 c i c_i ci
记序列t的前缀和为sumT,序列c的前缀和为sumC
抽象问题,可知:每个任务是一个元素,构成一个序列。一批任务就是序列的一个子段。划分批次的方案,就是对一个序列划分为多个子段的方案。
1. 确定状态:
- 阶段:前i个元素,分成j个子段
- 决策:一个元素被分到哪一个子段
- 策略:子段划分方案
- 策略集合:前i个元素分成j个子段的所有子段划分方案
- 条件:费用最小
- 统计量:费用
状态定义 d p [ i ] [ j ] dp[i][j] dp[i][j]:前i个元素分成j个子段的所有子段划分方案中,费用最小的方案的费用。
- 初始状态: d p [ i ] [ 1 ] dp[i][1] dp[i][1]:前i个元素分成1个子段的最小费用为 ( s + s u m T [ i ] ) ⋅ s u m C [ i ] (s+sumT[i])\cdot sumC[i] (s+sumT[i])⋅sumC[i]。
结合后面的状态转移方程,该初始状态等价于先将dp数组设为无穷大,而后将 d p [ 0 ] [ 0 ] dp[0][0] dp[0][0]设为0
2. 确定状态转移方程
策略集合:前i个元素分成j个子段的所有子段划分方案
分割策略集合:根据第j个子段的起始下标分割策略集合
设前j-1个子段包含序列下标1~k的元素。第j个子段的起始下标为k+1。
可知k的范围为 j < = k < i j<=k<i j<=k<i
当前面j-1个子段每个子段只有一个数字时,k最小,为j。
当第j个子段只有一个数字时,k最大,为i-1。
当第j子段的起始下标为k+1时,前k个数字分成j-1个子段的最小费用,再加上第j个子段的费用,就是当前子段划分下的最小费用。
第1到第i任务一共有j个子段(批次),开机启动耗时 s ⋅ j s\cdot j s⋅j。第1个任务到第i任务耗费总时间为 s u m T [ i ] sumT[i] sumT[i],因此这批任务的完成时刻是 s ⋅ j + s u m T [ i ] s\cdot j+sumT[i] s⋅j+sumT[i]
第k+1个任务的费用为 ( s ⋅ j + s u m T [ i ] ) ⋅ c [ k + 1 ] (s\cdot j+sumT[i])\cdot c[k+1] (s⋅j+sumT[i])⋅c[k+1]
第k+2个任务的费用为 ( s ⋅ j + s u m T [ i ] ) ⋅ c [ k + 2 ] (s\cdot j+sumT[i])\cdot c[k+2] (s⋅j+sumT[i])⋅c[k+2]
…
第i个任务的费用为 ( s ⋅ j + s u m T [ i ] ) ⋅ c [ i ] (s\cdot j+sumT[i])\cdot c[i] (s⋅j+sumT[i])⋅c[i]
因此总费用加和为 ( s ⋅ j + s u m T [ i ] ) ⋅ ( s u m C [ i ] − s u m C [ k ] ) (s\cdot j+sumT[i])\cdot (sumC[i]-sumC[k]) (s⋅j+sumT[i])⋅(sumC[i]−sumC[k])
因此状态转移方程为:
d p [ i ] [ j ] = m i n { d p [ k − 1 ] [ j − 1 ] + ( s ⋅ j + s u m T [ i ] ) ⋅ ( s u m C [ i ] − s u m C [ k ] ) } , j ≤ k < i dp[i][j] = min\{dp[k-1][j-1]+(s\cdot j+sumT[i])\cdot (sumC[i]-sumC[k])\}, j\le k<i dp[i][j]=min{dp[k−1][j−1]+(s⋅j+sumT[i])⋅(sumC[i]−sumC[k])},j≤k<i
该解法的时间复杂度是 O ( n 3 ) O(n^3) O(n3)。
在洛谷上是70分,一本通上是60分。
有测试点超时,因为n是5000, O ( n 3 ) O(n^3) O(n3)必然会超时。
有测试点是答案错误,因为结果会超过int的范围,需要使用long long类型表示。而如果开long long dp[5005][5005]
,又会空间超限。所以开int dp[5005][5005]
,有些测试点的结果由于超出int的范围而产生答案错误。
解法2(正解): 一维状态, O ( n 2 ) O(n^2) O(n2)解法
上一解法在确定状态转移方程时是这样做的:
当第j子段的起始下标为k+1时,前k个数字分成j-1个子段的最小费用,再加上第j个子段的费用,就是当前子段划分下的最小费用。
第j个子段也就是前i个元素进行划分子段所得到的最后一个子段。最后一个子段确定后,第1~k元素自然需要选择费用最少的子段划分方案,无论分成多少子段。
因此我们可以把状态定义中”分成j个子段“这一维度去掉。
d p [ i ] dp[i] dp[i]的意义为:前i个元素进行子段划分的所有方案中,费用最少的方案的费用。
如果这样进行状态定义,我们就无法得知前i个元素分成了几个子段,那么最后一个子段任务的完成时间 s ⋅ j + s u m T [ i ] s\cdot j+sumT[i] s⋅j+sumT[i]中的子段数量j就是未知的。
这里可以将开机时间产生的费用和任务时间产生的费用分别考虑。
仍然设最后一个子段第一个元素的下标为k+1,那么 0 ≤ k < i 0\le k < i 0≤k<i
当1~i整个序列就是最后一个子段,此时k最小为0
当最后一个子段只有一个第i元素,次数k最大为i-1
如果完成时刻只考虑任务耗费时间,那么最后一个子段任务的完成时间为 s u m T [ i ] sumT[i] sumT[i]
最后一个子段的任务的费用分别是:
第k+1个任务的费用为 s u m T [ i ] ⋅ c [ k + 1 ] sumT[i]\cdot c[k+1] sumT[i]⋅c[k+1]
第k+2个任务的费用为 s u m T [ i ] ⋅ c [ k + 2 ] sumT[i]\cdot c[k+2] sumT[i]⋅c[k+2]
…
第i个任务的费用为 s u m T [ i ] ⋅ c [ i ] sumT[i]\cdot c[i] sumT[i]⋅c[i]
总费用为 s u m T [ i ] ⋅ ( s u m C [ i ] − s u m C [ k ] ) sumT[i]\cdot (sumC[i]-sumC[k]) sumT[i]⋅(sumC[i]−sumC[k])
然后考虑开机时间,当前最后一批任务(子段)的开机时间为s,由于这一次开机影响到的任务(元素)为第k+1任务到第n任务,这些任务的完成时间由于这一次开机延后了时间s,
产生的费用为 s ⋅ c [ k + 1 ] + s ⋅ c [ k + 2 ] + . . . + s ⋅ c [ n ] s\cdot c[k+1]+s\cdot c[k+2]+...+s\cdot c[n] s⋅c[k+1]+s⋅c[k+2]+...+s⋅c[n]
= s ⋅ ( s u m C [ n ] − s u m C [ k ] ) =s\cdot (sumC[n]-sumC[k]) =s⋅(sumC[n]−sumC[k])
我们把开机对后面所有任务产生的费用和完成任务的费用加在一起,作为状态定义。这是一种费用提前计算思想。
该方法最终的状态定义为:
d p [ i ] dp[i] dp[i]:前i个任务的所有子段划分方案中,执行任务的费用 加上当前方案下每批任务的启动时间对后续任务产生的费用加和 最小的划分方案的费用。
该状态定义与之前的状态定义(前i个元素进行子段划分的所有方案中,费用最少的方案的费用)不同,但该问题最终求的是 d p [ n ] dp[n] dp[n],两种定义下 d p [ n ] dp[n] dp[n]的值一定是相同的。
根据上述分析,可知状态转移方程为:
d p [ i ] = m i n { d p [ k ] + s u m T [ i ] ⋅ ( s u m C [ i ] − s u m C [ k ] ) + s ⋅ ( s u m C [ n ] − s u m C [ k ] ) , 0 ≤ k < i dp[i] = min\{dp[k]+sumT[i]\cdot (sumC[i]-sumC[k])+s\cdot (sumC[n]-sumC[k]), 0\le k< i dp[i]=min{dp[k]+sumT[i]⋅(sumC[i]−sumC[k])+s⋅(sumC[n]−sumC[k]),0≤k<i
该解法时间复杂度为 O ( n 2 ) O(n^2) O(n2),空间复杂度 O ( n ) O(n) O(n),可以通过此题。
【注】本题可以进一步通过斜率优化使得时间复杂度降至 O ( n ) O(n) O(n),该方法见[洛谷 P10979 任务安排 2]
【题解代码】
解法1(非正解): 二维状态, O ( n 3 ) O(n^3) O(n3)解法 (洛谷70分 一本通60分)
#include<bits/stdc++.h>
using namespace std;
#define N 5005
int n, s, t[N], c[N], st[N], sc[N], dp[N][N], ans = 1e9;//dp[i][j]:前i个数字分成j个子段的所有方案中,费用最小的方案的费用
int main()
{cin >> n >> s;for(int i = 1; i <= n; ++i){cin >> t[i] >> c[i];st[i] = st[i-1]+t[i];sc[i] = sc[i-1]+c[i];}memset(dp, 0x3f, sizeof(dp));dp[0][0] = 0;for(int i = 1; i <= n; ++i)for(int j = 1; j <= i; ++j)for(int k = j; k <= i; ++k)dp[i][j] = min(dp[i][j], dp[k-1][j-1]+(s*j+st[i])*(sc[i]-sc[k-1]));for(int j = 1; j <= n; ++j)ans = min(ans, dp[n][j]);cout << ans;return 0;
}
解法2(正解): 一维状态, O ( n 2 ) O(n^2) O(n2)解法
#include<bits/stdc++.h>
using namespace std;
#define N 5005
long long n, s, t[N], c[N], sumT[N], sumC[N], ans = 1e18, dp[N];//dp[i]:前i个任务的所有子段划分方案中,执行任务的费用 加上当前方案下每批任务的启动时间对后续任务产生的费用加和 最小的划分方案的费用
int main()
{cin >> n >> s;for(int i = 1; i <= n; ++i){cin >> t[i] >> c[i];sumT[i] = sumT[i-1]+t[i];sumC[i] = sumC[i-1]+c[i];}memset(dp, 0x3f, sizeof(dp));dp[0] = 0;for(int i = 1; i <= n; ++i)for(int k = 0; k <= i; ++k)dp[i] = min(dp[i], dp[k]+sumT[i]*(sumC[i]-sumC[k])+s*(sumC[n]-sumC[k]));cout << dp[n];return 0;
}
相关文章:
信息学奥赛一本通 1606:【 例 1】任务安排 1 | 洛谷 P2365 任务安排
【题目链接】 ybt 1606:【 例 1】任务安排 1 洛谷 P2365 任务安排 【题目考点】 1. 动态规划:线性动规 【解题思路】 可以先了解法1,虽然不是正解,但该解法只使用了动规的基本思路,易于理解,有助于理解…...
【解决方案】MuMu模拟器移植系统进度条卡住98%无法打开
之前在Vmware虚拟机里配置了mumu模拟器,现在想要移植到宿主机中 1、虚拟机中的MuMu模拟器12-1是目标系统,对应的目录如下 C:\Program Files\Netease\MuMu Player 12\vms\MuMuPlayer-12.0-1 2、Vmware-虚拟机-设置-选项,启用共享文件夹 3、复…...
【C语言】预处理详解
他们想要逃避工作的压迫,却又被功绩社会深植的价值观绑架。 前言 这是我自己学习C语言的第九篇博客总结。后期我会继续把C语言学习笔记开源至博客上。 上一期笔记是关于C语言的编译链接,没看的同学可以过去看看: 【C语言】编译链接_c 读取一行…...
设计模式Python版 适配器模式
文章目录 前言一、适配器模式二、适配器模式实现三、适配器模式在Django中的应用 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式&…...
系统思考—蝴蝶效应
“个体行为的微小差异,可能在系统中引发巨大且不可预测的结果。” — 诺贝尔经济学得主托马斯谢林 我们常说,小变动带来大影响,这种现象,在复杂系统理论中被称为“蝴蝶效应”:即使极小的变化,也能在动态系…...
使用Edu邮箱申请一年免费的.me域名
所需材料:公立Edu教育邮箱一枚(P.S:该服务不支持所有的Edu教育邮箱,仅支持比较知名的院校) 说到域名,.me这个后缀可谓是个性十足,适合个人网站、博客等。.me是黑山的国家顶级域名(c…...
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
本文项目编号 T 165 ,文末自助获取源码 \color{red}{T165,文末自助获取源码} T165,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
C++ ——— 仿函数
目录 何为仿函数 仿函数和模板的配合使用 何为仿函数 代码演示: class Add { public:int operator()(int x, int y){return x y;} }; 这是一个 Add 类,类里面有一个公有成员函数重载,重载的是括号 那么调用的时候: Add ad…...
基于FPGA的BT656解码
概述 BT656全称为“ITU-R BT.656-4”或简称“BT656”,是一种用于数字视频传输的接口标准。它规定了数字视频信号的编码方式、传输格式以及接口电气特性。在物理层面上,BT656接口通常包含10根线(在某些应用中可能略有不同,但标准配置为10根)。这些线分别用于传输视频数据、…...
【Proteus仿真】【51单片机】简易计算器系统设计
目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 联系作者 一、主要功能 1、LCD1602液晶显示 2、矩阵按键 3、可以进行简单的加减乘除运算 4、最大 9999*9999 二、使用步骤 系统运行后,LCD1602显示数据,通过矩阵按键…...
【16届蓝桥杯寒假刷题营】第1期DAY2
1.能选取元素的最多个数 - 蓝桥云课 问题描述 给定一个长度为 n 的数组 a,小蓝希望从数组中选择若干个元素(可以不连续),并将它们重新排列,使得这些元素 能够形成一个先严格递增然后严格递减的子序列(可以…...
安卓(android)饭堂广播【Android移动开发基础案例教程(第2版)黑马程序员】
一、实验目的(如果代码有错漏,可查看源码) 1.熟悉广播机制的实现流程。 2.掌握广播接收者的创建方式。 3.掌握广播的类型以及自定义官博的创建。 二、实验条件 熟悉广播机制、广播接收者的概念、广播接收者的创建方式、自定广播实现方式以及有…...
linux的/proc 和 /sys目录差异
/proc 和 /sys 都是Linux系统中用于提供系统信息和进行系统配置的虚拟文件系统,但它们的原理并不完全一样,以下是具体分析: 目的与功能 /proc :主要用于提供系统进程相关信息以及内核运行时的一些参数等,可让用户和程…...
使用Navicat Premium管理数据库时,如何关闭事务默认自动提交功能?
使用Navicat Premium管理数据库时,最糟心的事情莫过于事务默认自动提交,也就是你写完语句运行时,它自动执行commit提交至数据库,此时你就无法进行回滚操作。 建议您尝试取消勾选“选项”中的“自动开始事务”,点击“工…...
HTB:Active[RE-WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…...
新春登蛇山:告别岁月,启航未来
大年初一,晨曦透过薄雾,温柔地洒在武汉的大街小巷。2025 年的蛇年春节,带着新春的喜气与希望悄然而至。我站在蛇山脚下,心中涌动着复杂的情感,因为今天,我不仅将与家人一起登山揽胜,更将在这一天…...
如何获取小程序的code在uniapp开发中
如何获取小程序的code在uniapp开发中,也就是本地环境,微信开发者工具中获取code,这里的操作是页面一进入就获取code登录,没有登录页面的交互,所以写在了APP.vue中,也就是小程序一打开就获取用户的code APP.…...
LLM评估与优化技术解析
标题:LLM评估与优化技术解析 文章信息摘要: LLM的评估方法主要包括自动化基准测试、人工评估和基于模型的评估,每种方法各有优缺点。自动化测试快速但难以捕捉细微差别,人工评估细致但成本高,基于模型的评估结合了两者…...
SpringBoot 原理分析
SpringBoot 原理分析 依赖管理相关 启动器 starter Spring Boot 的 Starter 是预定义依赖项集合,可简化 Spring 应用配置与构建,启动时自动引入所需库、配置和功能。 Spring Boot 有很多预定义 Starter,如 spring - boot - starter - web 用…...
go入门Windows环境搭建
简介 Go 即 Golang,是 Google 公司 2009 年 11 月正式对外公开的一门编程语言。 根据 Go 语言开发者自述,近 10 多年,从单机时代的 C 语言到现在互联网时代的 Java,都没有令人满意的开发语言,而 C往往给人的感觉是&a…...
拦截器快速入门及详解
拦截器Interceptor 快速入门 什么是拦截器? 是一种动态拦截方法调用的机制,类似于过滤器。 拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。 拦截器的作用:拦截请求,在指定方法调用前后,根…...
Fort Firewall:全方位守护网络安全
Fort Firewall是一款专为 Windows 操作系统设计的开源防火墙工具,旨在为用户提供全面的网络安全保护。它基于 Windows 过滤平台(WFP),能够与系统无缝集成,确保高效的网络流量管理和安全防护。该软件支持实时监控网络流…...
第3章 基于三电平空间矢量的中点电位平衡策略
0 前言 在NPC型三电平逆变器的直流侧串联有两组参数规格完全一致的电解电容,由于三电平特殊的中点钳位结构,在进行SVPWM控制时,在一个完整开关周期内,直流侧电容C1、C2充放电不均匀,各自存储的总电荷不同,电容电压便不均等,存在一定的偏差。在不进行控制的情况下,系统无…...
九大服务构建高效 AIOps 平台,全面解决GenAI落地挑战
最近,DevOps运动的联合创始人Patrick Debois分享了他对AI平台与软件研发关系的深刻见解,让我们一起来探讨这个话题。 在AI的落地过程中,我们面临着两个主要难题: 引入AI编码工具后的开发者角色转变:随着像GitHub Copilot这样的AI工具的普及,工程师的角色正在发生深刻变革…...
Leetcode 131 分割回文串(纯DFS)
131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1:…...
我的AI工具箱Tauri+Django内容生产介绍和使用
在现代内容生产环境中,高效、自动化的工具能够显著提升生产力,降低人工成本。Tauri 与 Django 结合打造的工作箱,集成了强大的 音频处理、视频剪辑、内容下载 以及 AI 文章撰写 等模块,帮助用户在多媒体内容生产的各个环节实现高效…...
“星门计划对AI未来的意义——以及谁将掌控它”
“星门计划对AI未来的意义——以及谁将掌控它” 图片由DALL-E 3生成 就在几天前,唐纳德特朗普宣布了“星门计划”,OpenAI随即跟进,分享了更多细节。他们明确表示,计划在未来四年内投资5000亿美元,在美国为OpenAI构建一…...
论文阅读(八):结构方程模型用于研究数量遗传学中的因果表型网络
1.论文链接:Structural Equation Models for Studying Causal Phenotype Networks in Quantitative Genetics 摘要: 表型性状可能在它们之间发挥因果作用。例如,农业物种的高产可能会增加某些疾病的易感性,相反,疾病的…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化
1.25 视觉风暴:NumPy驱动数据可视化 目录 #mermaid-svg-i3nKPm64ZuQ9UcNI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-i3nKPm64ZuQ9UcNI .error-icon{fill:#552222;}#mermaid-svg-i3nKPm64ZuQ9UcNI …...
Linux Samba 低版本漏洞(远程控制)复现与剖析
目录 前言 漏洞介绍 漏洞原理 产生条件 漏洞影响 防御措施 复现过程 结语 前言 在网络安全的复杂生态中,系统漏洞的探索与防范始终是保障数字世界安全稳定运行的关键所在。Linux Samba 作为一款在网络共享服务领域应用极为广泛的软件,其低版本中…...
solidity基础 -- 可视范围
在 Solidity 编程语言中,可视范围(Visibility)用于控制合约中变量和函数的访问权限。这对于确保合约的安全性、模块化以及代码的可维护性至关重要。Solidity 提供了四种可视范围修饰符:public、private、external 和 internal。以…...
Spring Boot - 数据库集成07 - 数据库连接池
数据库连接池 文章目录 数据库连接池一:知识准备1:什么是数据库连接池?2:数据库连接池基本原理 二:HikariCP连接池1:简单使用2:进一步理解2.1:是SpringBoot2.x默认连接池2.2…...
智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程
智云-一个抓取web流量的轻量级蜜罐-k8s快速搭建教程 github地址 https://github.com/xiaoxiaoranxxx/POT-ZHIYUN k8s搭建教程 首先下载代码文件 git clone https://github.com/xiaoxiaoranxxx/POT-ZHIYUN.git cd POT-ZHIYUN编译镜像 代码相关文件在github https://github.com/x…...
MySQL 事件调度器
MySQL 事件调度器确实是一个更方便且内置的解决方案,可以在 MySQL 服务器端自动定期执行表优化操作,无需依赖外部工具或应用程序代码。这种方式也能减少数据库维护的复杂性,尤其适用于在数据库频繁更新或删除时进行自动化优化。 使用 MySQL …...
3 Spark SQL
Spark SQL 1. 数据分析方式2. SparkSQL 前世今生3. Hive 和 SparkSQL4. 数据分类和 SparkSQL 适用场景1) 结构化数据2) 半结构化数据3) 总结 5. Spark SQL 数据抽象1) DataFrame2) DataSet3) RDD、DataFrame、DataSet 的区别4) 总结 6. Spark SQL 应用1) 创建 DataFrame/DataSe…...
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新——从DeepSeek看下一代语言模型的高效之路
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新 ——从DeepSeek看下一代语言模型的高效之路 大模型的“内存焦虑” 当ChatGPT等大语言模型(LLM)惊艳世界时,很少有人意识到它们背后隐藏的“内存焦虑”…...
Spring AI 在微服务中的应用:支持分布式 AI 推理
1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…...
赛博算卦之周易六十四卦JAVA实现:六幺算尽天下事,梅花化解天下苦。
佬们过年好呀~新年第一篇博客让我们来场赛博算命吧! 更多文章:个人主页 系列文章:JAVA专栏 欢迎各位大佬来访哦~互三必回!!! 文章目录 #一、文化背景概述1.文化起源2.起卦步骤 #二、卦象解读#三、just do i…...
数据分析系列--⑤RapidMiner进行关联分析(中文数据案例)
一、数据集 二、数据预处理 1.读取数据、拆分、重命名 2.数据预处理 三、关联分析 四、结论 一、数据集 点击下载数据集shopping_basket.xlsx ,这个数据集专门使用中文数据来进行分析. 二、数据预处理 1.读取数据、拆分、重命名 2.数据预处理 三、关联分析 四、结论 Ok…...
fpga系列 HDL:XILINX Vivado Vitis 高层次综合(HLS) 实现 EBAZ板LED控制(下)
补充代码,将clk之外的输入都设置能使其运行的默认值 timescale 1ns / 1ps module HLSLED(input wire clk ,input wire rst_n ,output wire led);wire led_o_i 0;reg rst 0;wire led_o_o_ap_vld;hlsv1_0 your_instance_name (.led_o_o_ap_vld(led_o_o_ap_vld), /…...
设计模式面试题
一、工厂方法模式: 1.简单工厂模式: (1).抽象产品:定义了产品的规范,描述了产品的主要特性和功能 (2).具体产品:实现或继承抽象产品的子类 (3).具体工厂:提供了创建产品的方法,调用者通过该方法来获取产品 所有产品都共有一个工厂,如果新…...
7层还是4层?网络模型又为什么要分层?
~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、为什么要分层 \quad 网络通信的复杂性促使我们需要一种分层的方法来理解和管理网络。就像建筑一样,我们不会把所有功能都混在一起…...
12.udp
12.udp **1. UDP特性****2. UDP编程框架(C/S模式)****3. UDP发送接收函数****4. UDP编程练习** 1. UDP特性 连接特性:无链接,通信前无需像TCP那样建立连接。可靠性:不可靠,不保证数据按序到达、不保证数据…...
【Leetcode 热题 100】32. 最长有效括号
问题背景 给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。 数据约束 0 ≤ s . l e n g t h ≤ 3 1 0 4 0 \le s.length \le 3 \times 10 ^ 4 0≤s.length≤3104 s [ i ] s[i] s[i] 为 ‘(’ 或 ‘…...
Python NumPy(8):NumPy 位运算、NumPy 字符串函数
1 NumPy 位运算 位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。NumPy 提供了一系列位运算函数,允许对数组中的元素进行逐位操作,这些操作与 Python 的位运算符类似…...
Fork/Join框架_任务分解与并行执行
1 概述 Fork/Join框架是Java 7引入的一个用于并行执行任务的框架。它特别适用于可以递归分解为多个子任务的工作,每个子任务可以独立执行,并且结果可以合并以获得最终结果。Fork/Join框架通过工作窃取(work-stealing)算法提高了多核处理器上的任务执行效率。 2 核心组件 …...
【大厂AI实践】OPPO:大规模知识图谱及其在小布助手中的应用
导读:OPPO知识图谱是OPPO数智工程系统小布助手团队主导、多团队协作建设的自研大规模通用知识图谱,目前已达到数亿实体和数十亿三元组的规模,主要落地在小布助手知识问答、电商搜索等场景。 本文主要分享OPPO知识图谱建设过程中算法相关的技…...
SOME/IP--协议英文原文讲解2
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.1 Speci…...
为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1
为大模型提供webui界面的利器:Open WebUI Open WebUI的官网:🏡 Home | Open WebUI 开源代码:WeTab 新标签页 Open WebUI是一个可扩展、功能丰富、用户友好的自托管AI平台,旨在完全离线运行。它支持各种LLM运行程序&am…...
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
了解安全三元组以及常见的安全模型和原则。 任务1:介绍 安全已成为一个流行词;每家公司都想声称其产品或服务是安全的。但事实真的如此吗? 在我们开始讨论不同的安全原则之前,了解我们正在保护资产的对手至关重要。您是否试图阻止蹒跚学步…...