洛谷 1456 隐藏口令 (链表/队列优化)

QML教程04 - Image:搞定界面上的所有图片 本文是QML教程系列的第四篇,重点讲解Image控件的实战用法。文章从图片显示常见的变形、卡顿等问题入手,详细介绍了Image的核心属性和使用技巧。主要内容包括:图片路径的三种写法(相对路径、qrc资源、网络URL)、最重要的fillMode属性解析(PreserveAspectFit、PreserveAspectCrop、Stretch的适用场景)、性能优化方法(sourceSize设置)、异步加载(asynchronous)以及圆形头像的实现方案。 阅读详情

ps:洛谷题解里有O(n)的dp,这里就不再赘述了。

我们先来看一下这道题,我们的任务是从从一堆字符串中选出一个序列,使其字典序最小,很明显我们要找以最小的字母打头的序列,如果有多个我们再继续比对下一位。直到只剩下一个最小的字母,这就是我们的思路。

但是当我们遇到
aaaaaaaaaaaaaaaaaaaaaaaaaaab……
or
abcabcabcabcabcabcabcabcabc……

像这样的字符串就会卡成O(n^2)。

我们来观察一下这两个式子,发现他们的链表会有重叠部分。由于链表头总是最小的,所以当某链表的头被包含在前一个链表的尾部时,这个答案一定不如前一个链表优。所以这个链表我们会删去。值得一提的是,这个被删去的链表的下一位我们最好也访问一下,因为如果这个链表后面又是一个链表头,我们可以追加删去一条链表。

那我们来估一下时间复杂度,我们发现每条链表都没有重叠部分,那时间复杂度就是的链表平均长度 * 链表的条数,由于链表平均长度 * 链表条数 = 链表总长度。所以几乎是O(n)的。

实际上,很多人不是很会用链表,比如说我。我们可以观察到,我们使用的所有的链表实际上都只与链表尾部与链表头有关,那么我们只用一个只记录头与尾结构体队列就可以了,而对于删去一条链表,我们只需要阻止它重新入队就可以了。

附加代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
struct zt
{
    int f,v;
}dian[5000005];
queue<zt>q,p;
int n,ans,cnt,vis[5000005];
char num[5000005],b,c;
int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        cin>>num[i];
        if(num[i] < b||!b) b = num[i];
    }
    for(int i = 0;i < n;i ++)
        if(num[i] == b) q.push((zt){i,i});
    while(q.size() > 1)
    {
        c = '0';cnt ++;
        while(!q.empty())
        {
            zt u = q.front();q.pop();
            if(u.v + 1 >= n) u.v -= n;
            if(c != '0'&&num[u.v + 1] > c) continue;
            vis[u.v + 1] = 1;
            if(vis[u.f]) continue;
            if(c == '0') c = num[u.v + 1];
            else if(c > num[u.v + 1]) {while(!p.empty()) p.pop();c = num[u.v + 1];}
            p.push((zt){u.f,u.v + 1});
        }
        while(!p.empty())
        {
            zt u = p.front();p.pop();q.push((zt){u.f,u.v});
        }
    }
    zt u = q.front();
    ans = u.v;
    ans = (n + ans - cnt) % n;
    printf("%d",ans);
    return 0;
}
13、核心网络模块:VyOS 设备配置实战 本文详细介绍了如何使用 Ansible 核心网络模块对 VyOS 虚拟设备进行自动化配置,涵盖环境搭建、变量设置、任务编写、playbook 运行及配置验证全过程。通过实际案例展示了 Ansible 在网络设备管理中的强大功能,包括多设备支持、模板化配置、备份回滚等优势,并提供了最佳实践建议与未来发展趋势分析,帮助读者提升网络运维效率。 阅读详情

相关推荐

【收藏向】模拟电子技术超强知识点总结 20小时不挂科

模电真的有难度的一门课,一定要好好学… 用的教材是华科康华光版,其他版本教材也可参考,内容是差不多的。 话不多说直接上思维导图干货(后有思维导图高清原图链接) 1 绪论 2 运算放大器 3 二极管及其基本电路 4 场效应管及其放大电路 5 双极结型三极管及其放大电路 三种组态总结看不清,给个特写 发现虽然csdn上传的是原图,但是显示的图片不是特别清晰,在此贴出B站知乎地址,第五章之后的内容都在上面,还可以查看原图 ———————————————————— B站专栏地址(可以点击查看原图) htt

工科狗Niko的博客 1万+

洛谷P1160 队列安排 从单链表到数组实现循环双链表

数组+结构体实现循环双链表

qq_45587309的博客 385

「转载」vaptcha 等手势验证码图像识别与轨迹提取(思路)

作者:文安哲 从博客重开以后就说要更文章,鸽了蛮久了,赶紧补上一篇嫖嫖各位老公的流量。 最近看群里面大家讨论研究手势验证码比较多,然后我也顺带研究做了一下,给各位老公们分享一下做的过程。 首先,一起来康康手势验证码长啥样! 大概就是长这个样子,需要按照图像中的那条轨迹再图片上滑动,不得不说这类验证码确实体验感拉满,让人很想立马关掉这个网站。 那么言归正传,这类验证码该怎么做识...

