22/11/24

news2025/7/24 5:07:47

1,单调队列;

(76条消息) 单调队列专题_Dull丶的博客-CSDN博客

2,kmp算法;

先是自己和自己匹配,求出ne数组,然后和另一串匹配,进行求解;

循环里三步:while,if,记录ne数组/挪串匹配;

#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define rep1(i,a,n) for( int i=(a);i<(n);++i)
#define rep2(i,a,n) for( int i=(a);i<=(n);++i)
#define per1(i,n,a) for( int i=(n);i>(a);i--)
#define per2(i,n,a) for( int i=(n);i>=(a);i--)
#define quick_cin() cin.tie(0),cout.tie(0),ios::sync_with_stdio(false)
#define memset(a,i,b) memset((a),(i),sizeof (b))
#define memcpy(a,i,b) memcpy((a),(i),sizeof (b))
#define endl "\n"
#define lowbit(m) ((-m)&(m))
#define dbug(y) cout<<(y)<<"\n"
#define dbug2(a,b) cout<<(a)<<" "<<(b)<<"\n"
#define dbug3(a,b,c) cout<<(a)<<" "<<(b)<<" "<<(c)<<"\n"
#define dbug4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<"\n"
#define tulun int e[N],ne[N],h[N],w[N],idx
#define T_solve() int T;cin>>T;while(T--)solve()
#define pi 3.14159265358979323846
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long long,long long> PLL;
typedef double dob;
const int N=1e6+10,mod=1e6+3,base=131;
char s[N],p[N];
int ne[N];
int n,m;
signed main()
{
    quick_cin();
    cin>>n>>p+1>>m>>s+1;
    for(int i=2,j=0;i<=n;i++)
    {
        while(j&&p[i]!=p[j+1])j=ne[j];
        if(p[i]==p[j+1])j++;
        ne[i]=j;
    }
    for(int i=1,j=0;i<=m;i++)
    {
        while(j&&s[i]!=p[j+1])j=ne[j];
        if(s[i]==p[j+1])j++;
        if(j==n)
        {
            cout<<i-n<<" ";
            j=ne[j];
        }
    }
    return 0;
}

3,trie树,最大异或和;

#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define rep1(i,a,n) for( int i=(a);i<(n);++i)
#define rep2(i,a,n) for( int i=(a);i<=(n);++i)
#define per1(i,n,a) for( int i=(n);i>(a);i--)
#define per2(i,n,a) for( int i=(n);i>=(a);i--)
#define quick_cin() cin.tie(0),cout.tie(0),ios::sync_with_stdio(false)
#define memset(a,i,b) memset((a),(i),sizeof (b))
#define memcpy(a,i,b) memcpy((a),(i),sizeof (b))
#define endl "\n"
#define lowbit(m) ((-m)&(m))
#define dbug(y) cout<<(y)<<"\n"
#define dbug2(a,b) cout<<(a)<<" "<<(b)<<"\n"
#define dbug3(a,b,c) cout<<(a)<<" "<<(b)<<" "<<(c)<<"\n"
#define dbug4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<"\n"
#define tulun int e[N],ne[N],h[N],w[N],idx
#define T_solve() int T;cin>>T;while(T--)solve()
#define pi 3.14159265358979323846
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long long,long long> PLL;
typedef double dob;
const int N=1e6+10,mod=1e6+3,base=131;
int a[N],son[N<<2][2],idx;
int n;
void insert(int x)
{
    int p=0;
    per2(i,30,0)
    {
        int s=x>>i&1;
        if(!son[p][s])son[p][s]=++idx;
        p=son[p][s];
    }
}
int search(int x)
{
    int p=0,res=0;
    per2(i,30,0)
    {
        int s=x>>i&1;
        if(son[p][!s])
        {
            res+=1<<i;
            p=son[p][!s];
        }
        else p=son[p][s];
    }
    return res;
}
signed main()
{
    quick_cin();
    cin>>n;
    rep2(i,1,n)
    {
        cin>>a[i];
        insert(a[i]);
    }
    int ans=0;
    rep2(i,1,n)
    {
        ans=max(ans,search(a[i]));
    }
    dbug(ans);
    return 0;
}

 4,n-皇后问题

