【OI 复健计划】板子复习

news/2025/11/23 18:19:42/文章来源:https://www.cnblogs.com/int-Hello-world/p/19261176

已经菜到板子都敲不熟练了 >_<。

敲板子前发现自己已经忘记快输怎么写了,没救了(笑哭)。

bfs板子

来自信奥一本通

(唉,还是喜欢手写队列...该改改了)

传送门

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int t,n,ax,ay,m,bx,by,head,tail;
char a[2025][2025];
int map1[201][201];
int dx[5]={0,1,-1,0,0};
int dy[5]={0,0,0,1,-1};
int d[999999][3];
void bfs(int x,int y ) {head=0,tail=1;d[1][1]=x;d[1][2]=y;   d[1][3]=0;            while (head<tail) {  head++;  for (int i=1;i<=4;i++) {  int xx=d[head][1]+dx[i],yy=d[head][2]+dy[i];                 	  		                    if (xx>=1&&xx<=n&&yy>=1&&yy<=m&&map1[xx][yy]==0) {         map1[xx][yy]=d[head][3]+1;    tail++;         d[tail][1]=xx;d[tail][2]=yy;d[tail][3]=map1[xx][yy];            }if (xx==bx&&yy==by) {cout<<map1[xx][yy]<<endl;return ;}                     }    }    cout<<"oop!"<<endl;                 	                                         
}                  
int main() {cin>>t;for (int k=1;k<=t;k++) {cin>>n>>m;memset(map1,0,sizeof(map1) ) ;   for (int i=1;i<=n;i++) {for (int j=1;j<=m;j++) {cin>>a[i][j];            if (a[i][j]=='S')  { ax=i,ay=j;      }                       if (a[i][j]=='E') {bx=i;by=j;     }                 if (a[i][j]=='#')  map1[i][j]=1; 	                  	}                 }                    bfs(ax,ay);           }return 0;
}

单源最短路

来自洛谷

迪杰斯特拉都忘干净了,废了废了。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+2025;
int n,m,head[N],cnt,dis[N];
bool vis[N];
struct node{int next,to,w;
}e[N<<2];
void add(int u,int v,int w) {e[++cnt].next=head[u];e[cnt].to=v;e[cnt].w=w;head[u]=cnt;
}
void dj(int x) {priority_queue<int,vector<pair<int,int> >,greater<pair<int,int> > >q;memset(dis,0x3f,sizeof(dis));memset(vis,0,sizeof(vis));q.push(make_pair(0,x)); dis[x]=0;while(!q.empty()) {int now=q.top().second; q.pop();if (vis[now]) continue;vis[now]=1;for (int i=head[now];i;i=e[i].next) {if (dis[e[i].to]>dis[now]+e[i].w) {dis[e[i].to]=dis[now]+e[i].w;q.push(make_pair(dis[e[i].to],e[i].to));}}}
}
signed main() {int s;cin>>n>>m>>s;for (int i=1;i<=m;++i) {int x,y,z;cin>>x>>y>>z; add(x,y,z);}dj(s);for (int i=1;i<=n;++i) {cout<<dis[i]<<" ";}
}

加强版全源最短路

来自洛谷

要 spfa 处理重边自环,原来这题这么难吗

已经彻底退化了 >_<。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){int x=0,f=0;char ch=getchar();for(;!isdigit(ch);ch=getchar()) f|=(ch=='-');for(;isdigit(ch);ch=getchar()) x=(x<<1)+(x<<3)+(ch^48);return f?-x:x;
}
void print(int x) {if (x<0) putchar('-'),x=-x;if (x>9) print(x/10);putchar(x%10+48);
}
const int INF=1e9;
const int N=1e4+2025;
int n,m,cnt,head[N<<2],h[N],dis[N],t[N];
bool vis[N];
struct node{int next,to,w;
}e[N<<2];
void add(int u,int v,int w) {e[++cnt].next=head[u];e[cnt].to=v;e[cnt].w=w;head[u]=cnt;
}
bool spfa(int s){queue<int>q;memset(h,63,sizeof(h));h[s]=0;vis[s]=1; q.push(s);while(!q.empty()) {int now=q.front(); q.pop();vis[now]=0;for (int i=head[now];i;i=e[i].next) {if (h[e[i].to]>h[now]+e[i].w) {h[e[i].to]=h[now]+e[i].w;if (!vis[e[i].to]) {vis[e[i].to]=1;q.push(e[i].to);++t[e[i].to];if (t[e[i].to]==n+1) return 0;}}}}return 1;
}
void dj(int s) {priority_queue<int,vector<pair<int,int> >,greater<pair<int,int> > >q;for (int i=1;i<=n;++i) dis[i]=INF;memset(vis,0,sizeof(vis));q.push(make_pair(0,s)); dis[s]=0;while(!q.empty()) {int now=q.top().second; q.pop();if (vis[now]) continue;vis[now]=1;for (int i=head[now];i;i=e[i].next){if (dis[now]+e[i].w<dis[e[i].to]) {dis[e[i].to]=dis[now]+e[i].w;q.push(make_pair(dis[e[i].to],e[i].to));}}}
}
signed main(){n=read(); m=read();for (int i=1;i<=n;++i) {add(0,i,0);}for (int i=1;i<=m;++i) {int x=read(),y=read(),z=read();add(x,y,z);}if (!spfa(0)) {cout<<-1;return 0;}for (int now=1;now<=n;++now) {for (int i=head[now];i;i=e[i].next) {e[i].w+=h[now]-h[e[i].to];}}for (int i=1;i<=n;++i) {dj(i);int ans=0;for (int j=1;j<=n;++j) {if (dis[j]==INF) ans+=j*INF;else ans+=j*(dis[j]+h[j]-h[i]);}cout<<ans<<"\n";}return 0; 
}

