hdu 5772 最大权闭合图

STM32F407标准库下ADC多通道DMA采集的配置与优化 本文详细介绍了STM32F407标准库下ADC多通道DMA采集的配置与优化方法。通过GPIO模拟输入配置、ADC时钟和模式设置、DMA传输参数配置等关键步骤,实现高效的多通道数据采集。文章还提供了性能优化技巧和常见问题排查指南,帮助开发者提升采样速率和稳定性。 阅读详情

链接

http://acm.hdu.edu.cn/showproblem.php?pid=5772

相关知识


http://www.blogbus.com/oibltx-logs/125657936.html
http://wenku.baidu.com/link?url=3tP4ZRiEQIEB63pXFj936pH3Gxk6NMnwks3d4do7WtbRmKjPcEC30YA9V33RH1JqO9pG8oFx2iaRJxP374fy3G6V1VmNpN6-rchMBYvMQj3

  1. 在一个图中,我们选取一些点构成集合,记为V,且集合中的出边(即集合中的点的向外连出的弧),所指向的终点(弧头)也在V中,则我们称V为闭合图。
  2. 最大权闭合图即在所有闭合图中,集合中点的权值之和最大的V,我们称V为最大权闭合图。

解析


value=w[i][j]+w[j][i]

cost[i]计算, kx为字符x在子串的个数。
cost[x]=0,kx=0

cost[x]=ax∗(kx−1)+bx,kx≠0

TotalCost=∑i=09cost[i]

ans=value−Totalcost

ans=value−∑i=0len(a[i]∗kx−b[i])

如式选择不同的子串的时候,ans将会不同。为了让ans最大,就让Totalcost最小,由此可以构建闭合图,闭合图中将点权赋值。
1. 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分)
2. 第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费)
3. 第三类:对于10种字符拆出10个点,每个点的权值为 -(b[x]-a[x]);
若选择第一类中的点,就要选择他以后的几个点,这个模型就可以想到最大流最小割问题。

建图:

由闭合图构建时,建立超级源点和超级汇点,闭合图中点权为正,与源点建容量为该点权的边,点权为负,与汇点建立容量为该点权绝对值的边,闭合图内部的边,为了不让进入最小割,容量都为inf。

代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int maxn = 100+10;
const int inf = 0x3f3f3f3f;
const int MAXN = 11000;
char s[maxn];
int a[20], b[20];
int c[maxn];
int head[MAXN];
int matrix[maxn][maxn];
int S=0, T = MAXN-10;

struct node{
    int t;
    int f;
    int next;
    node() {};
    node(int _t, int _f, int _next) {
        t = _t;
        f = _f;
        next = _next;
    }
}edge[1000000+10];
int id[maxn];
int cnt;
void init() {
    cnt=0;
    memset(head, -1, sizeof(head));
}
int N;

void add(int u, int v, int f) {
    edge[cnt] = node(v, f, head[u]);
    head[u] = cnt++;
    edge[cnt] = node(u, 0, head[v]);
    head[v] = cnt++;
}

int level[MAXN];

bool bfs() {
    memset(level, 0, sizeof(level));
    queue<int>q;
    q.push(S);
    level[S] = 1;
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        if (u == T)
            return true;
        for (int i=head[u]; i!=-1; i=edge[i].next) {
            int v=edge[i].t;
            if (level[v] == 0 && edge[i].f > 0) {
                q.push(v);
                level[v] = level[u] + 1;
            }
        }
    }
    return false;
}

int dfs(int u, int maxf) {
    if (u == T)
        return maxf;
    int ret = 0;
    for(int i=head[u]; i!=-1; i=edge[i].next) {
        int v = edge[i].t, f = edge[i].f;
        if (level[v] == level[u] + 1 && f > 0) {
            int rf =dfs(v, min(maxf-ret, f));
            edge[i].f -= rf;
            edge[i^1].f += rf;
            ret += rf;
            if (ret == maxf)
                return maxf;
        }
    }
    return ret;
}

int Dinic() {
    int flow=0;
    while (bfs()) 
        flow += dfs(0, inf);
    return flow;
}