对角线及反对角线的状态表示;

正对角线就是y+x,该线上y+x都一样

反对角线y-x都一样,但是数组下标不能为0,故统一加n;

#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define rep1(i,a,n) for( int i=(a);i<(n);++i)
#define rep2(i,a,n) for( int i=(a);i<=(n);++i)
#define per1(i,n,a) for( int i=(n);i>(a);i--)
#define per2(i,n,a) for( int i=(n);i>=(a);i--)
#define quick_cin() cin.tie(0),cout.tie(0),ios::sync_with_stdio(false)
#define memset(a,i,b) memset((a),(i),sizeof (b))
#define memcpy(a,i,b) memcpy((a),(i),sizeof (b))
#define endl "\n"
#define lowbit(m) ((-m)&(m))
#define dbug(y) cout<<(y)<<"\n"
#define dbug2(a,b) cout<<(a)<<" "<<(b)<<"\n"
#define dbug3(a,b,c) cout<<(a)<<" "<<(b)<<" "<<(c)<<"\n"
#define dbug4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<"\n"
#define tulun int e[N],ne[N],h[N],w[N],idx
#define T_solve() int T;cin>>T;while(T--)solve()
#define pi 3.14159265358979323846
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long long,long long> PLL;
typedef double dob;
const int N=1e2+10,mod=1e6+3,base=131;
int n;
char g[N][N];
int col[N],dg[N],udg[N];
void dfs(int u)
{
    if(u==n)
    {
        rep1(i,0,n)dbug(g[i]);
        cout<<endl;
        return;
    }
    int x=u;
    rep1(y,0,n)
    {
        if(col[y]||dg[y+x]||udg[y-x+n])continue;
        col[y]=dg[y+x]=udg[y-x+n]=1;
        g[x][y]='Q';
        dfs(x+1);
        g[x][y]='.';
        
        col[y]=dg[y+x]=udg[y-x+n]=0;
    }
}
signed main()
{
    quick_cin();
    cin>>n;
    rep1(i,0,n)
    rep1(j,0,n)g[i][j]='.';
    dfs(0);
    return 0;
}

5,走迷宫;

走到终点的最短路径,第一次走到的一定是最短的!因为是层向拓展,所以第一次走到的一定是最短的!;

#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define rep1(i,a,n) for( int i=(a);i<(n);++i)
#define rep2(i,a,n) for( int i=(a);i<=(n);++i)
#define per1(i,n,a) for( int i=(n);i>(a);i--)
#define per2(i,n,a) for( int i=(n);i>=(a);i--)
#define quick_cin() cin.tie(0),cout.tie(0),ios::sync_with_stdio(false)
#define memset(a,i,b) memset((a),(i),sizeof (b))
#define memcpy(a,i,b) memcpy((a),(i),sizeof (b))
#define endl "\n"
#define lowbit(m) ((-m)&(m))
#define dbug(y) cout<<(y)<<"\n"
#define dbug2(a,b) cout<<(a)<<" "<<(b)<<"\n"
#define dbug3(a,b,c) cout<<(a)<<" "<<(b)<<" "<<(c)<<"\n"
#define dbug4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<"\n"
#define tulun int e[N],ne[N],h[N],w[N],idx
#define T_solve() int T;cin>>T;while(T--)solve()
#define pi 3.14159265358979323846
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long long,long long> PLL;
typedef double dob;
const int N=1e2+10,mod=1e6+3,base=131;
int n,m;
int a[N][N];
int d[N][N];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
void bfs()
{
    queue<PII>q;
    q.push({1,1});
    d[1][1]=1;
    while(q.size())
    {
        auto t=q.front();
        q.pop();
        int x=t.first,y=t.second;
        rep1(i,0,4)
        {
            int xx=x+dx[i];
            int yy=y+dy[i];
            if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!a[xx][yy]&&!d[xx][yy])
            {
                d[xx][yy]=d[x][y]+1;
                q.push({xx,yy});
            }
        }
    }
    dbug(d[n][m]-1);
}
signed main()
{
    quick_cin();
    cin>>n>>m;
    rep2(i,1,n)
    rep2(j,1,m)cin>>a[i][j];
    bfs();
    return 0;
}

