0x17 内容简介与例题习题

PostgreSQL 17深度解析(从17.0-17.4) 通过深度解析PostgreSQL 17的演进,我们可以看到其在**高并发处理、数据安全、Oracle兼容性**等方面的显著提升。对于技术团队而言,及时升级并调优PostgreSQL 17,将大幅提升系统性能和可靠性,为业务增长提供坚实支撑。 阅读详情

《算法竞赛进阶指南》读书笔记汇总
这里面是我在阅读《算法竞赛进阶指南》这本书时的一些思考,有兴趣可以瞧瞧!
如若发现什么问题,可以通过评论或者私信作者提出。希望各位大佬不吝赐教!
许多问题都可以使用二叉堆来进行优化,下面直接看例题吧。

【例题】超市(AcWing145)

题目链接
思路: 容易想到一个贪心策略:对于每个时间 t t t,在保证不卖出过期商品的情况下,尽量卖出利润前 t t t大的商品。具体做法如下:
1.我们将所有商品按照过期时间从小到大排序,建立一个初始为空的小根堆,然后依次扫描每一个商品。
2.对于当前商品,如果当前过期时间等于堆中商品数目,说明前 t t t天已经安排了 t t t个未过期商品准备卖出,那么如果堆顶商品利润小于当前商品利润,则用当前商品替换掉堆顶。
3.若当前商品的过期时间大于堆中商品数目,直接把该商品插入堆中。
4.最终,堆中的商品就是我们所要出售的商品啦。
可以体会一下维护堆的过程。

AC代码:

#include<bits/stdc++.h>

using namespace std;

typedef pair<int,int> PII;
const int N = 10005;

int n;
PII goods[N];

void solve(){
    for(int i = 1;i <= n;i ++)
    {
        int p,d;
        scanf("%d%d",&p,&d);
        goods[i] = {d,p};
    }
    
    sort(goods + 1,goods + 1 + n);
    
    priority_queue<int,vector<int>, greater<int> > q;
    for(int i = 1;i <= n;i ++){
        if(q.size() < goods[i].first) q.push(goods[i].second);
        else if(q.top() < goods[i].second) q.pop(),q.push(goods[i].second);
    }

    int ans = 0;
    while(q.size()){
        ans += q.top();
        q.pop();
    }
    
    printf("%d\n",ans);
}

int main(){
    while(~scanf("%d",&n))
        solve();
    return 0;
}

【例题】序列(AcWing146)

题目链接
思路:我们考虑这样一个简化问题,即 M = 2 M=2 M=2时,问题变为从两个长度为 N N N的序列中找出 N N N对和最小的数。
假设两个序列分别为 A A A与 B B B,我们先把 A A A序列从小到大排序,然后对于所有的数对(共有 N 2 N^{2} N2个),考虑一个分组的思想(来自y总)。
分别为:
B [ 1 ] + A [ 1 ] , B [ 1 ] + A [ 2 ] , . . . , B [ 1 ] + A [ N ] B[1] + A[1],B[1]+A[2],...,B[1]+A[N] B[1]+A[1],B[1]+A[2],...,B[1]+A[N]
B [ 2 ] + A [ 1 ] , B [ 2 ] + A [ 2 ] , . . . , B [ 2 ] + A [ N ] B[2]+A[1],B[2]+A[2],...,B[2]+A[N] B[2]+A[1],B[2]+A[2],...,B[2]+A[N]
. . . . . . ...... ......
B [ N ] + A [ 1 ] , B [ N ] + A [ 2 ] , . . . , B [ N ] + A [ N ] B[N]+A[1],B[N]+A[2],...,B[N]+A[N] B[N]+A[1],B[N]+A[2],...,B[N]+A[N]
我们发现,每一组数对里,数对和都是单调不降的,那么我们可以利用一个小根堆维护两个指针和一个数对和,也就是一个三元组 i , j , s u m {i,j,sum} i,j,sum, i , j i,j i,j分别表示指向 B B B数组与 A A A数组的指针。初始把每一组的第一个数对放进小根堆中,每次取出堆顶元素(当前的最小数),把它的 j j j指针加一,将得到的新数对放进小根堆中。重复取出 N N N即为前 N N N小的数对和。
那么如果要把 M M M个序列合并,那么我们可以从第一个序列开始一个一个向下合并,不难证明这个做法的正确性。