AI悦创·编程私教1v1 3600

洛谷--链表

因为这个题的数据是1~n连续的,所以我们可以用数组的下标来代表数据的内容,比如nxt[1] = 就是指第1个人的下一个是第2个,以此类推,nxt[2] = 3,nxt[3] = 4...第10个 的下一个当然是第一个了。我们定义一个变量p,类似于一个指针,一直重复m次p取下一个的操作,然后输出出圈人的位置,然后把出圈人的前一个人指向他的下下个来跳出圈就行了。把p放在出圈人的前一个位置就可以,输出的话再输出p的下一个,然后把next[p] 改成next[next[p]]其次,链表的删除操作非常简便。

2301_79602614的博客 1122

告别CMake依赖!在Visual Studio 2022中直接配置VTK 9.4开发环境(附完整项目示例)

本文详细介绍了如何在Visual Studio 2022中直接配置VTK 9.4开发环境,无需依赖CMake。通过图文教程和完整项目示例,帮助C++开发者快速集成VTK库,简化开发流程,提升工作效率。特别适合科学可视化任务的开发者。

weixin_26804345的博客 415

F280049C_HRPWM_死区时间高精度控制与MEP技术实战解析

本文深入解析了F280049C的HRPWM模块及其基于MEP技术的死区时间高精度控制。通过实测数据与TI官方代码对比,详细阐述了DBREDHR和DBFEDHR寄存器的配置技巧、精度优化方法及常见问题调试,为电源管理和电机控制应用提供了实用的实战指南。

yolo5detector的博客 217

洛谷 P1878 舞蹈课(优先队列 + 双链表)

有 nnn 个人参加一个舞蹈课。每个人的舞蹈技术由整数来决定。在舞蹈课的开始,他们从左到右站成一排。当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞。如果不止一对,那么最左边的那一对出列。一对异性出列之后,队伍中的空白按原顺序补上(即:若队伍为 ,那么 出列之后队伍变为 )。舞蹈技术相差最小即是 aia_iai​ 的绝对值最小。任务是模拟以上过程,确定跳舞的配对及顺序。第一行一个正整数 nnn 表示队伍中的人数。第二行包含 nnn 个字符 或者 , 代表男, 代表女。第三行为

Jacob0824的博客 506

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1394

洛谷(2947)向右看齐-单调栈-链表

洛谷2947(向右看齐),单调栈、链表、

功不唐捐,玉汝于成 685

DeepSeek+即梦:AI视频创作从0到1全突破

本文为 DeepSeek 与即梦生成视频全攻略,从前期注册登录、熟悉工具界面及硬件网络准备入手,助读者开启 AI 视频创作。详细阐述利用 DeepSeek 构思脚本、即梦实现画面生成与静态图转动态视频的方法,包括提示词编写、参数调整等技巧。同时介绍后期合成音画、添加字幕特效及多平台适配要点,结合实战案例解析全流程。还分享进阶提示词优化、版权注意等避坑指南,为创作者提供从 0 到 1 的 AI 视频创作完整解决方案。

邓邓子的博客 8113

为什么一个“时间片”能折腾 Linux 十年?

时间片扩展不是抢占调度器的控制权,也不是提升优先级。在“非常短暂、非常确定”的用户态临界区内,避免线程被不必要地抢占。用户态自旋锁(user-space spinlock)无系统调用的极短临界区高并发、低延迟的数据结构操作RSEQ(Restartable Sequences)保护区间一旦线程在临界区被抢占,系统整体性能反而下降。线程 A 拿着一个用户态锁线程 B 被调度上来,开始自旋等这个锁但 A 因为时间片用完,被调度器切走CPU 白白空转,所有线程都在浪费时间。

网络技术联盟站 255

数据结构:链表(洛谷P3613题解)

