c++复习板子
数论
GCD
点击查看
B4025 最大公约数
gcd:
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,b;
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
else ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x*10+ch-48);
ch=getchar();
}
return x*f;
}
int gcd(int a,int b) {
if(!b) return a;
return gcd(b,a%b);
}
signed main(){
a=read(),b=read();
cout<<gcd(a,b);
}
P2613 【模板】有理数取余
exgcd:
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=19260817;
int a,b;
int pow(int a,int b){
int res=1;
while(b){
if(b&1){
res=res*a%mod;
}
a=a*a%mod;
b>>=1;
}
return res;
}
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') f=-1;
else ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x*10+ch-48)%mod;
ch=getchar();
}
return x*f%mod;
}
signed main(){
a=read(),b=read();
if(!b){
cout<<"Angry!";
return 0;
}
cout<<a*pow(b,mod-2)%mod;
}
筛法
点击查看
P3383 【模板】线性筛素数
欧拉筛:
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,q,tot;
int prime[7000003]; //判断质数
bool vis[100000004];
void Prime_shai(int up){
memset(vis,1,sizeof vis);
vis[1]=0;
for(int i=2;i<=n;i++){
if(vis[i]){
prime[++tot]=i; //没有被筛就是质数
}
for(int j=1;prime[j]*i<=n&&j<=tot;j++){
vis[i*prime[j]]=0; //被筛到打个标记
if(!i%prime[j]) break; //如果prime[j]是i的因子,那么以后得最小质因数就不在是prime[x]而是prime[j]
}
}
}
int a;
signed main(){
cin>>n>>q;
Prime_shai(n);
while(q--){
cin>>a;
cout<<prime[a]<<"\n";
}
}
图论
最短路
点击查看
P3371 【模板】单源最短路径(弱化版)
SPFA :
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,u,v,w,s;
struct node{
int to,nxt,w;
}z[10000040]; //链式前向星
int cnt;
int h[1000004];
int dis[1000004];
int vis[1000004];
void add(int x,int y,int w){
z[++cnt].to=y;
z[cnt].nxt=h[x];
z[cnt].w=w;
h[x]=cnt;
}
void SPFA(int start){
for(int i=1;i<=n;i++) dis[i]=1e11,vis[i]=0;
vis[start]=1;
queue<int> p;
dis[start]=0;
p.push(start);
while(!p.empty()){
int x=p.front();
p.pop();
vis[x]=0;
for(int i=h[x];i;i=z[i].nxt){
int y=z[i].to;
if(dis[y]>dis[x]+z[i].w){
dis[y]=z[i].w+dis[x];
if(!vis[y]){
vis[y]=1;
p.push(y);
}
}
}
}
}
signed main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
scanf("%lld%lld%lld",&u,&v,&w);
add(u,v,w);
}
SPFA(s);
for(int i=1;i<=n;i++){
if(dis[i]!=1e11) cout<<dis[i]<<" ";
else cout<<"2147483647 ";
}
}
P4779 【模板】单源最短路径(标准版)
迪杰斯特拉:
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
int n,m,u,v,w,s;
struct node{
int to,nxt,w;
}z[10000040]; //链式前向星
int cnt;
int h[1000004];
int dis[1000004];
int vis[1000004];
void add(int x,int y,int w){
z[++cnt].to=y;
z[cnt].nxt=h[x];
z[cnt].w=w;
h[x]=cnt;
}
void dijie(int start){
for(int i=1;i<=n;i++) dis[i]=1e11,vis[i]=0;
dis[start]=1;
priority_queue<pii,vector<pii>,greater<pii> > p;
p.push(make_pair(0,start));
while(!p.empty()){
int x=p.top().second;
p.pop();
if(vis[x]) continue;
else{
vis[x]=1;
for(int i=h[x];i;i=z[i].nxt){
int y=z[i].to;
if(dis[y]>dis[x]+z[i].w){
dis[y]=dis[x]+z[i].w;
p.push(make_pair(dis[y],y));
}
}
}
}
}
signed main(){
cin>>n>>m>>s;
for(int i=1;i<=m;i++){
scanf("%lld%lld%lld",&u,&v,&w);
add(u,v,w);
}
dijie(s);
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
}
B3647 【模板】Floyd
Floyd:
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int a[102][102];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
a[i][j]=0x3f3f3f3f;
a[j][i]=0x3f3f3f3f;
}
}
for(int i=1;i<=m;i++){
int a1,b,c;
cin>>a1>>b>>c;
if(a[a1][b]>c){
a[a1][b]=c;
a[b][a1]=c;
} }
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][k]+a[k][j]<a[i][j]){
a[i][j]=a[i][k]+a[k][j];
a[j][i]=a[i][k]+a[k][j];
}
if(i==j){
a[i][j]=a[j][i]=0;
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
P1144 最短路计数
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int Mod=100003;
typedef pair<int,int> pii;
int cnt,n,m,x,y;
map<int,int> mp[2000040];
int h[3000004];
struct node{
int to,nxt;
}z[4000004];
void add(int x,int y){
z[++cnt].to=y;
z[cnt].nxt=h[x];
h[x]=cnt;
}
int ans[3000003];
int dis[3000004];
int vis[3000004];
void dijie(int start){
priority_queue<pii,vector<pii>,greater<pii> > p;
for(int i=1;i<=n;i++) dis[i]=1e11,vis[i]=0;
dis[start]=0;
ans[start]=1;
p.push({0,start});
while(!p.empty()){
int x=p.top().second;
p.pop();
if(vis[x]) continue;
else{
vis[x]=1;
for(int i=h[x];i;i=z[i].nxt){
int y=z[i].to;
if(dis[y]>dis[x]+1){
dis[y]=dis[x]+1;
ans[y]=ans[x];
p.push({dis[y],y});
}
else if(dis[y]==dis[x]+1){
ans[y]+=ans[x];
ans[y]%=Mod;
}
}
}
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>x>>y;
if(x==y) continue;
else{
// if(mp[x].count(y)) continue; //判重边
add(x,y);
add(y,x);
mp[x][y]=1;
mp[y][x]=1;
}
}
dijie(1);
for(int i=1;i<=n;i++){
cout<<ans[i]<<"\n";
}
}
P5960 【模板】差分约束
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m;
struct node{
int to,nxt,w;
}z[1000004];
int cnt;
int h[1000004];
void add(int x,int y,int w){
z[++cnt].to=y;
z[cnt].w=w;
z[cnt].nxt=h[x];
h[x]=cnt;
}
int dis[1000004];
int vis[1000004];
int tot[1000004];
bool SPFA(int s){
memset(dis,0x3f3f3f,sizeof(dis));
vis[s]=1;
dis[s]=0;
queue<int> p;
p.push(s);
while(!p.empty()){
int x=p.front();
p.pop();
vis[x]=0;
for(int i=h[x];i;i=z[i].nxt){
int y=z[i].to;
if(dis[y]>dis[x]+z[i].w){
dis[y]=dis[x]+z[i].w;
if(!vis[y]){
tot[y]++;
vis[y]=1;
if(tot[y]==n+1) return false;
p.push(y);
}
}
}
}
return true;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
add(b,a,c);
}
for(int i=1;i<=n;i++) add(0,i,0);
if(SPFA(0)){
for(int i=1;i<=n;i++){
cout<<dis[i]<<" ";
}
}
else{
cout<<"NO";
}
}
树论
树的直径
点击查看
B4016 树的直径
点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,a,b;
struct node{
int to,nxt;
}z[1000004];
int cnt;
int h[1000040];
void add(int x,int y){
z[++cnt].to=y;
z[cnt].nxt=h[x];
h[x]=cnt;
}
int id,maxx;
int dis[2000004];
void dfs(int x,int fa){
if(dis[x]>maxx){
maxx=dis[x];
id=x;
}
for(int i=h[x];i;i=z[i].nxt){
int y=z[i].to;
if(y==fa) continue;
else{
dis[y]=dis[x]+1;
dfs(y,x);
}
}
}
int main(){
cin>>n;
for(int i=1;i<n;i++){
cin>>a>>b;
add(a,b);
add(b,a);
}
dfs(1,0);
memset(dis,0,sizeof dis);
maxx=0;
dfs(id,0);
cout<<maxx;
}
c++复习板子的更多相关文章
- day-7
/* 倒数7天了 某一天 某一刻 某次呼吸 我们终将再分离 而我的 自传里 曾经有你 没有遗憾的诗句 诗句里 充满感激 (小仙女博客抄来的233) 是啊 就快要结束了 曲终人散 上午被错误数据卡了一小 ...
- ZJOI2019一轮停课刷题记录
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
- HAOI(十二省联考)2019 qwq记
\(\large{Day\ -1}:\) 放假了,白天大概是抱着最后一次在机房的心态复习着板子过去的.看着机房里的各位神仙丝毫不慌的颓倒是有点慌了,敲了一下多项式的板子感觉写的相当自闭,感觉AFO应该 ...
- maomao的每日动向
\(2019.02.04\) \(Nothing\) \(to\) \(do\). \(2019.02.05\) - 早上睡到\(12\)点 - 中午下午:吃饭串门拜年 - 晚上:吹爆<流浪地球 ...
- BZOJ 3992 【SDOI2015】 序列统计
题目链接:序列统计 我来复习板子了……这道题也是我写的第一发求原根啊? 求原根方法: 从小到大依次枚举原根.设当前枚举的原根为\(x\),模数为\(p\),\(p-1\)的质因数分别为\(p_1,p_ ...
- NOIP2018游记(更新完毕)
10.13 初赛 Day -1 考前 这一次的考场从暗♂德华兴改到了长沙市一中,一进去:我一看,考场在哪???这一中比长郡大了好多,而且连指示牌都没有,这时碰见了谢总,谢总告诉我们在第二教学楼.路上还 ...
- 堆模板(pascal)洛谷P3378
题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: ...
- CTSC游记
CTSC游记 day 0 到达帝都. 复习板子 day 1 第一题傻逼题啊 第二题第三题写个暴力 好了120稳了 出来一看第一题基数排序炸了? 51+10+10崩盘 day 2 答辩有意思啊 王选怎么 ...
- noip2018——题解&总结
近期正在疯狂复习某些东西,这篇博客尽量年底更完……(Day2T2除外) 好了,所有的希望都破灭了,原来这就是出题人的素质.——一个被欺骗的可怜 $OIer$ 人生中倒数第三次 $noip$ (Mayb ...
- THUSC2019 退役记
Day -inf 这一个半月潜心搞文化课,把文化课的坑填上了不少,我文化课的底子真是薄啊 一年前没想过我还挺有希望进队的,最后还差点冲上 一年后说不定会发现我搞文化课也能搞得不错呢? 一切都是未知 t ...
随机推荐
- .NET 10 首个预览版发布,跨平台开发与性能全面提升
前言 2024年2月25日,微软正式推出 .NET 10 预览版 1,标志着这一跨平台开发框架迈入新里程碑. 本次更新聚焦 JIT 编译器优化.运行时性能提升和跨平台开发体验增强,同时引入多项开发者期 ...
- Angular CLI 源码分析
准备: 安装 Node.js https://nodejs.org/: 安装 VS Code https://code.visualstudio.com/: 创建文件夹 angular-cli-sou ...
- AI与.NET系列文章之三:在.NET中使用大语言模型(LLMs)
引言 在技术迅猛发展的今天,大语言模型(Large Language Models, LLMs)已成为人工智能领域的核心驱动力之一.从智能对话系统到自动化内容生成,LLMs的应用正在深刻改变我们的工作 ...
- Web前端入门第 10 问:HTML 段落标签( <p> )嵌套段落标签( <p> )的渲染结果会怎样?
HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. 曾经有一个神奇的 bug 摆在我面前,为什么套娃一样的 HTML 语法,在段落标签 <p> 身上不生 ...
- docker push image harbor http 镜像
前言 搭建的 harbor 仓库为 http 协议,在本地登录后,推送镜像发生如下报错: docker push 192.168.xx.xx/test/grafana:v10.1.1 The push ...
- VMware虚拟化的CPU调度原理及实践建议
简介: ESXi的CPU调度原理及实践建议 ESXi的CPU调度原理 CPU调度器的设计目标 公平性:确保虚机按照各自配置的份额占用物理CPU.吞吐量:最大化物理CPU的使用率.响应性:vCPU从'就 ...
- Pydantic异步校验器深:构建高并发验证系统
title: Pydantic异步校验器深:构建高并发验证系统 date: 2025/3/25 updated: 2025/3/25 author: cmdragon excerpt: Pydanti ...
- 基于.NetCore开发 StarBlog 番外篇 (2) 深入解析Markdig源码,优化ToC标题提取和文章目录树生成逻辑
前言 虽然现在工作重心以AI为主了,不过相比起各种大模型的宏大叙事,我还是更喜欢自己构思功能.写代码,享受解决问题和发布上线的过程. 之前 StarBlog 系列更新的时候我也有提到,随着功能更新,会 ...
- 《HelloGitHub》第 108 期
兴趣是最好的老师,HelloGitHub 让你对开源感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. github.com/521xueweihan/HelloG ...
- AOT编译Avalonia应用:StarBlog Publisher项目实践与挑战
前言 最近我使用 Avalonia 开发了一个文章发布工具,StarBlog Publisher. Avalonia 是一个跨平台的 UI 框架,它可以在 Windows.Linux 和 macOS ...