AC代码:

#include<bits/stdc++.h>

using namespace std;

const int N = 2005;

int n,m;
int a[N][N];
int tmp[N];

struct node{
    int i,j,sum;
    bool operator < (const node& b)const{
        return sum > b.sum;
    }
};

void solve(){
    cin >> m >> n;
    for(int i = 1;i <= m;i ++)
        for(int j = 1;j <= n;j ++)
            cin >> a[i][j];
            
    sort(a[1] + 1,a[1] + 1 + n);
    
    for(int i = 2;i <= m;i ++){
        priority_queue<node> q;
        for(int j = 1;j <= n;j ++){
            q.push(node{j,1,a[i][j] + a[i - 1][1]});          
        }
        for(int j = 1;j <= n;j ++){
            node cur = q.top();
            q.pop();
            tmp[j] = cur.sum;
            q.push(node{cur.i,cur.j + 1,a[i][cur.i] + a[i - 1][cur.j + 1]});
        }
        memcpy(a[i],tmp,sizeof(tmp));
    }
    
    for(int i = 1;i <= n;i ++){
        if(i != 1) printf(" ");
        printf("%d",a[m][i]);
    }
    puts("");
}

int main(){
    int t;cin >> t;
    while(t --)
        solve();
    return 0;
}

下面再看看一道习题。

【练习】黑盒子(AcWing162)

题目链接
思路:我们可以使用一个大根堆和一个小根堆来维护,大根堆维护排名前 i − 1 i-1 i−1个数,小根堆维护排名在 i i i以及之后的数。对于 G E T GET GET操作,我们只需要把小根堆堆顶输出,再把小根堆堆顶放到大根堆中。对于 A D D ADD ADD操作,如果当前数大于或等于小根堆堆顶(即 A [ i ] A[i] A[i]),则把当前数放到大根堆中;如果如果当前数小于大根堆堆顶,那么把当前数放到小根堆中,再把小根堆堆顶放到大根堆中。这题思想就是一个对顶堆,与动态维护中位数那题类似。

AC代码:

#include<bits/stdc++.h>
#define LL long long 
using namespace std;

const int N = 30005;

int n,m;
LL a[N];
int u[N];

void solve(){
    cin >> n >> m;
    for(int i = 1;i <= n;i ++)
        cin >> a[i];
    for(int i = 1;i <= m;i ++)
        cin >> u[i];
    
    priority_queue<LL, vector<LL>, greater<LL> > q1; // 小顶
    priority_queue<LL> q2; // 大顶
    int i = 0, k = 1;
    for(int j = 1;j <= n;j ++){
        if(q1.empty() || a[j] >= q1.top()) q1.push(a[j]);
        else{
            q2.push(a[j]);
            q1.push(q2.top());
            q2.pop();
        }
        while(j == u[k]){
            i ++;
            q2.push(q1.top());
            cout << q1.top() << endl;
            q1.pop();
            k ++;
        }
    }
    
}

int main(){
    solve();
    return 0;
}
3DLUT色彩转换实战:从原理到Python实现(含17x17x17节点配置) 本文深入解析了3DLUT色彩转换技术的核心原理与实战应用,重点探讨了在ISP开发中广泛采用的17x17x17节点配置的工程优势。通过Python代码示例,详细演示了如何从零构建3DLUT查找表、实现高效的四面体插值算法,并分享了针对嵌入式系统的定点运算与内存访问等关键优化技巧,助力开发者实现高性能的色彩处理管线。 阅读详情

相关推荐

Cocos2D-X 3.17.2 安装配置