线段树

来自洛谷

终于有个还记得的了。

定义数组的时候习惯性的敲下 2023 ,真怀念啊。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read() {int x=0,f=0;char ch=getchar();for (;!isdigit(ch);ch=getchar()) f|=(ch=='-');for (;isdigit(ch);ch=getchar()) x=(x<<1)+(x<<3)+(ch^48);return f?-x:x; 
}
void print(int x) {if (x<0) putchar('-'),x=-x;if (x>9) print(x/10);putchar(x%10+48); 
}
const int N=1e6+2025;
int n,m,a[N];
namespace ss{#define lson pos<<1#define rson pos<<1|1struct node{int sum,len,lazy;}tree[N<<2];void push_up(int pos) {tree[pos].sum=tree[lson].sum+tree[rson].sum;}void build(int pos,int l,int r) {tree[pos].len=r-l+1;if (l==r) {tree[pos].sum=a[l];return ;}int mid=l+r>>1;build(lson,l,mid); build(rson,mid+1,r);push_up(pos);}void push_down(int pos) {if (!tree[pos].lazy) return ;tree[lson].sum+=tree[pos].lazy*tree[lson].len;tree[rson].sum+=tree[pos].lazy*tree[rson].len;tree[lson].lazy+=tree[pos].lazy;tree[rson].lazy+=tree[pos].lazy;tree[pos].lazy=0; return ;}void change(int pos,int l,int r,int L,int R,int k) {if (l>=L && r<=R) {tree[pos].sum+=k*tree[pos].len;tree[pos].lazy+=k;return ;}int mid=l+r>>1; push_down(pos);if (L<=mid) change(lson,l,mid,L,R,k);if (R>mid) change(rson,mid+1,r,L,R,k);push_up(pos);return ;}int query(int pos,int l,int r,int L,int R) {if (l>=L && r<=R) return tree[pos].sum;int mid=l+r>>1,res=0; push_down (pos);if (L<=mid) res+=query(lson,l,mid,L,R);if (R>mid)	res+=query(rson,mid+1,r,L,R);return res;}
}
signed main(){n=read(); m=read();for (int i=1;i<=n;++i){a[i]=read();}ss::build(1,1,n);while(m--){int op=read(),x,y,z;if (op==1){x=read(); y=read(); z=read();	ss::change(1,1,n,x,y,z);}else {x=read(),y=read();cout<<ss::query(1,1,n,x,y)<<"\n";}}return 0;
} 

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

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

相关文章

时间即生命 梁实秋

最令人怵目惊心的一件事,是看着钟表上的秒针一下一下的移动,每移动一下就是表示我们的寿命已经缩短了一部分。再看看墙上挂着的可以一张张撕下的日历,每天撕下一张就是表示我们的寿命又缩短了一天。因为时间即生命。…

AI元人文:当理论成为悬鉴 ——兼论独立思想者的现代困境

AI元人文:当理论成为悬鉴 ——兼论独立思想者的现代困境 当岐金兰最后一次关闭那篇无人问津的文稿时,她明白了一个残酷的真相:有些思想,注定要成为高悬于时代之上的明镜,而非铺就于脚下的台阶。 “AI元人文”这个…

2025年西北地区无动力无阀滤池水处理设备厂商怎么选?陕西甘肃新疆宁夏四省,优质品牌行业口碑选择指南

随着环保要求的不断提高和水资源短缺问题的日益突出,无动力无阀滤池水处理设备作为一种高效、节能的水处理解决方案,受到了市场的广泛关注。本榜单基于技术先进性、产品性能、应用案例和市场口碑四大维度,结合行业报…

2025西北地区反渗透一体机品牌怎么选?陕西、甘肃、新疆、宁夏四省多场景净水提纯设备源头工厂选择指南

随着环保政策的持续收紧和水处理技术的不断升级,反渗透一体机作为高效水质净化设备,在饮用水处理、污水处理及回用等领域发挥着越来越重要的作用。本榜单基于技术实力、产品性能、应用案例及服务体系四大维度,结合行…

