数论

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++复习板子的更多相关文章

  1. day-7

    /* 倒数7天了 某一天 某一刻 某次呼吸 我们终将再分离 而我的 自传里 曾经有你 没有遗憾的诗句 诗句里 充满感激 (小仙女博客抄来的233) 是啊 就快要结束了 曲终人散 上午被错误数据卡了一小 ...

  2. ZJOI2019一轮停课刷题记录

    Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...

  3. HAOI(十二省联考)2019 qwq记

    \(\large{Day\ -1}:\) 放假了,白天大概是抱着最后一次在机房的心态复习着板子过去的.看着机房里的各位神仙丝毫不慌的颓倒是有点慌了,敲了一下多项式的板子感觉写的相当自闭,感觉AFO应该 ...

  4. maomao的每日动向

    \(2019.02.04\) \(Nothing\) \(to\) \(do\). \(2019.02.05\) - 早上睡到\(12\)点 - 中午下午:吃饭串门拜年 - 晚上:吹爆<流浪地球 ...

  5. BZOJ 3992 【SDOI2015】 序列统计

    题目链接:序列统计 我来复习板子了……这道题也是我写的第一发求原根啊? 求原根方法: 从小到大依次枚举原根.设当前枚举的原根为\(x\),模数为\(p\),\(p-1\)的质因数分别为\(p_1,p_ ...

  6. NOIP2018游记(更新完毕)

    10.13 初赛 Day -1 考前 这一次的考场从暗♂德华兴改到了长沙市一中,一进去:我一看,考场在哪???这一中比长郡大了好多,而且连指示牌都没有,这时碰见了谢总,谢总告诉我们在第二教学楼.路上还 ...

  7. 堆模板(pascal)洛谷P3378

    题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: ...

  8. CTSC游记

    CTSC游记 day 0 到达帝都. 复习板子 day 1 第一题傻逼题啊 第二题第三题写个暴力 好了120稳了 出来一看第一题基数排序炸了? 51+10+10崩盘 day 2 答辩有意思啊 王选怎么 ...

  9. noip2018——题解&总结

    近期正在疯狂复习某些东西,这篇博客尽量年底更完……(Day2T2除外) 好了,所有的希望都破灭了,原来这就是出题人的素质.——一个被欺骗的可怜 $OIer$ 人生中倒数第三次 $noip$ (Mayb ...

  10. THUSC2019 退役记

    Day -inf 这一个半月潜心搞文化课,把文化课的坑填上了不少,我文化课的底子真是薄啊 一年前没想过我还挺有希望进队的,最后还差点冲上 一年后说不定会发现我搞文化课也能搞得不错呢? 一切都是未知 t ...

随机推荐

  1. 使用 kubeadm 创建高可用 Kubernetes 及外部 etcd 集群

    博客链接:使用 kubeadm 创建高可用 Kubernetes 及外部 etcd 集群 前言 Kubernetes 的官方中文文档内容全面,表达清晰,有大量示例和解析 无论任何情况下都推荐先花几个小 ...

  2. minecraft mods descrip

    1. [Advanced Finders]矿物探测器 mod 显示玩家周围附近矿石的方向(指针显示水平面上可到达的矿石) 探测地下深部矿脉(箭头显示最近矿脉的方向(上/下)) 发现大型矿床时发出信号( ...

  3. C/C++显示类型转换的位拓展方式

    最近用verilator写模块的tb,在这里卡了好久(测半天都是C++写的问题) 要点 变量从小位宽到大位宽显示类型转换(explicit cast)时的位拓展方式,取决于转换前变量的符号性. 倘若转 ...

  4. LayerSkip: 使用自推测解码加速大模型推理

    自推测解码是一种新颖的文本生成方法,它结合了推测解码 (Speculative Decoding) 的优势和大语言模型 (LLM) 的提前退出 (Early Exit) 机制.该方法出自论文 Laye ...

  5. Windows 终端远程连接 Ubuntu

    博客地址:https://www.cnblogs.com/zylyehuo/ 查看 ip 的方式参考以下链接 Ubuntu 下查看 ip - zylyehuo - 博客园 在 windows 终端中执 ...

  6. exim4

    exim4 一台 debian 机器日常执行 apt update 后发现需要更新如下软件包, 之前没见过, 特此记录下. root@idebian:~# apt list --upgradable ...

  7. 附042.Kubernetes_v1.32.3生成环境高可用部署

    目录 部署组件 kubeadm介绍 kubelet介绍 kubectl介绍 方案概述 方案介绍 部署规划 节点规划 主机名配置 变量准备 互信配置 环境预配置 部署高可用组件 HAProxy安装 Ke ...

  8. Cursor预测程序员行业倒计时:CTO应做好50%裁员计划

    提供AI咨询+AI项目陪跑服务,有需要回复1 前两天跟几个业内同学做了一次比较深入的探讨,时间从15.00到21.00,足足6个小时! 其中有个问题特别有意思:从ChatGPT诞生到DeepSeek爆 ...

  9. Javascript+webdriverio实现app自动化demo

    1.新建工程和安装库 使用WebStorm新建一个空项目然后在编辑器打开终端输入如下命令: npm init -y npm install webdriverio npm install sleep ...

  10. JavaScript 单线程原理与异步编程机制

    JavaScript 单线程原理与异步编程机制 为什么 JavaScript 是单线程? JavaScript 被设计成单线程,简单来说就是 -- 浏览器里干活儿只能一个接一个排着队来,没法同时多开窗 ...