0x11 内容简介与例题习题

# 解决 win11 连接共享打印机,报错 0x00000709 问题 # 解决 win11 连接共享打印机,报错 0x00000709 问题 阅读详情

《算法竞赛进阶指南》读书笔记汇总
这里面是我在阅读《算法竞赛进阶指南》这本书时的一些思考,有兴趣可以瞧瞧!
如若发现什么问题,可以通过评论或者私信作者提出。希望各位大佬不吝赐教!
对于栈的基本特性,这里就不再赘述。着重讲解与栈有关的应用以及相关习题。

栈与卡特兰序列

关于卡特兰序列,我会在0x36节中详细介绍。

【例题】进出栈序列问题(AcWing130)

题目链接
思路: 细心观察我们会发现,进出栈序列符合卡特兰序列的特性,可以利用通项公式进行计算(将会在0x36节详细推导)。该通项公式为,第 N N N项卡特兰数为: C 2 N N N + 1 \frac{C_{2N}^N}{N + 1} N+1C2NN​​。本题的核心就是计算这个卡特兰数,利用了质因子分解与高精度乘法进行求解。

AC代码:

#include<bits/stdc++.h>
#define N 120005 

using namespace std;

int n;
int p[N],vis[N];
int power[N];

void prime(){
    for(int i = 2;i <= 2 * n;i ++){
        if(!vis[i]) 
            p[++p[0]] = i;
        for(int j = 1;j <= p[0] && p[j] * i <= 2 * n;j ++){
            vis[i * p[j]] = 1;
            if(i % p[j] == 0) break;
        }
    }
}

int getP(int x,int pp){
    int res = 0;
    while(x){
        res += x / pp;
        x /= pp;
    }
    return res;
}

void mul(vector<int>& a,int b){
    int c = 0;
    for(int i = 0;i < a.size();i ++){
        a[i] = a[i] * b + c;
        c = a[i] / 10000;
        a[i] %= 10000;
    }
    while(c){
        a.push_back(c % 10000);
        c /= 10000;
    }
}

void out(vector<int>& ans){
    printf("%d",ans.back());
    for(int i = ans.size() - 2;i >= 0;i --){
        printf("%04d",ans[i]);
    }
}

void solve(){
    cin >> n;
    prime();
    
    for(int i = 1;i <= p[0];i ++){
        power[p[i]] = getP(2 * n,p[i]) - 2 * getP(n,p[i]);
    }
    
    int tmp = n + 1;
    for(int i = 1;i <= p[0] && p[i] <= n + 1;i ++){
        while(tmp % p[i] == 0){
            power[p[i]] --;
            tmp /= p[i];
        }
    }
    
    vector<int> ans;
    ans.push_back(1);
    
    for(int i = 1;i <= p[0];i ++){
        for(int h = 0;h < power[p[i]];h ++){
            mul(ans,p[i]);
        }
    }
    
    out(ans);
    
    cout << endl; 
}

int main(){
    solve();
    return 0;
}

表达式计算

表达式一般有前缀,中缀与后缀表达式,这里主要讨论中缀表达式的计算方法。
我们可以使用两个栈,一个数字栈和一个运算符栈,步骤如下:
逐一扫描表达式中的每一个字符:
(1)如果遇到一个数字,压进数字栈中
(2)如果遇到左括号,把左括号压进运算符栈中
(3)如果遇到右括号,不断取出运算栈顶的一个运算符与数字栈栈顶两个运算符进行运算,把运算结果压进数字栈中,直到运算符栈顶为左括号为止。最后把左括号出栈。
(4)如果遇到运算符,只要运算符栈栈顶的优先级不低于当前扫描到的运算符,就不断取出栈顶运算符与两个数字栈栈顶数字进行运算,把运算结果压进数字栈中。最后把当前扫描到的运算符压进运算符栈中。
小技巧:我们可以为所求解的表达式子加上一对括号,这样最终数字栈中的元素就是表达式的结果。

【练习】表达式计算4(AcWing151)

思路:上面的步骤已经很详细啦。需要注意的是,这里可能会有多余的左右括号,我们只需要在表达式左边添加和表达式长度相同的左括号即可。想想为什么?

AC代码:

#include<bits/stdc++.h>

using namespace std;


stack<int> nums;
stack<char> ops;

void calc(){
    char op = ops.top();ops.pop();
    int b = nums.top();nums.pop();
    int a = nums.top();nums.pop();

    if(op == '+') nums.push(a + b);
    else if(op == '-') nums.push(a - b);
    else if(op == '*') nums.push(a * b);
    else if(op == '/') nums.push(a / b);
    else if(op == '^'){
        int res = 1;
        for(int i = 1;i <= b;i ++)
            res *= a;
        nums.push(res);
    }
}

void solve(){
    string s;
    cin >> s;
    string left;
    for(int i = 0;i <= s.size();i ++) left += '(';
    s = left + s + ')';

    for(int i = 0;i < s.size();i ++){
        if(s[i] >= '0' && s[i] <= '9'){
            int num = 0;
            int j = i;
            while(s[j] >= '0' && s[j] <= '9'){
                num = num * 10 + s[j] - '0';
                j ++;
            }
            nums.push(num);
            i = j - 1;
        }
        else{
            char c = s[i];
            if(c == '-' || c == '+'){
                if(c == '-' && i && !(s[i - 1] >= '0' && s[i - 1] <= '9' || s[i - 1] == ')')){
                    nums.push(0);
                }
                while(ops.top() != '(') calc();
                ops.push(c);
            }
            else if(c == '*' || c == '/'){
                while(ops.top() != '(' && ops.top() != '+' && ops.top() != '-') calc();
                ops.push(c);
            }
            else if(c == '^'){
                while(ops.top() == '^') calc();
                ops.push(c);
            }
            else if(c == '(') ops.push(c);
            else{
                while(ops.top() != '(') calc();
                ops.pop();
            }
        }
    }

    cout << nums.top() << endl;
}

int main(){
    solve();
    return 0;
}

单调栈

单调栈在处理某些问题时,有非常大的用处。我们用两道题目来体会一下单调栈的应用。

【例题】直方图中最大的矩形(AcWing131)

题目链接
思路: 这是一道单调栈的经典例题。我们先来思考这样的一个问题,如果矩形的高度严格单调递增的话,那么我们应该如何计算最大的矩形面积呢?( 如下图)
在这里插入图片描述
我们只需要像下面这样,考虑把每一个矩形的高度作为最终矩形的高度,然后向右延伸(因为左边无法延伸),更新答案。
在这里插入图片描述
如果下一个矩形的高度小于当前矩形的高度,由于下一个矩形与之前矩形所组成的最大矩形的高度一定不超过下一个矩形本身的高度,那么在我们考虑完上面四种情况的矩形面积后,下图所示部分矩形已经对答案的更新没有用处了。
在这里插入图片描述
那么我们可以把这部分矩形删掉,用一个与最后一个矩形高度相同的矩形来替代。
在这里插入图片描述
在删除的时候,我们需要用即将删除掉的矩形更新答案。
小技巧:我们在矩形高度序列的最后,添加一个高度小于所有矩形高度的虚拟矩形,这样 最后就不需要再清空一遍栈啦!

AC代码:

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

int h[N];
int top,stk[N];
int w[N];
int n;

void solve(){
    for(int i = 1;i <= n;i ++)
        cin >> h[i];
    
    LL ans = 0;
    h[n + 1] = 0;
    for(int i = 1;i <= n + 1;i ++){
        if(h[i] >= stk[top]){
            stk[++ top] = h[i];
            w[top] = 1;
        }   
        else{
            int width = 0;
            while(top && stk[top] >= h[i]){
                width += w[top];
                ans = max(ans,1LL * width * stk[top]);
                top --;
            }
            stk[++ top] = h[i];
            w[top] = width + 1;
        }
    }
    
    cout << ans << endl;
}

int main(){
    while(cin >> n && n){
        solve();
    }
    return 0;
}

【练习】城市游戏(AcWing152)

题目链接
思路:我们可以预处理出以每一个位置结尾的按列连续 F F F的长度,然后对于每一行,就转化成了上一题的问题,每一行都使用单调栈做一遍就可以啦!

AC代码:

#include<bits/stdc++.h>

using namespace std;

const int N = 1005;

