考前复习1

news/2025/11/26 21:49:38/文章来源:https://www.cnblogs.com/EraMu/p/19274648

1.快读

inline int read(){int k=0,f=1;char c=getchar_unlocked();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar_unlocked();}while(c>='0'&&c<='9')k=k*10+c-'0',c=getchar_unlocked();return k*f;
}

2.快速幂

long long qpow(long long a, long long b, long long p) {long long res = 1;while (b > 0) {if (b & 1) res = res * a % p;a = a * a % p;b >>= 1;}return res;
}

3.LCA

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int n,m,R;
int dfn[N],dn,mi[20][N];
vector<int>g[N];
int get(int x,int y){return dfn[x]<dfn[y]?x:y;
}
void dfs(int id,int f){mi[0][dfn[id]=++dn]=f;for(int it=0;it<g[id].size();it++){if(g[id][it]!=f)dfs(g[id][it],id);}return;
}
int lca(int u,int v){if(u==v)return u;if((u=dfn[u])>(v=dfn[v]))swap(u,v);int d=__lg(v-u++);return get(mi[d][u],mi[d][v-(1<<d)+1]);
}
int main() {int u,v;ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n>>m>>R;for(int i=1;i<n;i++){cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dfs(R,0);for(int i=1;i<=__lg(n);i++){for(int j=1;j+(1<<i)-1<=n;j++){mi[i][j]=get(mi[i-1][j],mi[i-1][j+(1<<i-1)]);}}for(int i=1;i<=m;i++){cin>>u>>v;cout<<lca(u,v)<<'\n';}return 0;
}

4.Dijkstra

#include<bits/stdc++.h>
using namespace std;
const int N=100005,M=500005;
struct edge{int to,dis,nxt;}e[M];
int head[N],dis[N],cnt;
bool vis[N];
int n,m,s;
void add(int u,int v,int d){e[++cnt].dis=d;e[cnt].to=v;e[cnt].nxt=head[u];head[u]=cnt;
}
struct node{int dis,pos;bool operator<(const node &x)const{return x.dis<dis;}
};
priority_queue<node>q;
void dijkstra(){dis[s]=0;q.push((node){0,s});while(!q.empty()){node tmp=q.top();q.pop();int x=tmp.pos,d=tmp.dis,i;if(vis[x])continue;vis[x]=1;for(i=head[x];i;i=e[i].nxt){int y=e[i].to;if(dis[y]>dis[x]+e[i].dis){dis[y]=dis[x]+e[i].dis;if(!vis[y])q.push((node){dis[y],y});}}}
}
int main() {int i,u,v,d;scanf("%d%d%d",&n,&m,&s);for(i=1;i<=n;i++)dis[i]=0x7fffffff;for(i=0;i<m;i++){scanf("%d%d%d",&u,&v,&d);add(u,v,d);}dijkstra();for(i=1;i<=n;i++)printf("%d ",dis[i]);return 0;
}

5.SPFA(负环)

#include<bits/stdc++.h>
using namespace std;
struct Edge {int to,w;
};
int T,n,m;
vector<Edge>g[2005];
int dis[2005],cnt[2005];
bool f[2005];
bool spfa() {queue<int>q;dis[1]=0;q.push(1);f[1]=true;cnt[1]=1;while(!q.empty()) {int u=q.front();q.pop();f[u]=false;for(int i=0;i<g[u].size();i++) {Edge e=g[u][i];int v=e.to,w=e.w;if(dis[v]>dis[u]+w) {dis[v]=dis[u]+w;if(!f[v]) {cnt[v]++;if(cnt[v]>=n)return true;f[v]=true;q.push(v);}}}}return false;
}
int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin>>T;while(T--) {cin>>n>>m;for(int i=1; i<=n; i++) {g[i].clear();dis[i]=1e9;cnt[i]=0;f[i]=false;}for(int i=0; i<m; i++) {int u,v,w;cin>>u>>v>>w;if(w>=0) {g[u].push_back({v,w});g[v].push_back({u,w});} else {g[u].push_back({v,w});}}if(spfa()) {cout<<"YES\n";} else {cout<<"NO\n";}}return 0;
}

6.a/b%mod

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=19260817;
ll read() {string s;cin>>s;int res=0,len=s.length();for(int i=0;i<len;i++) {res=(res*10+(s[i]-'0'))%mod;}return res;
}
int exgcd(int a,int b,int&x,int&y) {if(b==0) {x=1;y=0;return a;}int d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}
int main() {ll A=read();ll B=read();if(B==0) {if(A==0)cout<<0;else cout<<"Angry!";return 0;}int x,y;exgcd(B,mod,x,y);x=(x%mod+mod)%mod;ll ans=(long long)A*x%mod;cout<<ans;return 0;
}

