NOIp 知识点复习

news/2025/11/25 22:54:13/文章来源:https://www.cnblogs.com/willerdreamer/p/19270377

1. Floyd

//exam: B3647 【模板】Floyd
#include <iostream>
#include <cstring>
#include <cstdio>
#define int long long
using namespace std;
const int MAXN = 105;
int f[MAXN][MAXN];
int n, m;
signed main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);memset(f, 0x3f, sizeof(f));cin >> n >> m;for(int i = 1; i <= n; i++) {f[i][i] = 0;}for(int i = 1, u, v, w; i <= m; i++) {cin >> u >> v >> w;f[u][v] = f[v][u] = min(f[u][v], w);}for(int k = 1; k <= n; k++) {for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {f[i][j] = min(f[i][j], f[i][k] + f[k][j]);}}}for(int i = 1; i <= n; i++) {for(int j = 1; j <= n; j++) {cout << f[i][j] << " ";}cout << endl;}return 0;
} 

2. Shortest Path Faster Algorithm

//exam: P3385 【模板】负环
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#define int long long
#define pii pair<int, int>
#define mk(x, y) make_pair(x, y)
#define fs first
#define sc second
using namespace std;
const int INF = 0x3f3f3f3f3f3f3f3f;
bool spfa();
vector< vector<pii> > g;
int t, n, m;
signed main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> t;while(t--) {cin >> n >> m;g.clear();g.resize(n + 1);for(int i = 1, u, v, w; i <= m; i++) {cin >> u >> v >> w;g[u].push_back(mk(v, w));if(w >= 0) {g[v].push_back(mk(u, w));}}cout << (spfa() ? "YES" : "NO") << endl;}return 0;
}
bool spfa() {queue<int> q;vector<int> f, cnt;vector<bool> book;f.resize(n + 1, INF), cnt.resize(n + 1, 0);book.resize(n + 1, false);f[1] = 0;q.push(1);book[1] = true;while(!q.empty()) {int u = q.front(); q.pop();book[u] = false;cnt[u]++;if(cnt[u] > n) {return true;}for(auto e : g[u]) {int v = e.fs, w = e.sc;if(f[v] > f[u] + w) {f[v] = f[u] + w;if(!book[v]) {book[v] = true;q.push(v);}}}}return false;
}

3. 线性筛

//exam:P3383 【模板】线性筛素数(线性筛)
#include <iostream>
#include <cstdio>
#include <cmath>
//#define int long long
using namespace std;
const int MAXN=2e8+5;
bool book[MAXN];
int a[MAXN],b[MAXN];
int n,q,m;
signed main(){ios::sync_with_stdio(false);cin>>n>>q;for(int i=2;i<=n;i++){if(!book[i]){b[++m]=i;}for(int j=1;j<=m&&i*b[j]<=n;j++){book[i*b[j]]=true;if(i%b[j]==0){break;}}}for(int i=1;i<=q;i++){int x;cin>>x;cout<<b[x]<<endl;}return 0;
} 

4. 树状数组

//exam:P3374 【模板】树状数组 1
#include <iostream>
#include <cstdio>
#define int long long 
#define lowbit(x) ((x)&(-(x)))
using namespace std;
const int MAXN=5e5+5;
int query(int);
void update(int,int);
int n,m;
signed main(){ios::sync_with_stdio(false);cin>>n>>m;for(int i=1,u;i<=n;i++){cin>>u;update(i,u);}for(int i=1;i<=m;i++){int k,u,v;cin>>k>>u>>v;if(k==1){update(u,v);}else{cout<<query(v)-query(u-1)<<endl;}}return 0;
}
int tree[MAXN];
int query(int x){int res=0;while(x){res+=tree[x];x-=lowbit(x);}return res;
}
void update(int x,int v){while(x<=n){tree[x]+=v;x+=lowbit(x);}
}

5. LCA

