POJ 1466 Girls and Boys (网络流Dinic)

从来就没有会过二分图匹配, 今天带来又一二分图匹配的水题网络流做法
跑的有点慢, 是直接dinic, 无优化, 博主暂时不会
思路:
1.建图时拆点, 将每一个人强行变成两边中的元素, one is 1~n, other is n+1~2n然后对于题目给的关系就直接两个连边,
2.由于这样求出的流量是我们把边加了两次的结果, 所以我们求出的匹配数是结果÷2, 题目求的是最大独立点集, 就用节点数-结果/2

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

const int N = 1010;
const int M = 4*N*N;
const int oo = ~0U >> 1;
#define next Next
#define begin Begin
#define rep(i, s, t) for(int i = s; i <= t; ++i)
#define erep(i, u) for(int i = begin[u]; i^(-1); i = next[i])

struct Dinic {
    int S, T, n, c[M], dep[N];
    int e, begin[N], next[M], to[M];

    void init() {
        e = 0; S = 0; T = 2*n+1;
        rep(i, S, T) begin[i] = -1;
    }

    void add(int x, int y, int f) {
        to[e] = y;
        next[e] = begin[x];
        begin[x] = e;
        c[e++] = f;
    }

    void add_flow(int x, int y, int f) {
        add(x, y, f); add(y, x, 0);
    }

    queue<int> q;
    bool part() {
        rep(i, S, T) dep[i] = -1;
        q.push(S); dep[S] = 0;
        while(!q.empty()) {
            int u = q.front(), v; q.pop();
            erep(i, u)
                if(c[i]>0 && dep[v = to[i]] == -1)
                    dep[v] = dep[u]+1, q.push(v);
        }
        return dep[T] ^ (-1);
    }

    int dfs(int u, int max_flow) {
        int v, t;
        if(u == T) return max_flow;
        erep(i, u)
            if(dep[u]+1 == dep[v=to[i]] && c[i] > 0 && (t=dfs(v, min(max_flow, c[i])))) {
                c[i] -= t, c[i^1] += t;
                return t;
            }
        return 0;
    }

    int dinic(int res = 0, int t = 0) {
        while(part()) {
            while((t=dfs(S, oo)))
                res += t;
        }
        return res;
    }

    void solve() {
        while(~scanf("%d", &n)) {
            init();
            rep(i, 1, n) {
                add_flow(S, i, 1);
                char s;
                int u, len, k;
                scanf("%*d: (%d)", &len);
                while(len--) scanf("%d", &u), add_flow(i, u+n+1, 1);
                add_flow(i+n, T, 1);
            }
            printf("%d\n", n-dinic()/2);
        }
    }
}T;

int main() {
#ifndef ONLINE_JUDGE
    freopen("IP.in", "r", stdin);
    freopen("OP.out", "w", stdout);
#endif
    T.solve();
    return 0;
}
内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值