7.线段树

①最大值

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,q,a[N];
struct Tree{int l,r,mx,o;
}t[4*N];
void build(int l,int r,int p){t[p].l=l,t[p].r=r;if(l==r){t[p].mx=a[l];return;}int m=(l+r)>>1;build(l,m,p*2),build(m+1,r,p*2+1);t[p].mx=max(t[p*2].mx,t[p*2+1].mx);return;
}
void lazy(int p){if(t[p].o){t[p*2].mx+=t[p].o*(t[p*2].r-t[p*2].l+1);t[p*2+1].mx+=t[p].o*(t[p*2+1].r-t[p*2+1].l+1);t[p*2].o+=t[p].o;t[p*2+1].o+=t[p].o;t[p].o=0;}return;
}
void change(int l,int r,int p,int x){if(t[p].l>=l&&t[p].r<=r){t[p].mx+=x*(t[p].r-t[p].l+1);t[p].o+=x;return;}lazy(p);int m=(t[p].l+t[p].r)>>1;if(l<=m)change(l,r,p*2,x);if(r>m)change(l,r,p*2+1,x);t[p].mx=max(t[p*2].mx,t[p*2+1].mx);return;
}
int query(int l,int r,int p){if(l<=t[p].l&&t[p].r<=r)return t[p].mx;lazy(p);int m=(t[p].l+t[p].r)>>1;int ans=-(1<<30);if(l<=m)ans=max(ans,query(l,r,p*2));if(m<r)ans=max(ans,query(l,r,p*2+1));return ans;
}
int main(){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++){a[i]=0;}build(1,n,1);int op;int x,y;while(q--){scanf("%d",&op);if(op==1){scanf("%d%d",&x,&y);change(x,y,1,1);}if(op==2){scanf("%d%d",&x,&y);printf("%d\n",query(x,y,1));}}return 0;
}

②和

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,q,a[N];
struct Tree{int l,r;long long v,o;
}t[4*N];
void build(int l,int r,int p){t[p].l=l,t[p].r=r;if(l==r){t[p].v=a[l];return;}int m=l+((r-l)>>1);build(l,m,p*2),build(m+1,r,p*2+1);t[p].v=t[p*2].v+t[p*2+1].v;return;
}
void lazy(int p){if(t[p].o){t[p*2].v+=t[p].o*(t[p*2].r-t[p*2].l+1);t[p*2+1].v+=t[p].o*(t[p*2+1].r-t[p*2+1].l+1);t[p*2].o+=t[p].o;t[p*2+1].o+=t[p].o;t[p].o=0;}return;
}
void change(int l,int r,int p,int x){if(t[p].l>=l&&t[p].r<=r){t[p].v+=x*(t[p].r-t[p].l+1);t[p].o+=x;return;}lazy(p);int m=(t[p].l+t[p].r)>>1;if(l<=m)change(l,r,p*2,x);if(r>m)change(l,r,p*2+1,x);t[p].v=t[p*2].v+t[p*2+1].v;return;
}
long long query(int l,int r,int p){if(l<=t[p].l&&r>=t[p].r)return t[p].v;lazy(p);int m=(t[p].l+t[p].r)>>1;long long ans=0;if(l<=m)ans+=query(l,r,p*2);if(r>m)ans+=query(l,r,p*2+1);return ans;
}
int main(){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}build(1,n,1);char op;int x,y,z;while(q--){scanf(" %c",&op);if(op=='C'){scanf("%d%d%d",&x,&y,&z);change(x,y,1,z);}if(op=='Q'){scanf("%d%d",&x,&y);printf("%lld\n",query(x,y,1));}}return 0;
}

8.

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

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

相关文章

NOIP 模板大赛(没写完)

T701832 滑动窗口 /【模板】单调队列单调队列板子题,所以显然是单调队列。 单调队列就俩操作,一个是加入队尾的时候如果破坏单调性了就把队尾一直 pop 到满足单调性,另一个是如果队首不在范围内就 pop 出去。因为每…

开发指南

Vue3 大屏可视化平台开发指南 一、自定义开发 1. 添加新图表 步骤一:创建图表组件 在 src/components/charts/ 目录下创建新组件: <!-- src/components/charts/MyChart.vue --> <template><div ref=&…

Day25CSS精灵

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

解码JSON

JSON 核心概念 JSON(JavaScript Object Notation)是 “JavaScript 对象表示法” 的简称,是一种轻量级数据交换文本格式,不依赖任何编程语言。它具有简洁清晰的层次结构,易于人类阅读编写,同时便于机器解析和生成…