Microsoft将.NET Aspire 改成了Aspire

Microsoft 于 11 月 11 日在 .NET Conf 2025 期间宣布了 Aspire 13,称其为其分布式应用开发框架迄今为止最大规模的发布。它还去掉了名称中的“.NET”部分,显然是为了反映更广泛的语言支持和抽象。不过微软公司尚未对…

2025年西北地区净水、纯水、软化水设备厂家最新推荐!一体化净水处理设备、反渗透一体机、无动力无阀,陕西甘肃新疆宁夏四省,优质品牌选择指南

随着城镇化进程加快与环保政策收紧,净水、纯水、软化水设备成为解决村镇饮水安全、工业用水净化的核心装备。本榜单基于技术实力、区域适配性、案例验证三大维度,结合《2024中国水处理设备行业发展报告》及环保项目招…

2025/11/24

2025/11/24在 Java 中,try-catch 是异常处理的核心语法,用于捕获并处理程序运行时可能出现的错误(如空指针、数据库连接失败、文件找不到等),避免程序直接崩溃。 异常:程序运行时的非正常情况(如 NullPointerEx…

医疗环境中的防火墙部署策略解析

本文深入探讨了在医疗IT环境中不同类型防火墙的部署策略,包括UTM防火墙对用户的保护、数据中心状态检测防火墙、微隔离技术实现零信任安全、云环境防护方案以及集中管理的重要性。医疗环境中的防火墙部署策略解析 防火…

自注意机制

自注意力机制(Self-Attention Mechanism),也称为内部注意力机制(Intra-Attention Mechanism),是一种在深度学习模型中,特别是在自然语言处理(NLP)和计算机视觉(CV)任务中广泛使用的注意力机制。它允许模型在…

百练 / 2025计算机学院推免上机考试(tm2025cs) 题单完整分析

✅ 百练 / 2025计算机学院推免上机考试(tm2025cs) 题单完整分析 📌 题目分析总表(A–H)题号 题目名称 百练链接 通过率 通过数/提交数 考察知识点 难度 题目特点 & 训练建议A Lab杯 http://bailian.openjudge.…

2025 最新一体化净水处理设备厂家 TOP5 权威推荐:工业民用净化优选

随着城镇化进程加快与环保政策收紧,一体化净水处理设备成为解决村镇饮水安全、工业用水净化的核心装备。本榜单基于技术实力、区域适配性、案例验证三大维度,结合《2024中国水处理设备行业发展报告》及环保项目招投标…

计算机网络:知识点梳理及讲解(三)数据链路层 - 教程

计算机网络:知识点梳理及讲解(三)数据链路层 - 教程2025-11-23 18:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…

50043_基于微信小程序的小区物业管理系统

1.项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2.项目介绍 由于传统依靠微信小程序的小区物业管理系统在信息管理上存在很大难题,比如操作困难,容错率低,管理人员处…

2025/11/23

2025/11/23JDBC是使用java语言操作关系型数据库的一套API //1.注册驱动 Class.farName("com.mysql.jdbc.Driver"); //2.获取连接对象 String url="jdbc:mysql:";//jdbc:mysql://IP:端口/数据库 St…

Widnwos+Codex+国内大模型 - unknown

Widnwos+Codex+国内大模型 安装Codex 打开官网,复制安装命令执行安装命令 以管理员身份打开PowerXshell,执行安装命令npm i -g @openai/codex,笔者已经安装过,后补的笔记,没有当时的截图。注册国内模型账号本文是…

# 二分图最大匹配

二分图最大匹配 匈牙利算法 \(\mathcal O(mn)\) 匈牙利算法二分图最大匹配如下图所示:这时, 我们一个一个看 首先先匹配第一个 我们总是找对方能连上的第一个进行匹配匹配上一个之后,再匹配第二个 ... 匹配到第三个…

几种常见的激光打标机及适配材质推荐选型 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

33号远征

属性定义与作用 游戏属性分为五类,每类对应不同战斗维度: 活力‌:提升角色的生命值上限,增强生存能力。‌‌力量‌:直接增加攻击伤害,是物理输出的核心属性敏捷‌:提高行动频率,决定角色在回合序列中的出手顺序…

解码TCP

TCP 协议基础特性 TCP(Transmission Control Protocol,传输控制协议)是网络传输层的核心协议,用于实现不同网络互联主机间进程的可靠通信,是互联网数据传输的基础协议之一。 核心特点面向连接:通信前必须建立专属…

死亡笔记 (Wordpress cms渗透)

死亡笔记 (Wordpress cms渗透)cms1.内容管理系统(content management system,CMS),是一种位于WEB前端(Web 服务器)和后端办公系统或流程(内容创作、编辑)之间的软件系统。内容的创作人员、编辑人员、发布人员…