网上关于cocos2d-x的安装教程有很多,但是都是旧版本的,我找了很多资料都无法创建proj.android-studio。后来发现是新版本的软件对安卓平台进行合并,只有proj.android文件,使用Android studio编写。 一、安装准备: JDK –->> Java SE Development Kit 8u202 Android studio --&gt...

baidu_18223593的博客 6122

关于局部表数据段描述符的选择符为什么是(0x17)

关于局部表数据段描述符的选择符为什么是(0x17)段选择子的格式。一共16位,高13位表示段描述符在描述符表中的索引,接下来一位,即第[2]位TI指示位,用于指示此描述符为GDT还是LDT,[2]=1表示描述符在GDT中,而[2]=0,表示在LDT表中!,接下来[1][0]为RPL位,用于指示当进程对段访问第请求权限,而:0x17=0000 0000 0001 0111,表示所以是LDT表中的第二项(数据段描述符).第一项是代码段描述符,第0项为空描述符,在linux-0.11版本中LDT中只有三项:NUL

melong100的专栏 2379

0x17.基础数据结构 - 二叉堆

目录0.AcWing 145. 超市 声明: 本系列博客是《算法竞赛进阶指南》+《算法竞赛入门经典》+《挑战程序设计竞赛》的学习笔记,主要是因为我三本都买了 按照《算法竞赛进阶指南》的目录顺序学习,包含书中的少部分重要知识点、例题解题报告及我个人的学习心得和对该算法的补充拓展,仅用于学习交流和复习,无任何商业用途。博客中部分内容来源于书本和网络(我尽量减少书中引用),由我个人整理总结(习题和代码可全都是我自己敲哒)部分内容由我个人编写而成,如果想要有更好的学习体验或者希望学习到更全面的知识,请于京东搜索

繁凡さん的博客 862

ModBus协议-功能码-0x17

23 (0x17) Read/Write Multiple registers This function code performs a combination of one read operation and one write operation in a single MODBUS transaction. The write operation is performed befor

Andy's Blog 5466

深入解析UDS诊断协议:0x19与0x14服务的故障码处理机制

本文深入解析了汽车UDS诊断协议中0x19(读取DTC信息)与0x14(清除诊断信息)两大核心服务。详细阐述了故障码(DTC)从产生、状态管理到被读取和清除的完整机制,并结合实战经验,探讨了服务实现中的关键要点与典型问题,为汽车电子工程师提供实用的开发与调试指南。

ice55的博客 494

远程桌面连接失败?手把手教你解决CredSSP加密Oracle漏洞(Win10/Win11通用)

本文详细解析了Windows远程桌面连接因CredSSP加密Oracle漏洞安全更新导致的“身份验证错误”问题。文章从原理入手,提供了通过组策略编辑器(适用于专业版)和注册表编辑器(适用于家庭版)两种核心解决方案,指导用户将安全策略调整为推荐的“缓解”模式,以在保障安全的前提下恢复连接,并给出了高级脚本处理与安全最佳实践。

u6v7w8x的博客 728

0x17 文件系统实现

一、文件系统 文件系统 文件系统是操作系统中负责管理和存储文件信息的模块。它提供了在存储设备上组织文件的方法和数据结构。 系统角度 ①对存储设备的空间进行组织和分配 ②负责文件检索、读写等操作 ③目标:存取速度和存储空间效率 用户角度 ①提供按名存取的文件访问机制 ②提供了文件的组织管理 ③目标:方便的文件存取机制 文件系统的层次架构 如下图,逻辑文件系统、文件组织模块、基本文件系统构成了文件系统。 I/O控制 设备驱动程序(Device Drivers) 中断 设备驱动程序 控制I/O设备运行

ChanCherry的博客 914

从零配置华为S5720交换机VLAN:Web界面与命令行双模式详解(附拓扑图)

本文详细解析华为S5720交换机VLAN配置的全过程,涵盖Web界面与命令行(CLI)双模式操作指南。从基础环境准备到多交换机环境配置同步,特别针对S5720-52X系列交换机的VLANif接口、端口分配策略及交换机堆叠技术进行深入讲解,并附实用拓扑图与配置示例,助力企业网络管理员高效完成VLAN部署。