int main()
{
    int C;
    scanf("%d", &C);
    int ca=1;
    while (C--) {
        init();
        int n;
        scanf("%d%s", &n, s);
        N=1;
        int res = 0;
        for (int i=0; i<10; i++)
            scanf("%d%d", &a[i], &b[i]);     
        for (int i=0; i<n; i++) {
            for (int j=0; j<n; j++) {
                scanf("%d", &matrix[i][j]);
                res += matrix[i][j];
            }
        }

        for (int i=0; i<n; i++) {
            c[i] = n*(n-1)/2+i+1;
            int j = s[i]-'0';
            add(c[i], T, a[j]);
        }


        int v = 1;
        for (int i=0; i<n; i++) {
            for (int j=i+1; j<n; j++) {
                  add(S, v, matrix[i][j]+matrix[j][i]);
                  add(v, c[i], inf);
                  add(v, c[j], inf);
                  v++;
            }
        }

        for (int i=0; i<10; i++)
            id[i] = n*(n-1)/2+n+i+1;


        for (int i=0; i<n; i++) {
            int u = c[i];
            int v = s[i]-'0';
            add(u, id[v], inf);
        }

        for (int i=0; i<10; i++)
            add(id[i], T, b[i]-a[i]);
        res-=Dinic();
        printf("Case #%d: %d\n", ca++, res);
    }
    return 0;
}
YOLOv11改进 | 集成FEM、FFM与SCAM即插即用模块:特征增强、融合与空间上下文建模新范式 FEM解决特征表达不足问题,增强关键特征响应FFM优化多尺度融合,提升小目标检测精度SCAM建模空间上下文,改善目标交互预测在保持YOLOv11实时性优势的同时,实现mAP+8.1%的显著提升,特别在复杂光照、密集目标、交互预测场景表现突出。其模块化设计使开发者可根据需求灵活组合,为各种复杂场景提供定制化解决方案。未来,随着跨模态扩展与神经架构搜索的深入,YOLOv11-FSC将进一步推动目标检测技术向更智能、更高效的方向发展。 阅读详情

相关推荐

实战经验:Sensor Bringup中那些坑我都帮你踩过了(避坑指南)

本文是一份详尽的Sensor Bringup实战避坑指南,总结了从I2C通信、MCLK时钟、电源管理到图像异常等关键环节的常见问题与排查方法。文章提供了系统化的调试工作流,强调先硬件后软件的排查原则,旨在帮助硬件工程师快速定位并解决Sensor启动过程中的难题,提升开发效率。

weixin_29212429的博客 574

学习笔记第二节:最大权闭合图

关于      这个算法是在接触太空飞行计划问题时接触到的。为了解决这道问题,我在网上查阅了相当多的资料,在这里整理给大家。题目点击打开链接https://www.luogu.org/problemnew/show/P2762开始     闭合图的含义,就是在一张图中,我们选取一些点构成集合,记为V,且集合中的出边所指向的终点也在V中,我们就称V为闭合图。也就是说,一张图中的点,他们的儿子也在这张...

Deep_Kevin的娱乐空间 1767

Linux音频调试实战:ALSA架构与tinymix工具的高级应用技巧

本文深入探讨了Linux音频调试的核心技术,重点解析了ALSA架构下音频信号的路由与混合机制。通过介绍轻量级命令行工具tinymix的高级应用技巧,指导开发者如何精准排查无声、音量异常、多路音频共存等复杂问题,并分享编写自动化测试脚本以提升嵌入式及智能设备音频开发效率的实战方法。

weixin_29210727的博客 101

最大权闭合子图

闭合图 首先,先了解什么是闭合图。闭合图一般指一个图中点的集合,从该集合中所有的点出发,能到达的点要求都必须在该点集中。也就是说,从该集合中出发,一定要回到该集合中,不能出到集合外。 最大权闭合图,顾名思义,就是所有闭合图中点权之和最大的那个,注意这里的权指的是点权,因为闭合图是对于点集而言的。 ...

harry12138小白的博客 2979

DataHub 架构设计与核心工作原理

DataHub 是一个第三代数据目录系统,专为现代数据栈设计,支持数据发现、协作、治理和端到端可观测性。其架构采用模型优先的设计理念,注重不同工具和系统之间的互操作性。

北斗云的博客 1224

文件上传漏洞攻击与防范方法

文件上传漏洞攻击与防范方法 文件上传漏洞简介: 文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。 文件上传漏洞危害: 上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传...

m0_38103658的博客 4万+

最大权闭合图