char a[N][N];
int n,m;
int s[N][N];
int stk[N],w[N];
int top;

void solve(){
    cin >> n >> m;
    for(int i = 1;i <= n;i ++)
        for(int j = 1;j <= m;j ++)
            cin >> a[i][j];
    
    for(int j = 1;j <= m;j ++){
        for(int i = 1;i <= n;i ++)
            if(a[i][j] == 'R')
                s[i][j] = 0;
            else s[i][j] = s[i - 1][j] + 1;
    }
    
    int ans = 0;
    for(int i = 1;i <= n;i ++){
        top = 0;
        s[i][m + 1] = 0;
        for(int j = 1;j <= m + 1;j ++){
            if(s[i][j] > stk[top]){
                stk[++ top] = s[i][j],w[top] = 1;
            }
            else{
                int width = 0;
                while(top && s[i][j] <= stk[top]){
                    width += w[top];
                    ans = max(ans,width * stk[top]);
                    top --;
                }
                stk[++ top] = s[i][j],w[top] = width + 1;
            }
        }
    }
    
    cout << ans * 3 << endl;
}

int main(){
    solve();
    return 0;
}
Linux下串口接收到0x0D自动变为0x0A问题 Linux下串口接收到0x0D自动变为0x0A问题 2020年8月7日 用串口发送十六进制数据0x0D时,在嵌入式linux下打印出来发现变成了0x0A,查询资料发现,0x0D对应的ASCII码是CR (carriage return),即回车键,0x0A对应的ASCII码为LF (NL line feed, new line),即换行键。 0x0D CR 回车键 0x0A LF 换行键 查资料发不止是0x0D,还有0x11, 0x13 都会出现错误。 通过设置串口参数,可以解决以上问 阅读详情

相关推荐

windows11 远程桌面连接 通过代理连接RDP桌面报错 错误代码0x904 拓展错误代码0x7

打开windows Defender防火墙设置--允许应用通过防火墙更改设置--允许其他应用浏览--进入C:\WINDOWS\system32目录选择mstsc.exe进入C:\Windows\SysWOW64目录h'qmstsc.exe添加后列表里多了一个远程桌面连接,还有一个Remote Desktop Connection,配置网络权限后保存连接成功。

weixin_43978891的博客 1万+

0x17 内容简介与例题习题

二叉堆【例题】超市(AcWing145)【例题】序列(AcWing146) 许多问题都可以使用二叉堆来进行优化,下面直接看例题吧。 【例题】超市(AcWing145) 题目链接 思路: 容易想到一个贪心策略:对于每个时间ttt,在保证不卖出过期商品的情况下,尽量卖出利润前ttt大的商品。具体做法如下: 1.我们将所有商品按照过期时间从小到大排序,建立一个初始为空的小根堆,然后依次扫描每一个商品。 2.对于当前商品,如果当前过期时间等于堆中商品数目,说明前ttt天已经安排了ttt个未过期商品准备卖出,那么如果

juruo_c的博客 815

解决Win11升级失败0x80070490错误的有效方法

面对Windows 11升级失败0x80070490错误,我们可以通过卸载近期更新补丁或重装系统来解决。卸载更新补丁是一种较为简便的方法,但可能无法彻底解决所有问题。而重装系统则更为彻底,但需要注意数据备份和系统激活等问题。在选择解决方案时,可以根据自己的实际情况和需求进行选择。希望本文能够帮助大家顺利解决Windows 11升级失败的问题。

nntxthml的博客 4468

Windows11 0x80190001错误解决

Windows11 0x80190001错误 笔者当前使用的系统版本为 win11 21H2 windows11出现这样的错误,初步判断为windows的网络连接问题引起的,或者是系统当前网络设置的问题,当然也不排除win11自身系统的bug存在导致。一般这个错误会导致用户账户无法登陆、windows商店无法显示内容、个人账户无法同步或验证等相关问题。下面我们来看看具体的修复方法。 修复0x80190001错误 若当前系统中正在使用代理(VPN、梯子等软件)或游戏加速器等,首先关闭。 1、打开开始界面的.

Imagine Miracle的博客 5万+

SHAP图全解析:从理论到实践,教你如何读懂和优化模型特征