happy2的博客 1372

暑假第二天之每天一些题系列

暑假第二天之每天一些题系列 文章目录暑假第二天之每天一些题系列一、选择题二、填空题三、算法题 一、选择题 表达式 0x13&0x17,0x13|0x17 的值分别是多少 A. 0x17 0x13 B. 0x13 0x17 C. 0xF8 0xE8 D. 0xec 0xC8 答案解析: 0x13的二进制为:00010011 0x17的二进制为:00010111 &是按位与,它们按位与的结果为:00010011,转化为16进制为:0x13 |是按位或,它们按位或的结果为:00010111

小赵小赵福星高照的博客 636

CPLD新手必看:安路EF2系列配置与烧录的避坑指南(含完整流程)

本文为CPLD新手提供了安路EF2系列芯片从硬件设计到软件烧录的完整避坑指南。重点解析了电源系统、时钟复位、JTAG接口等关键电路设计要点,并详细介绍了使用TD软件进行工程创建、代码编写、引脚分配及程序烧录的全流程,帮助开发者快速上手并规避常见问题。

weixin_29217235的博客 357

Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置

本文详细介绍了在Ubuntu 22.04系统上部署普罗米修斯监控系统的完整流程。首先说明了系统配置要求(2核CPU、4G内存、100G硬盘),然后分步骤指导下载、解压和安装普罗米修斯服务。文章包含配置prometheus.yml文件、启动服务、设置系统服务等关键操作,并提供了访问9090端口验证服务的方法。接着介绍了通过node_exporter监控Linux主机的配置过程,包括安装、启动服务和修改普罗米修斯配置文件添加监控项。最后还涉及了mysqld_exporter的部署流程,用于监控MySQL数据库服

m0_58761900的博客 1640

将一个十六进制“字符串”转换为十进制数值的问题

将一个十六进制“字符串”转换为十进制数值的问题

韦编二绝 2万+

家庭网络中,路由器和交换机的连接顺序

它的目的是给路由器增加端口,用户访问互联网的速度比情况一要快,常用于办公网络、家庭成员多的场景。光纤入户首先连接的肯定是光猫,而在光猫的后面,是先连接交换机?还是应该接路由器呢?家庭网络中路由器和交换机的先后连接顺序。它目的是让更多的用户访问互联网。常用于一些超大型机房、网吧等。至于路由器和交换机的区别。两者之间很多功能都有兼容。但用户上网速度相对较慢。在技术日益迭代的今天。

m0_74075744的博客 1万+

0x04 内容简介与例题习题