前置芝士:最大流最小割 一. 啥是闭合图 一件事件x发生需要一个条件: 1. y事件已经发生 2. z事件已经发生 对于这样的依赖关系 , 我们可以用闭合来来描述或者解决 有向图的闭合图(closure)(来源于 胡伯涛《最小割模型在信息学竞赛中的应用》 论文 ) 物理意义:事物间依赖关系:一个事件要发生 , 她需要的所有前提也都一定发生 最大权闭合图...

547478006的博客 317

Wireshark 4.6 TCP 流图解析:3种拥塞控制算法可视化对比

本文深入解析Wireshark 4.6的TCP流图功能,通过可视化对比Reno、Cubic和BBR三种主流拥塞控制算法的性能特征。文章提供详细的实验环境搭建方法、流图分析工具使用技巧,以及算法调优建议,帮助网络工程师优化TCP性能。

weixin_29291573的博客 446

最大权闭合图(转载)

[网络流]最大权闭合图(转载) 以下内容参考 胡伯涛 《最小割模型在信息学竞赛中的应用》,感谢他为我们提供这么优秀的论文。 看不懂以上论文的同学,可以试试看一下以下内容,本文无大量的数学符号,方便阅读理解。 首先我们由一道题来引入,见 [线性规划

chenwenxiaocom的专栏 617

分类模型AUC低于0.5?5个常见坑点排查指南(附代码示例)

本文针对分类模型AUC低于0.5的常见问题,提供了5个关键排查点及代码示例。从样本分布失衡、特征与标签脱节到量纲差异、模型初始化和数据泄露,详细解析了可能导致AUC异常的原因,并给出实用的诊断方法和解决方案,帮助开发者快速提升模型性能。

weixin_29190169的博客 240

【华为OD机试】2024年真题C卷(python)-API集群负载统计

【华为OD机试】-API集群负载统计-【华为OD机试】-API集群负载统计:某个产品的 restful API 集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。 restful API 是由多个层级构成,层级之间使用/连接,如 A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。 现在负载均衡模块需要知道给定层级上某个名字出现的频次,未出现过用0

u014481728的博客 1495

网络流——最小割求最大权闭合子图

定义有一个有向图,每一个点都有一个权值(可以为正或负或0),选择一个权值和最大的子图,使得每个点的后继都在子图里面,这个子图就叫最大权闭合子图。

CaptainChen的博客 9367

eNSP中玩转Python自动化——解锁网工新姿势(一)

Python自动化一、安装Paramiko模块二、搭建实验环境1、桥接电脑网卡2、配置交换机IP地址交换机配置测试ensp的交换机与电脑的连通性:交换机配置SSHXshell验证三、Python脚本1、执行python脚本2、同步成功 一、安装Paramiko模块 首先安装Python3 然后安装pip解释器 最后安装Paramiko模块 Windows+R打开Cmd,输入命令: pip3 install paramiko 进入python,导入 paramiko模块: import paramiko

LiBai'S BLOG 2万+

HDU5772 String problem 最大权闭合图

题目链接:点击打开链接 题目大意:有一个长度为n(n Score=Value - Cost Value=0; for(int i=1;i      for(int j=1;j           if(i!=j)               Value+=w[id[i]][id[j]];      } } cost是子序列中的每个字符出现次数有关的函数 对于字符x有 c

Green_Days 599

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

hdu 5772 String problem(最大权闭合图)

题目链接:hdu 5772 String problem 题意: 给你一个字符串,只含有数字。 你需要选择出一个子序列,使得这个子序列的权值最大。 这个子序列如果这个数字第一次出现就ans-=bx,否则就-=ax 然后如果第i个字符和第j个字符都在子序列里面,那么ans+=w[i][j] 问你最大ans是多少 官方题解: 1 #include<bits/stdc...

weixin_30347335的博客 126

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU5772 (最小割)

ProblemString problem (HDU5772) 题目大意   给定一个由数字组成的字符串(n<=100),挑选出一些字符组成一个新的字符串。   字符串的价值: sigma w[id(i)][id(j))] (i !=j) id(i)为某字符在原串中的位置,w[][]为给定矩阵。   字符串的代价: 设x为数字i出现的次数,则代价为a[i]*(x-1...

aekijekzn484879763的博客 93

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

hdu 5772 String problem(2016多校第四场1009)最大权闭合图

每个w[i][j]+w[j][i]存在依赖于字母i,j的存在,i,j的存在依赖于0~9对应数字的存在,明显的最大权闭合图。 #include #include #include #include #include #include #define maxn 10005 #define inf 100000000 using namespace std; struct pi { int t

huantwofat 370

HDU 5772 (最大权闭合图 最小割)

题目链接:点击这里题意: 给出一个序列, 问子序列的最大收益. 收益=价值-花费, 花费是子序列里面某个数字的个数的函数, 收益是任意两个下标对应的函数.题解建模: 首先将点分为3类第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分)第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费)第三类:对于10种字