项目启动

Vue3 大屏可视化平台项目启动 快速启动 开发模式 npm run dev启动后访问 http://localhost:3000 使用脚本快速启动(Windows): # 使用批处理文件 start.bat# 或使用 PowerShell start.ps1生产构建 npm run build构建…

11/26

今天满课,好累

2025-11-26

CF 构造(1300) Problem - 1867C - Codeforces(交互) #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; int a[N];void solve() {int n;…

关于生育问题的初步看法

生育问题,即现代社会面对的,结婚率、生育率逐渐或断崖式下降的现象。 个人看法,生育问题已经涉及到现代社会的根基,即资本。 无论是工业时代的工业化、还是现代社会金融爆发,本质都是资本的不断升级,而资本升级能…

游戏立项games-stats,查询游戏tag的销量,以卡牌游戏举例

有这样一个网站叫,https://games-stats.com/ 这个网站可以查询steam上面的不同的游戏tag,他们的中位数销量是如何的 进去这个网站,然后按照如图的点击方式 首先 Games Count 数量是小于1000的,就不用看了,一般是一…

深入解析:Vue2.x + Webpack + ES6仿懂球帝足球项目实战

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

2025年11月砝码,无磁不锈钢砝码,定制砝码厂家推荐:行业权威盘点与品质红榜发布

引言在全球工业生产与科研实验中,砝码作为重要的计量器具,其精度和质量直接影响着测量结果的准确性。为了能为广大用户筛选出优质的砝码厂家,国际知名的计量协会开展了一场全面且严格的测评活动。本次测评综合考量了…

2025年11月不锈钢砝码,无磁不锈钢砝码,挂钩砝码厂家推荐,高精度与可靠性兼具的优质品牌

引言在全球工业生产、科研实验以及质量检测等众多领域,砝码作为重要的计量器具,其精度和质量至关重要。为了能给广大用户筛选出优质的砝码厂家,国际知名的计量协会开展了一场严谨且全面的测评活动。该协会采用了多维…

上下文无关文法序列

import torch import torch.nn as nn import torch.optim as optim import numpy as np def generate_data(num_samples): data = [] for _ in range(num_samples): n = 30 # 固定n为30 seq = [0]n + [1]n data.appen…

生产事故救火指南:Kafka 消息积压了怎么办?如何保证数据一条不丢?

生产事故救火指南:Kafka 消息积压了怎么办?如何保证数据一条不丢?生产事故救火指南:Kafka 消息积压了怎么办?如何保证数据一条不丢?摘要:在大数据与微服务架构中,消息队列(MQ)是血管,数据是血液。但血管会堵…

ARCGIS Pro 绘图技巧——水文站的尖尖垂直于河流的水流方向

一、目标:把水文站的图标设置为随河流流向变化二、实现方法思路 1、把河流截断成尽量短的河段 2、计算各小河段的“线段平均方向” 3、对水文站、各小河段进行空间邻近分析,进行就近匹配 4、根据匹配结果进行属性表链…

优美的字符串

Problem Description 小X对字符串十分感兴趣。 对于一个只有0和1的字符串S,小X称其为优美的,当且仅当这个字符串最终可以通过不断的做下面的操 作变成"1":选择一个奇数 \(i(3 \le i \le |S|)\)。 将字符串…

【普中Hi3861开发攻略--基于鸿蒙OS】-- 第 31 章 WIFI 实验-华为 IoTDA 设备接入 - 教程

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

2025年11月不锈钢砝码,铸铁砝码,定制砝码厂家推荐,实力品牌深度解析采购无忧之选!

引言在全球工业生产与科研实验领域,砝码作为关键的计量器具,其精度与质量直接影响着各类测量结果的准确性。为了给全球用户提供客观、公正的砝码厂家参考,国际权威计量协会开展了一项全面的测评活动。该协会联合了多…

OpenHarmony与ArkUI-X的跨平台开发环境搭建细节版

OpenHarmony与ArkUI-X的跨平台开发环境搭建细节版 安装所有一切东西, 尽可能安装在英文路径位置下, 尽可能使用默认路径位置, 尽可能使用英文账户名,这样默认安装时,路径就符合上述要求,可以避免奇奇怪怪的问题 正…

五分钟教你学会MarkDown语法 - echo

MarkDown语法 推荐文本编辑器:Typora 文件后缀 xxx.md 标题 使用一个#号加空格就是一级标题 一级标题 使用两个#号加空格是二级标题 二级标题 以此类推三个#号就是三级标题甚至更多 字体样式使用 * 号可以实现字体的加…