Skip to content

泉州一中信息学Blog

信息学奥赛技术分享博客

  • 登录
  • 小学oj
  • 中学oj
  • 测试页面1
  • Toggle search form

day%

Posted on 2024年7月16日 By 陈, 禹恩 day%无评论

网络流:

模板(EK):好像EK就够快了

#include<bits/stdc++.h>
using namespace std;
long long n,m,u[100005],v[100005],w[100005],head[100005],nex[100005],cnt=1,s,t,ans,fl[505][505],vis[505],pre[505],id,to,dis[100005];
queue<long long> Q;
void add(long long a,long long b,long long c)
{
    cnt++;
    u[cnt]=a,v[cnt]=b,w[cnt]=c;
    nex[cnt]=head[u[cnt]];
    head[u[cnt]]=cnt;
}
long long bfs()
{
    for(long long i=s;i<=t;i++) vis[i]=pre[i]=0;
    dis[s]=114514191810;
    while(!Q.empty()) Q.pop();
    vis[s]=1;
    Q.push(s);
    while(!Q.empty())
    {
        id=Q.front();
        Q.pop();
        //cout<<id<<endl;
        for(long long i=head[id];i!=0;i=nex[i])
        {
            to=v[i];
        //  cout<<to<<endl;
            if(w[i]>0)
            {
                if(vis[to]==0)
                {
                    dis[to]=min(dis[id],w[i]);
                    vis[to]=1;
                    Q.push(to);
                    pre[to]=i;
                    if(to==t) return 1;
                }
            }
        }
    }
    //cout<<&#039;1&#039;;
    return 0;
}
void update()
{
    ans+=dis[t];
    id=t;
    while(id!=s)
    {
        w[pre[id]]-=dis[t];
        w[pre[id]^1]+=dis[t];
        id=u[pre[id]];
    }
    return ;
}
void EK()
{
    while(bfs()!=0)
    {
        update();
    }
}
int main()
{

    return 0;
}

费用流:(EK加当前势优化dijk,很快)

#include<bits/stdc++.h>
using namespace std;
priority_queue<pair<long long,long long> > q;
long long flow,minn,ni[105][105],m,ans1;
long long to[114514],hu,hv,vis[114514],dis[114514],h[114514],k=1,n,a[105][105],ans,rd[10005],s=1,t=114514,u[114514],v[114514],w[114514],fl[114514],head[114514],nex[114514],cnt=1;
void add(int uu,int vv,int ww,int ffl)
{
    k++;
    u[k]=uu,v[k]=vv,w[k]=ww,fl[k]=ffl;
    nex[k]=head[u[k]];
    head[u[k]]=k;
    k++;
    u[k]=vv,v[k]=uu,w[k]=-ww,fl[k]=0;
    nex[k]=head[u[k]];
    head[u[k]]=k;
}
int dijk()
{
    for(int i=s;i<=t;i++) 
    {
        dis[i]=1145141919810;
        vis[i]=0;
    }
    dis[s]=0;
    q.push(make_pair(-dis[s],s));
    while(!q.empty())
    {
        hu=q.top().second;
        q.pop();
        if(vis[hu]==0)
        {
            vis[hu]=1; 
            for(int i=head[hu];i!=0;i=nex[i])
            {

                hv=v[i];
                if(vis[hv]==0)
                {
                    if(dis[hu]+h[hu]-h[hv]+w[i]<dis[hv]&&fl[i]>=1)
                    {
                        dis[hv]=dis[hu]+h[hu]-h[hv]+w[i];   
                        q.push(make_pair(-dis[hv],hv));
                        to[hv]=i;
                    }

                }
            }
        }

    }
    if(dis[t]==1145141919810) return 0;
    else return 1;
}
void FLY()
{
    dijk();
    for(int i=s;i<=t;i++) h[i]=dis[i];
    while(dijk())
    {
        for(int i=s;i<=t;i++) h[i]=h[i]+dis[i];
        minn=1145141919810;
        for(int i=t;i!=s;i=u[to[i]]) 
        {
            minn=min(minn,fl[to[i]]);
        }
        for(int i=t;i!=s;i=u[to[i]]) 
        {
            fl[to[i]]-=minn;
            fl[to[i]^1]+=minn;
        }
        ans+=minn*h[t];
        ans1+=minn;
    }
}
int main()
{
//  freopen("P3381_8.in","r",stdin);
//  freopen("compete.out","w",stdout);
    //FLY();

    return 0;
}