一、链表的特点 链表可以用来处理数据下标不连续,数据长度动态增加的情况。 常见的有单向链表、双向链表和环形链表,本文记载单向链表的实现。 单向链表中,有显式的域,data用来存储该节点的数据,next指针指向下一个节点的地址,节点地址就是该节点在内存中的地址。 二、链表的实现 本文中采用c++实现链表的基本结构。 1.节点的基本结构 struct Node{ int data;//数据类型根据需...

痞子王的博客 2273

基于信号完整性的PCB设计原则

基于信号完整性的PCB设计建议,以单网络的信号布线作为评估对象,给出了一些最基础的设计指导,如何灵活运用,取决于设计者根据实际场景如何做取舍和判断。

一只豌豆象的博客 1758

猴子选大王(约瑟夫问题)洛谷P1996

题目: 题目描述 nn个人围成一圈,从第一个人开始报数,数到mm的人出列,再由下一个人重新从11开始报数,数到mm的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。 注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n-1 名小朋友,而该题是全部出圈。 输入格式 输入两个整数n,mn,m。 输出格式 输出一行nn个整数,按顺序输出每个出圈人的编号。 输入输出样例 输入 #1复制 10 3 输出 #1复制 3 6 9 2 ...

yyf525的博客 677

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

洛谷P1323 删数问题

洛谷P1323 删数问题 思路基本就是模拟。优先队列加链表的方式挺特别。第一次见有关于手写链表的代码,特此纪念一下。 代码非本人手写,来源于洛谷题解。写博客存粹是为了学习一下大佬的代码。 #include<bits/stdc++.h> /*#include <stdio.h> #include <algorithm> #include<iostream&g...

czyzx的博客 599

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HDU 4286 Data Handler (双向链表)

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description   You are in charge of data in a company, so you are called "Data Handler". Differ

超级菜鸟ZiP的小窝 1399

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

12/9链表 洛谷p1996p1160+12/16链表习题

(即指针)串起的珠子,无论将珠子如何摆放,当拎起第一个head珠子时,所有的珠子仍然会按。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。不能,因为作为线性结构,链表元素间通过指针进行相连,类似于用。++或--在前 先运算再执行语句 反之则先执行语句再运算。链表中节点的数目范围是 [0, 5000]-“对称元素交换”的方法是否能够反转链表?第一行:输入5个元素,输出倒数第二个元素。需要修改的是线的链接顺序。输入n个数 从尾到头输出。第二行:五个元素的值。

Ludwig_1028的博客 1176

洛谷题单-线性表(链表,队列,栈)

数据结构1-1题单数组点名寄包柜栈洗盘子洗盘子2括号匹配后缀表达式队列超市排队超市排队2约瑟夫问题链表排队记录排队模拟队列安排约瑟夫问题 数组 点名 寄包柜 栈 洗盘子 洗盘子2 括号匹配 后缀表达式 队列 超市排队 超市排队2 约瑟夫问题 链表 排队记录 排队模拟 队列安排 约瑟夫问题 ...

pingting_的博客 1967

【2022.11.11】1. 链表 --- 洛谷P1996 约瑟夫问题 的n种解法

今日开始记录学习罗勇军老师的《算法竞赛》这本书的过程,学校事较多,更新不太稳定,但能看到进度,并记录坑点。同时因为代码上注释什么的都是书上的,就不会对代码进行注释,代码全部是自己手动复现后写入文章中。

JYSimilar的博客 738

洛谷题:链表知识

题目来自洛谷社区: 我的第一种做法,用C++库里面的list,还有算法库里的find函数,感觉代码很简单,但是通过不了,运行超时。 #include <iostream> #include <list> #include <algorithm> using namespace std; int main() { list<int&gt...

sudu_su的博客 903

【洛谷P1160】队列安排【链表】

题目大意: 题目链接:https://www.luogu.org/problemnew/show/P1160 先有n−1n−1n-1个入队操作,每次两个数ppp xxx,表示第i+1i+1i+1个人插入到第ppp个人的左边或右边,然后mmm个出队操作,每次输入xxx,表示编号为xxx的人出队。如果已经出队就忽视这次操作。求最终的队列。 思路: 有插入和删除两个操作,很容易想到链表。 ...

stoorz 705

【题解】洛谷P2334 营业额统计(链表)

题解里有各种神奇的算法,实际上我们用链表模拟一下就可以解决。。 读入数据后我们记录下其序号和代表的值,然后按值从小到大进行排序,再对序号从大到小进行左右比较操作(排序后左右差值绝对值较小的一个肯定是它之前天数内营业额减当天营业额绝对值最小的一个),把答案加上,再把左右数组更新。注意到1时只剩它一个了,这时候特判把序号为1的权值输出即可。 代码很乱。。。凑合看吧 #include&lt;cs...

Rem_Inory的博客 557

【链表】洛谷_1160 队列安排

题意 给出n个人,一开始1号站在第一位,之后给出n-1个操作,每次给出一对数a b,如果b为0那么就把人i插到人a的左边,否则插到人a的右边。后面给出m个操作,每次给出一个数,代表把这个人从队列里删掉(如果已经不在队列里就忽视),最后输出这个队列。 思路 这道题我们可以用到双向链表,然后按照题目说的做就可以了。 代码 #include&lt;cstdio&gt; using ...

GOODPLACE 571

【洛谷B3631】单向链表 解题报告

令人感叹,正规写法超时,“野鸡”写法AC,不过也是因为这题是这么出的,所以才能对症下药……

Engels_Si_Fish的博客 3455

洛谷—P3156 询问学号—链表题目(数据结构算法)

【代码】(洛谷)P3156 【深基15.例1】询问学号。

2301_79724394的博客 470

【洛谷 B3656】【模板】双端队列 1 题解(链表)

Aya 衷心祝愿大家不再因为重蹈覆辙。

HEX9CF的技术博客 1653
上一篇: n皇后的二进制做法
下一篇: 引水入城(dfs的做法)洛谷p1514
loi__wzhd
博客等级 码龄10年 52粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值