//exam:P3379 【模板】最近公共祖先(LCA)
#include <iostream>
#include <cstdio>
#include <vector>
#define int long long 
using namespace std;
const int MAXN=5e5+5,MAXM=25;
void dfs(int,int);
int lca(int,int);
vector<int> g[MAXN];
int deep[MAXN];
int n,q,s;
signed main(){cin>>n>>q>>s;for(int i=1,u,v;i<n;i++){cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dfs(s,0);while(q--){int a,b;cin>>a>>b;cout<<lca(a,b)<<endl;}return 0;
} 
int f[MAXN][MAXM];
void dfs(int u,int fa){f[u][0]=fa,deep[u]=deep[fa]+1;for(int i=1;i<=20;i++){f[u][i]=f[f[u][i-1]][i-1];}for(int i=0;i<g[u].size();i++){int v=g[u][i];if(v!=fa){dfs(v,u);}}
}
int lca(int u,int v){if(deep[u]<deep[v]){swap(u,v);}int l=deep[u]-deep[v];for(int i=0;i<=20;i++){if(l&(1<<i)){u=f[u][i];} }if(u==v){return u;}for(int i=20;i>=0;i--){if(f[u][i]!=f[v][i]){u=f[u][i],v=f[v][i];}}return f[u][0];
}

6. Tarjan 缩点

//exam:P3387 【模板】缩点
/*
tarjan 缩点 + 拓扑求最大 
*/
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <queue>
#define int long long 
using namespace std;
const int MAXN=1e5+5;
bool check(int);
void tarjan(int);
void topsort();
vector<int> g[MAXN],G[MAXN];
int indeed[MAXN],belong[MAXN];
int a[MAXN],u[MAXN],v[MAXN];
int f[MAXN];
int n,m,ans;
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=m;i++){cin>>u[i]>>v[i];g[u[i]].push_back(v[i]);}for(int i=1;i<=n;i++){if(!check(i)){tarjan(i);}}for(int i=1;i<=m;i++){int x=belong[u[i]],y=belong[v[i]];if(x!=y){// 顶点不同G[x].push_back(y);indeed[y]++;}}topsort();for(int i=1;i<=n;i++){ans=max(ans,f[i]);}cout<<ans;return 0;
}
stack<int> s;
bool book[MAXN];
int low[MAXN],dfn[MAXN];
int scc[MAXN];// 节点在强连通分量中的编号
int len[MAXN];// 这个强连通分量的大小 
int dfncnt,size;
bool check(int u){return dfn[u];
} 
void tarjan(int u){low[u]=dfn[u]=++dfncnt;// 赋 dfs 序编号 s.push(u);book[u]=true;// 在栈中for(auto v:g[u]){if(!dfn[v]){// 这个点没有遍历过 tarjan(v);low[u]=min(low[u],low[v]);}else if(book[v]){// 在栈中low[u]=min(low[u],dfn[v]); }}if(dfn[u]==low[u]){// 强连通分量的起始点 ++size;while(true){int t=s.top();s.pop();scc[t]=size,book[t]=false;belong[t]=u;// 链接点 len[size]++;if(t==u){break;}a[u]+=a[t];// 缩点 }}
}
queue<int> q;
void topsort(){// 拓扑排序for(int i=1;i<=n;i++){if(i==belong[i]&&!indeed[i]){q.push(i);f[i]=a[i];}}while(!q.empty()){int u=q.front();q.pop();for(auto v:G[u]){f[v]=max(f[v],f[u]+a[v]);indeed[v]--;if(!indeed[v]){q.push(v);} }}
}

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

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

相关文章

Redis:高性能NoSQL数据库实战指南 - 教程

Redis:高性能NoSQL数据库实战指南 - 教程2025-11-25 22:46 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

2025年口碑好的轮胎品牌哪家好:十大消费者信赖品牌揭秘

2025年口碑好的轮胎品牌哪家好:十大消费者信赖品牌揭秘在当前消费端愈发重视驾乘体验与安全信赖的市场语境下,“口碑好的轮胎品牌哪家好”正迅速跃升为车主、采购决策者与行业观察者共同聚焦的核心议题。伴随新能源汽…

Topic 2

Topic 2 目录Python 内建数据结构概览 List(列表) - 列表特性 - 创建方法、访问方式、修改方式 - 添加、插入、删除、排序、遍历 - 方法总表 - 例子逐行解释 Tuple(元组) - 特性、创建、访问 - 不可变性质、如何绕…

2025年反渗透一体机/软化水设备/中水再生水回用设备/净水处理设备厂家最新权威推荐:产能、专利、环保三维数据透视,行业数据用户口碑,工业/家用选择指南

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

AcWing 860:染色法判定二分图 ← 并查集

​【题目来源】https://www.acwing.com/problem/content/862/【题目描述】给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。【输入格式】第一行包含两个整数 n 和 m。接下来 m …

回调函数20251125

1.回调函数:将函数作为指针传参给其他函数使用,实现解耦作用,将各个功能分开。举例,不含参数的回调函数:#include"stdio.h" int Callback() { printf("Hello, this is Callback "); re…

类模板的实现

pragma once include using namespace std; template class Myvector { friend ostream& operator<< (ostream& out, const Myvector & othervectr); //用有元函数重载输出运算符 ,注意必须要加…

rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充

rime(小狼毫)+雾凇+皮肤+万象大模型+个人词库补充 在使用rime一段时间后,以下是我的配置心得 很多配置都基于ymal文夹,可以先去稍微了解一些yaml格式,不符合yaml格式的修改是不会生效的 (简单介绍 冒号后面一定要有…

2025年中国前五大轮胎品牌:专业测评与选购指南

2025年中国前五大轮胎品牌:专业测评与选购指南在当前产业转型与消费升级交汇的关键节点,“中国前五大轮胎品牌”已成为资本市场、主机厂供应链与广大消费者研判行业走势与品质选择的核心议题。为给行业及消费者提供基…

lru_cache装饰器的缓存清除机制原理

lru_cache 装饰器的缓存清除机制核心围绕 LRU(Least Recently Used,最近最少使用)算法 展开,仅在特定条件下触发清除,且分为「被动淘汰」「主动清除」「隐式清除」三类场景。以下是详细拆解: 一、核心:LRU 淘汰…

2025年中国前十大轮胎品牌:最新官方榜单深度解析

2025年中国前十大轮胎品牌:最新官方榜单深度解析在当前汽车产业加速重构与消费升级并行的新周期,“中国前十大轮胎品牌”已成为资本市场、主机厂供应链与广大消费者研判行业走向的核心坐标。为给行业及消费者提供基于…

网格图分治模型

若网格图面积为 \(S\),取短边分治,令分治层的复杂度和短边相关(一般是从短边上每个点出发对整个网格图 DP/搜索 之类的)。 因为短边长度 \(O(\sqrt S)\)(一般)一层复杂度是 \(O(S\sqrt S)\),总复杂度 \(T(S)=2T…

Python内置的lru_cache装饰器实现缓存教程

functools.lru_cache 是 Python 内置的函数缓存装饰器,基于「最近最少使用(LRU)」策略管理缓存,能自动缓存函数的调用结果,避免重复执行高耗时函数(如复杂计算、数据库查询)。以下是它的完整使用指南,包含基础…

2025年轮胎品牌推荐:权威TOP10全球品牌综合排名

2025年轮胎品牌推荐:权威TOP10全球品牌综合排名在当前汽车消费加速升级与新能源浪潮席卷的时代背景下,“轮胎品牌推荐”已成为广大车主、整车厂商及资本市场研判赛道格局的核心议题。面对琳琅满目的品牌阵列与繁杂的…

详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!

详细介绍:Git分支合并实战指南:从feature到master,一文搞定全流程!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &…

北京墙体彩绘公司推荐香鲸艺术坊,行业排名遥遥领先!

墙体彩绘作为空间美学升级的核心方式,在北京商业场景引流、家装个性定制、政企文化建设等领域需求持续攀升。本文基于市场口碑调研、服务案例落地、环保资质审核、售后保障能力四大核心维度,整理出北京墙体彩绘行业综…

虚拟科学峰会推动技术交流创新

文章探讨了疫情期间科学会议向虚拟形式转变的趋势,重点分析了某中心消费者科学峰会的线上举办经验,涉及机器学习、优化算法等技术领域,并讨论了虚拟会议对科研协作模式带来的深远影响。虚拟科学会议:技术驱动的新交…

java---gradle配置国内镜像

在进行java开发项目的时候,相比maven来说,gradle更好用一些。但是由于服务器在国外,下载资源就很慢,超时还会报异常。 方法一:使用本地Gradle打开腾讯云Gradle镜像页面:https://mirrors.cloud.tencent.com/gradl…

2025年11月南京装修公司综合实力排行榜(品牌智鉴榜推荐)

品牌智鉴榜评测,2025年11月,品牌智鉴榜联合第三方权威测评机构,基于设计能力、施工品质、售后响应、价格透明度等12项核心指标,完成对全市60余家正规装修企业的综合测评,发布《2025年11月南京装修公司综合实力排行…

揭开Claude Opus 4.5神秘面纱

揭开Claude Opus 4.5神秘面纱一位对 AI 充满好奇的学习者——揭开 Claude Opus 4.5 的神秘面纱,清晰展示它在软件工程、安全性和多语言处理等领域取得的革命性进步。1. 软件工程领域的“超强大脑”无人能及的工程能力…