具体题目看洛谷吧

基本只有建图问题

几种方式:

(1)直接建图

(2)对于每一次操作贡献不同的,拆点

(3)转换为割点,最大流=最小割

训练日志

文章导航

Previous Post: Day 树论
Next Post: HLOJ-DAY 13

发表回复 取消回复

要发表评论,您必须先登录。

2025年 6月
一 二 三 四 五 六 日
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« 2月    

2024常州 Class Classic OI Problems Contest cqr的长乐集训2023 CZYZ LOC New Game NOI NOIP Password Protected PM_PK Preview Problems Retrospect Selfmade Qusetion STL The end Training Uneasy Problem 蒟蒻 通报

  • 训练日志
  • 链表
  • 入门
  • 模拟
  • dfs序
  • 并查集
  • spfa
  • 最小割
  • 矩阵树定理
  • 仙人掌
  • BSGS
  • 凸包
  • 回文自动机
  • 递推与动归
  • 堆
  • 莫队算法
  • ST表
  • Treap
  • 树套树
  • 可持久化线段树
  • 初赛
  • 搜索
  • 贪心
  • 深度优先搜索
  • 欧拉图
  • dijkstra
  • 费用流
  • 哈夫曼树
  • kruskual
  • 置换
  • 旋转卡壳
  • KMP
  • 区间动归
  • STL
  • 链表
  • 可并堆
  • sply
  • 主席树
  • 可持久化字典树
  • 算法
  • 动态规划
  • 构造
  • 广度优先搜索
  • 最短路
  • floyd
  • 最大流
  • 虚树
  • prim
  • 筛法
  • 半平面交
  • 字典树
  • 背包动归
  • 基础数据结构
  • 分块
  • 线段树
  • 替罪羊树
  • K-DTree
  • 图论
  • 二分法
  • 迭代搜索
  • 拓扑排序
  • 有上下界网络流
  • 生成树
  • 快速幂
  • 后缀数组
  • 树形动归
  • 哈希表
  • 中级数据结构
  • 平衡树
  • 可持久化数据结构
  • 数据结构
  • 三分法
  • 启发式搜索
  • 图的连通
  • 点分治
  • 博弈论
  • AC自动机
  • 状压动归
  • 单调栈
  • 树状数组
  • 高级数据结构
  • OI资料
  • 数学
  • 高精度
  • 差分约束
  • 树上倍增
  • 素数测试
  • 后缀自动机
  • 数位动归
  • 单调队列
  • 新闻
  • 几何
  • 随机化
  • 二分图染色
  • 树链剖分
  • 欧拉函数
  • manacher
  • 斜率优化
  • 离线处理
  • 信息学奥赛学长风采
  • 字符串
  • 二分图匹配
  • prufer编码
  • 卡特兰数
  • 密码学
  • 决策单调
  • 赛后总结
  • 其他
  • 2-SAT
  • 最近公共祖先
  • 矩阵乘法
  • 记忆化搜索
  • 网络流
  • Link cut tree
  • 排列组合
  • 树
  • 高斯消元
  • 乘法逆元
  • 容斥原理
  • 调和级数
  • 概率与期望
  • 模线性方程组
  • 莫比乌斯反演
  • 快速傅里叶变换
  • 扩展欧几里德
  • 最大公约数与最小公倍数

近期文章

  • DP杂题
  • 2025年2月13日模拟赛
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 3
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 2
  • HLOJ-TEST ROUND 4-T1/T2(构造)- 1

近期评论

归档

  • 2025年2月
  • 2025年1月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月

Copyright © 2025 泉州一中信息学Blog.

Powered by PressBook WordPress theme