本文全面解析SHAP图,从博弈论基础到实战应用,指导读者如何解读和利用SHAP值优化机器学习模型。通过详解特征重要性条形图、小提琴图、依赖图及决策图等关键可视化工具,帮助数据科学家精准诊断模型、识别特征交互,并将洞见转化为特征工程与模型调试的实际行动,有效提升模型可解释性与性能。

svm4gardener的博客 189

从SN65HVD230芯片手册出发,手把手教你搞定3.3V CAN收发器电路(附典型应用图)

本文详细解析TI SN65HVD230芯片手册,指导完成3.3V CAN收发器电路设计。从关键参数解读到基础电路搭建,再到高级功能实现与EMC优化,提供完整的接口电路设计方案,并附典型应用图和故障排查指南,助力开发者提升CAN总线通信质量。

weixin_29997523的博客 514

windows 10、windows 11 报错 0x00000709、0x80070035 找不到网络路径

本文提供了解决共享打印机连接问题的详细教程。首先介绍了新手操作步骤:1)开启网络发现和打印机共享;2)检查相关系统服务状态;3)通过修改注册表解决连接报错问题。对于老用户,则建议:1)安装SMB1.0协议;2)启用不安全的来宾登录;3)配置Microsoft网络客户端数字签名设置。所有操作完成后均需重启电脑生效。教程区分了Windows10和11系统的设置差异,并提供了注册表修改的具体方法。

SOESC.COM 18万+

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 196

快速理解 X server, DISPLAY 与 X11 Forwarding

快速理解 X server, DISPLAY 与 X11 Forwarding

weixin_41973774的博客 3万+

Amesim基础篇-热仿真常用模型库-Thermal Hydraulic /Resistance

流体库、管路库在热管理中是必备模块,如动力电池液冷循环系统均需要Thermal Hydraulic /Resistance库的元件建模。

2201_75375391的博客 5674

Python爬虫-汽车之家各车系月销量榜数据

本文是该专栏的第41篇,后面会持续分享python爬虫干货知识。本文以某汽车平台为例,基于python采集该平台“各车系月销量”的榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 1619

# win11 连接共享打印机报错:0x00000040 或者 0x00000709或者 x0000011b 的解决方法

win11 连接共享打印机报错:0x00000040 或者0x00000709或者 x0000011b 的解决方法 “启用或关闭 Windows 功能”,勾选 “SMB 1.0/CIFS 文件共享支持”,重启电脑。 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC DWORD(32位) 值 : RpcUseNamedPipeProtocol RpcAuthnLevelPrivacyEnabled guest

段子手168的博客 8196

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1634

uds的0x11服务介绍

总之,在UDS诊断中,技师需要使用UDS工具来与车辆ECU进行通信,并使用UDS协议中的服务ID,参数和报文格式。该服务在诊断通信中用于ECU存储器的读取和写入,使UDS会话控制器可以读取ECU中存储的数据,或者将新数据写入到ECU中。总的来说,0x11服务具有非常重要的意义,它例如允许工程师从车辆ECU中读取诊断和程序相关的数据,或将新程序或数据写入到ECU中,以实现修复和升级等功能。ECU的响应:ECU收到请求后, 首先返回一个确认信号,以告知工具UDS工具请求已经收到,并告知数据长度和名称等信息。

weixin_47712251的博客 1411

【AI智能体】Hermes Agent 从部署到项目实战操作详解

Hermes Agent 桌面版从安装到实战操作详解

congge 5145

FanucROBOGUIDE软件二次开发:使用ROBOGUIDEAPI进行编程

菜单栏:位于界面顶部,提供文件、编辑、视图、插入、格式、工具、窗口和帮助等选项。工具栏:包含常用的工具按钮,如新建、打开、保存、运行、停止、机器人控制等。工作站视图:显示工作站的3D模型,用户可以在这里放置机器人、工件、工具和其他设备。机器人控制面板:用于控制机器人运动,包括手动移动、程序编辑和运行。程序编辑器:在这里可以编写和编辑机器人程序,支持Fanuc的R-30iB Plus和R-30iB控制柜的程序格式。状态栏:显示当前工作站的状态信息,如机器人位置、程序状态等。

kkchenjj的博客 1409