6,dijkstra算法;

注意continue的使用;

#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define rep1(i,a,n) for( int i=(a);i<(n);++i)
#define rep2(i,a,n) for( int i=(a);i<=(n);++i)
#define per1(i,n,a) for( int i=(n);i>(a);i--)
#define per2(i,n,a) for( int i=(n);i>=(a);i--)
#define quick_cin() cin.tie(0),cout.tie(0),ios::sync_with_stdio(false)
#define memset(a,i,b) memset((a),(i),sizeof (b))
#define memcpy(a,i,b) memcpy((a),(i),sizeof (b))
#define endl "\n"
#define lowbit(m) ((-m)&(m))
#define dbug(y) cout<<(y)<<"\n"
#define dbug2(a,b) cout<<(a)<<" "<<(b)<<"\n"
#define dbug3(a,b,c) cout<<(a)<<" "<<(b)<<" "<<(c)<<"\n"
#define dbug4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<"\n"
#define tulun int e[N],ne[N],h[N],w[N],idx
#define T_solve() int T;cin>>T;while(T--)solve()
#define pi 3.14159265358979323846
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long long,long long> PLL;
typedef double dob;
const int N=1e5+10,mod=1e6+3,base=131;
tulun;
void add(int a,int b,int c)
{
    w[idx]=c,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int n,m;
int dist[N];
int st[N];
void dijkstra()
{
    memset(dist,0x3f,dist);
    priority_queue<PII,vector<PII>,greater<PII>>q;
    q.push({0,1});
    dist[1]=0;
    while(q.size())
    {
        auto t=q.top();
        q.pop();
        int jl=t.first,ver=t.second;
        if(st[ver])continue;
        st[ver]=1;
        for(int i=h[ver];~i;i=ne[i])
        {
            int j=e[i];
            if(dist[j]>w[i]+jl)
            {
                dist[j]=w[i]+jl;
                q.push({dist[j],j});
            }
        }
    }
    if(dist[n]==0x3f3f3f3f)dbug(-1);
    else dbug(dist[n]);
}
signed main()
{
    quick_cin();
    memset(h,-1,h);
    cin>>n>>m;
    rep2(i,1,m)
    {
        int a,b,c;
        cin>>a>>b>>c;
        add(a,b,c);
    }
    dijkstra();
    return 0;
}

7,floyed算法;

适用数据范围小的最短路,可以求负权边;

注意初始化的方法,和dp类似,注意含义;

#pragma GCC optimize(3)
#include<bits/stdc++.h>
#define rep1(i,a,n) for( int i=(a);i<(n);++i)
#define rep2(i,a,n) for( int i=(a);i<=(n);++i)
#define per1(i,n,a) for( int i=(n);i>(a);i--)
#define per2(i,n,a) for( int i=(n);i>=(a);i--)
#define quick_cin() cin.tie(0),cout.tie(0),ios::sync_with_stdio(false)
#define memset(a,i,b) memset((a),(i),sizeof (b))
#define memcpy(a,i,b) memcpy((a),(i),sizeof (b))
#define endl "\n"
#define lowbit(m) ((-m)&(m))
#define dbug(y) cout<<(y)<<"\n"
#define dbug2(a,b) cout<<(a)<<" "<<(b)<<"\n"
#define dbug3(a,b,c) cout<<(a)<<" "<<(b)<<" "<<(c)<<"\n"
#define dbug4(a,b,c,d) cout<<(a)<<" "<<(b)<<" "<<(c)<<" "<<(d)<<"\n"
#define tulun int e[N],ne[N],h[N],w[N],idx
#define T_solve() int T;cin>>T;while(T--)solve()
#define pi 3.14159265358979323846
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;
typedef pair<long long,long long> PLL;
typedef double dob;
const int N=1e3+10,mod=1e6+3,base=131;
int d[N][N];
int n,m,k;
#define inf 0x3f3f3f3f
void floyed()
{
    rep2(k,1,n)
    rep2(i,1,n)
    rep2(j,1,n)
    d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
signed main()
{
    quick_cin();
    cin>>n>>m>>k;
    rep2(i,1,n)
    rep2(j,1,m)
    {
        if(i==j)d[i][j]=0;
        else d[i][j]=inf;
    }
    rep2(i,1,m)
    {
        int a,b,c;
        cin>>a>>b>>c;
        d[a][b]=min(d[a][b],c);
    }
    floyed();
    rep2(i,1,k)
    {
        int a,b;
        cin>>a>>b;
        if(d[a][b]>inf/2)dbug("impossible");
        else dbug(d[a][b]);
    }
    return 0;
}

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

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

相关文章

【Lilishop商城】No2-3.确定软件架构搭建二(本篇包括接口规范、日志处理)

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇只介绍重点架构逻辑&#xff0c;具体编写看源代码就行&#xff0c;读起来也不复杂~ 谨慎&#xf…

【数据聚类】基于粒子群、遗传和差分算法实现数据聚类附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

【App自动化测试】(十)特殊控件Toast识别

目录1. toast介绍2. toast定位3. 实例演示前言&#xff1a; 本文为在霍格沃兹测试开发学社中学习到的一些技术写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ &#x1f618; 1. toast介绍 Toast&#xff0c;简易的消息提示框。为了…

CANdelaStudio-从入门到深入目录

前文介绍诊断协议那些事儿专栏,为大家深入介绍了ISO 14229各个服务的基础知识、请求与响应的报文格式,详情可查看:诊断协议那些事儿,从本专题开始,将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希…

HTML5学习笔记(四)

CSS3 颜色样式 在CSS3中&#xff0c;增加了大量定义颜色方面样式的属性&#xff0c;主要包括以下3种。 ▶ opacity透明度 ▶ RGBA颜色 ▶ CSS3渐变 opacity透明度 opacity属性取值是一个数值&#xff0c;取值范围为0.0~1.0。其中0.0表示完全透明&#xff0c;1.0表示完全不透…

I/O模型

网络IO的本质 网络IO的本质就是socket流的读取&#xff0c;通常一次IO读取会涉及两个阶段与两个对象&#xff0c;其中两个对象为&#xff1a;用户进程&#xff08;线程&#xff09;Process&#xff08;Thread&#xff09;、内核对象&#xff08;kernel&#xff09;,两个阶段为…

北方地区长乐市污水厂(150000m3d)工艺设计

目 录 1设计说明书 3 1.1概述 3 1.1.1设计题目 3 1.1.2设计任务 3 1.1.3设计阶段&#xff08;设计程度&#xff09; 3 1.1.4设计依据 3 1.1.5设计原始资料 3 1.1.6设计工作量 5 1.1.7设计要求 5 1.1.8 毕业设计日期 5 1.2 设计要求 6 1.2.1 设计原则 6 1.2.3 设计内容 6 1.3 水…

PLC中ST编程的比较运算

比较运算符&#xff1a; >大于、 <小于、 >大于等于、 <小于等于、等于、 <>不等于。 BOOL类型的比较是通过1&#xff08;TRUE&#xff09;和0&#xff08;FALSE&#xff09;来比较的&#xff1b; 只有xIn_1为真&#xff0c;xIn_2为假的时候&#xff0c;xRe…

《小猫猫大课堂》1——小喵是如何开启敲代码之路的?

更新不易&#xff0c;麻烦多多点赞&#xff0c;欢迎你的提问&#xff0c;感谢你的转发&#xff0c; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真…

【Vue基础系列】vue-router 万字详解,一篇彻底搞懂

目录 一、路由的简介 二、路由基本使用 三、嵌套路由 四、路由的query参数 五、路由的params参数 六、路由的props配置 七、编程式路由导航 八、缓存路由组件 九、两个新的生命周期钩子 十、路由守卫 一、路由的简介 我们在生活中经常听到路由器&#xff0c;但关于路由…

将项目部署至云服务器的详细过程 以community项目为例

文章目录1.申请一个2核4G的云服务器&#xff0c;系统选择CentOS 7.62.使用终端连接云服务器3.使用 wget 命令下载以下安装文件4.安装jdk125.安装maven6.安装MySQL7.初始化mysql数据库8.安装Redis9.安装kafka10.安装elasticsearch及其分词工具11.安装Wkhtmltopdf12.安装tomcat13…

【Spring框架】一文带你吃透基于注解的DI技术详细教程

本文目录 文章目录本文目录&#x1f496;基于注解的DI✨概念✨[Component](https://so.csdn.net/so/search?qComponent&spm1001.2101.3001.7020)注解创建对象✨声明组件扫描器✨创建对象的四个注解✨扫描多个包的三种方式✨Value简单类型属性赋值✨Value使用外部属性配置文…

外卖项目07---git

git&#xff1a;企业、公司等 目录 一、Git概述 105 1.1Git简介 105 1.2Git下载与安装 105 二、Git代码托管服务 106 2.1常用的Git代码托管服务 106 三、Git常用命令 107 3.1Git全局配置 3.2获取Git仓库 ​编辑 ​编辑 3.3工作区、暂存区、版本库概念 3.4Git工作…

ASPICE系列:顺利通过ASPICE流程软件单元验证(SWE.4)

上次的ASPICE评估是否出了问题而您不知道原因? 或者您马上要进行第一次评估&#xff1f; 本系列文章是关于如何准备ASPICE流程软件单元验证(SWE.4)评估的。我们探究这个过程&#xff0c;预期交付以及评估人员的观点。永远记住一个想法:怎样做才能成功地通过评估? 想要成功通…

【PdgCntEditor】利用PDF目录书签编辑软件PdgCntEditor为PDF型图书快速添加书签的方法

一、给PDF加书签的两种情况 1.1 文字版PDF添加书签的理想情形 假设我们弄到了一本PDF&#xff0c;这个PDF如果是由Word或WPS转化而来&#xff0c;其中的标题也就代表了目录&#xff0c;我们可以用acrobat PDF中的AutuBookmark插件实现自动识别标题为目录的方法来添加书签。 …

『Java安全』利用反射调用MimeLauncher.run()触发RCE

文章目录前言MimeLauncherrun()MimeLauncher()反射调用MimeLauncher.run()触发RCE条件PoC完前言 rt.jar内的sun.net.www.MimeLauncher类的run方法调用了exec 据说可以有效绕过某些免杀&#xff0c;下面分析一下调用过程 MimeLauncher run() 首先&#xff1a;调用了this.m.ge…

古人的名与字、号、讳、谥有什么区别

古人复杂的名字 这个世界上想来是不存在没有名字的人&#xff0c;即便真的有人没名字&#xff0c;也会被外人赠予姓名&#xff0c;比如说一些古人典籍里的“无名氏”&#xff0c;就是专门用来形容那些没有名字也不清楚根脚的人&#xff0c;即便是现如今一些作品不知道作者是谁…

信号与线性时不变系统的傅里叶描述

1、复正弦信号和线性时不变系统的频率相应 卷积积分和卷积和傅里叶变换冲激表示信号正弦表示信号输入信号表示为延迟冲激的加权叠加输入信号为复正弦信号的加权叠加输出可以用卷积的形式来表示输出可以用傅里叶的形式来表示 (1)频率响应Frequency response 线性时不变系统对正…

Java中mybatis的Mpper代理开发的详细使用步骤

目录 前言&#xff1a; 一、全图预览 二、使用步骤 1.pom.xml里面添加依赖包 2.新建统一配置文件&#xff08;俗称数据库连接文件&#xff09; 3.新建项目 4.新建映射文件&#xff08;俗称数据库对应表xml&#xff09; 5.测试 三、文中的全部代码&#xff08;去复制可…

MySQL如何保证主备一致?

1. MySQL主备的基本原理 如下图展示的是基本的主备切换流程&#xff1a; 在状态1中&#xff0c;主库是A&#xff0c;备库是B&#xff0c;所以客户端的读写都直接方法节点A。由于节点B是节点A的备库&#xff0c;所以备库B只是将A的更新都同步过来&#xff0c;本地执行&#x…