二分板子整数域上的二分实数域上的二分三分求单峰函数极值 板子 整数域上的二分 在单调递增序列aaa中查找>=x>= x>=x的数中最小的一个(也就是STL的lower_bound) while(l < r){ int mid = l + r >> 1; if(a[mid] >= x) r = mid; else l = mid + 1; } return a[l]; 在单调递增序列aaa中查找<=x<=x<=x的数中最大的一个 while(

juruo_c的博客 647

【DDR5 PCB走线SI/PI仿真调试】详细全攻略

问题场景发现症状优化措施过孔Stub效应TDR波形尖峰,信号反射严重使用盲孔,背钻减少Stub,降低Via数量串扰过大眼图闭合,误码率增加增加走线间距,插入地线隔离,减少平行长度电源阻抗过高PDN谐振导致纹波大多频率去耦,靠近电源引脚布置多档电容,合理分层信号时序失配优化走线长度匹配,避免信号走线跨层跳变DDR5设计不仅是硬件的挑战,更是仿真能力的考验。掌握SI/PI仿真,理解信号背后的物理本质,才能真正把握高速接口的“灵魂”!

weixin_43199439的博客 988

UCIE Specification详解(八)

Logical Physical Layer(逻辑物理层)

Crazzy_M的博客 1608

0x57 内容简介与例题习题

倍增优化DP基本思想 基本思想 倍增优化dp主要包括这样两个步骤:预处理和二进制拼凑答案。

juruo_c的博客 591

AD-Copilot 论文解读:把“大模型看图”升级为“对照检验”的工业异常检测助手

本文提出AD-Copilot,一个面向工业异常检测的视觉语言助手,通过视觉上下文比较解决现有方法的不足。针对工业场景中多模态大模型表现不佳的问题,作者指出核心原因在于缺乏工业数据和比较能力不足。为此,论文提出三个关键贡献:构建Chat-AD数据集,设计Comparison Encoder显式建模图像差异,以及采用多阶段训练策略。实验表明,该方法在MMAD基准上达到82.29%准确率,定位任务提升3.35倍,并展现出良好的泛化能力。消融实验验证了比较模块的有效性,表明其成功源于高质量比较数据与显式比较模块的协

blanokvaffy的博客 334

JDK 8 升级 17 及 springboot 2.x 升级 3.x 指南

JDK 8 升级 17 及 springboot 2.x 升级 3.x 指南

墨鸦的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【C语言经典例题100解答】

收纳整理C语言各类经典例题100题,并给出实例代码和运行结果

依然的专栏 9043

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

GitLab 升级指南:一次从 17.4.x 升级到 17.9.x经历( GitLab 容器)

在进行 GitLab 升级前,建议备份数据。我没有进行数据备份。下载并更新 GitLab 镜像为latest版本,更新docker ps你可能会看到容器不停重启,表明容器启动失败。这意味着你需要先将 GitLab 升级到 17.8.x 版本,然后再继续升级到 17.9.x。下载 GitLab 17.8.x 版本镜像,并更新中的 GitLab 镜像版本为 17.8.x。请替换17.8.x为实际版本号,如17.8.5。docker ps如果容器仍然无法成功启动,继续查看日志。

qq_20098629的博客 1561

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。 Pig包括两部分: 用于描述数据流的语言,称为Pig Latin。 用于执行Pig Latin程序的执行环境,当前有两个环境:单JVM中的本地执行环境和Hadoop集群上的分布式执行环境。   Pig内部,每个操作或变换是对输入进行数据处理,然后产生输出结果

一花一世界 1106

应用回归分析(何晓群)CH2、CH3例题、习题

应用回归分析(何晓群)CH2、CH3例题、习题第2章: 一元线性回归习题2.14习题2.15习题2.16第3章: 多元线性回归习题3.11 第2章: 一元线性回归 习题2.14 习题2.15 习题2.16 第3章: 多元线性回归 习题3.11 ...

weixin_44878159的博客 8891

数学分析原理答案——第三章 习题17

沃尔特·鲁丁(Walter Rudin)所著《数学分析原理》中第三章 习题17的个人答案,仅供参考

tianwangwxm的博客 832

NXP的LPC17XX下载时出现0x1c地址校验出错

NXP的LPC17XX下载时出现0x1c地址校验出错 具体的错误现象 Erase Done. Programming Done. Contents mismatch at: 0000001CH (Flash=BEH Required=00H) ! Contents mismatch at: 0000001DH (Flash=F4H Required=00H) ! Contents mism...

xuchanghe110的博客 1873

扩展欧拉定理习题

本文介绍了扩展欧拉定理及其在编程竞赛中的应用。主要内容包括: 扩展欧拉定理的数学表述,当a,m∈Z时,a^b mod m的计算方法根据b与φ(m)的大小关系有所不同。 通过CF17D和CF615D两个例题展示了扩展欧拉定理的实际应用,包括: CF17D:计算(b-1)*b^(n-1) mod c的特殊情况处理 CF615D:计算一个数所有因数的乘积,分析质因子的贡献 介绍了扩展欧拉定理的两个应用方向: 与数据结构结合处理区间欧拉函数操作 与递归结合计算幂塔模数,如P4139和CF906D等题目 强调了欧拉函

conti123的博客 970
上一篇: 0x15 内容简介与例题习题
下一篇: 0x56 内容简介与例题习题
juruo_c
博客等级 码龄6年 520粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值