0x000000709共享打印机win11

电脑系统,打印机问题,0x000000709共享打印机

sunshine8426的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Linux安装X11实现GUI

X11,X Window System,以位图方式显示软件窗口,为 GUI 环境提供基本框架

XerCis的博客 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

termux-x11教程

termux-x11 是Termux的一个图形化项目,官方是这么介绍的。 A Termux add-on app providing Android frontend for Xwayland. # 安装工具 我们需要在Termux和安卓系统上安装工具以成功的运行程序。 # x11-repo(必选) Termux官方组件 pkg install x11-repo # xfce (可选) Xfce 是类 UNIX 操作系统上的轻量级桌面环境。虽然它致力于快速与低资源消耗,但仍然具有视觉吸引力且易

heStudio 2万+

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

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

蓝屏0x0000007b怎么解决:从Winxp到win11解决0x0000007b蓝屏问题

我们接下来说下win7时代硬盘模式,由于win7刚出来的时候只有IDE和AHCI硬盘模式,系统本身没有集成raid或rst模式,由于没有raid和rst模式的磁盘驱动,所以只能将硬盘模式由raid或rst硬盘模式改成ahci或IDE,要不安装win7时出现0x0000007b蓝屏;首先我们来说下xp时代硬盘模式,由于xp刚出来的时候只有IDE硬盘模式,系统本身没有集成ahci模式,所以在安装xp时要么提前注入ahci驱动,要么就将硬盘模式由ahci改成IDE,要不安装xp时出现0x0000007b蓝屏;

专注于数码科技和电脑技术! 4116

如何在Linux服务器启动X Windows、X11

什么是X X是一个协议1,并不是具体的实现。类似HTTP,WSGI一样。 一般称为X视窗系统协议,是一个图形结构,用于Unix和类Unix系统下的图形系统。 什么是X11 X11又称为X Windows系统,是X协议的第11版本,也是一种位图显示的视窗系统。 窗口系统(Windowing system)2,是GUI的一种,Linux系统有很多窗口系统的实现:X Window System、...

漫步量化 1万+

cocos2dx编辑的时候,使用c++0x11标准

(基于cocos2dx 2.2.2)现在下载的cygwin自带的gcc编译器的版本是4.8.x了,也就是全面支持c++0x11版本了。(我用的vs2013也已经大部分支持C++0x11的版本)。但是默认情况下,gcc是不支持的,需要在编译选项设置开关。 我们用文本编辑器打开proj.android\jni\Application.mk,并增加 -std=c++0x,这样就可以编译c++0x11的

海盗船 2264

Win11更新提示安装错误0x80248007怎么办?0x80248007下载错误解决方法汇总

最近有用户遇到2022-适用于 Windows11 Version 22H2的08累积更新,适合基于 x64 的系统 (KB5016632)下载错误 - 0x80248007,下文就为大家带来了详细的解决方法,需要的朋友一起看看吧。

ai520wangzha的博客 5万+

Termux-X11远程连接与X11渲染机制深度解析

Termux-X11作为Android平台上的X服务器实现,其核心设计初衷是服务于本地图形界面显示。当用户尝试在不同设备间建立远程连接时,可通过以下技术方案实现: 1. **TCP监听模式启动** 在主机设备执行`termux-x11 :0 -listen tcp -ac`命令,这将开启X服务器对TCP连接的监听。 2. **客户端连接配置** 在远程设备设置环境变量`DISPLA...

gitblog_07042的博客 1744

X11 完全指南:深入理解 X Window System

它为图形用户界面(GUI)提供基本支持,使不同的应用程序能够在同一屏幕上绘制窗口,并与用户进行交互。目前,大多数 Linux 发行版仍然默认使用 X11,但 Wayland 在 GNOME 和 KDE 等桌面环境中已经得到广泛应用。X11 最早由 MIT(麻省理工学院)在 1984 年开发,至今仍然是 Linux、BSD、Solaris 等系统的主要图形架构。本文将深入探讨 X11 的架构、关键组件、工作原理、配置方法,以及如何优化 X11 性能。在 Linux 上,最常见的 X 服务器是。

Interview_TC的博客 3703

X11协议基础与实践

X11基础实践

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值