morejarphone~ 1012

HDU 5772 String problem(最大权闭合图)

题意就是让你算找一个得分最大的子串题意就是让你算找一个得分最大的子串 代码:#include <map> #include <set> #include <ctime> #include <stack> #include <queue> #include <cmath> #include <string> #include <vector> #include <cstdio> #include <

Miracle_ma的专栏 517

HDU5772 String problem 最大权闭合图+巧妙建图

题意:自己看吧(不是很好说) 分析: 网络流:最大权闭合子图。 思路如下: 首先将点分为3类 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分) 第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费) 第三类:对于10种字符拆出10个点,每个点的权值为 -(b[x]-a[x]) ...

weixin_30599769的博客 141

HDU 5772 String problem(最大权闭合子图)

Description 给出一个数字串,现在要选出一个价值-代价最大的子序列,子序列价值和代价计算方法如下: 子序列的价值: sum(w[id(i)][id(j)]) (i !=j) id(i)为这个子序列中第i个字符在原串中的位置 子序列的代价: 设x为数字i出现的次数,则代价为a[i]*(x-1)+b[i] (x>0) 0 (x=0) Input 第一行为一整数T表示用例组数,每组

ZSQ 553

HDU 5772 String problem

比赛的时候觉得是最大权完全子图,其实最大权闭合图就够了。建模不够优越。 最大权闭合图。如果你不懂这个东西定义可以去看《最小割模型在信息学竞赛中的应用》。 官方题解的意思我就不重复了,说一下自己的理解。 这样建模解决了所跑流一定是完全图的问题。产生正权的边在闭合图的最上层,所以就有这样的性质:如果该边(点)的后继点已经选了,那么加上该正权边既保证了所选图还是闭合的,也一

Tak3nCpp的博客 321

hdu5772String problem

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5772 题意:给定一个只包含字符‘0’~‘9’,给定每个种字符的花费计算公式(建题面)和同时选择第i个字符和第j个字符的收益w[i][j]和w[j][i]。求选择若干字符能得到的最大收益。 分析:补一波最大权闭合图。我们对所有点对(i,j)的收益向源建容量为收益的边,1~n个位置和0~9字符向汇建花费的

Fsss 667

hdu5772-String problem(最大权闭合子图问题)

解析: 多校标答 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分)第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] (表示要花费)第三类:对于10种字符拆出10个点,每个点的权值为 -(b[x]-a[x]) 最大权闭合图用网络流求解,根据原图建立一个等价的网络,构建规则如下。 对于点权为正的节点,...

weixin_30887919的博客 117

2016多校训练hdu5855---最大权闭合图

多校第9场,太难了。对于这种网络流居然是签到提。 基础原型:有实验和很多的仪器,每一个实验依赖仪器集合但是每个仪器都有花费,但是实验可以获得正的利益,最后要求怎么采购,可以获得最大的利益。。 其中有几点注意的,首先,必须是每一个仪器只要买了都可以在任何一个实验里面是用。也就是,如果选择采购了仪器1,那么,所有的实验只要依赖1仪器都相当于拥有了。 2.每一个实验要想获得收益i,必须要所有需要的

lovewangtaotao的专栏 601

最大权闭合子图(模板)

参考博客: http://www.cnblogs.com/kane0526/archive/2013/04/05/3001557.htmlhttp://www.cnblogs.com/wuyiqi/archive/2012/03/12/2391960.htmlhttp://blog.youkuaiyun.com/sdj222555/article/details/7797534http://www.cnblo

仰望星空 5150
上一篇: hdu 3371 并查集+最小生成树
下一篇: hdu 1811 并查集+拓扑排序
nielaishan
博客等级 码龄11年 7粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值