BZOJ1479 最大获利

bzoj1296【SCOI2009】粉刷匠 DP 阅读详情

题目描述

新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研究、站址勘测、最优化等项目。

在前期市场调查和站址勘测之后,公司得到了一共 N 个可以作为通讯信号中转站的地址,而由于这些地址的地理位置差异,在不同的地方建造通讯中转站需要投入的成本也是不一样的,所幸在前期调查之后这些都是已知数据:建立第 i个通讯中转站需要的成本为 P_iPi​ (1≤i≤N)。

另外公司调查得出了所有期望中的用户群,一共 M 个。关于第 i 个用户群的信息概括为 A_iAi​ , B_iBi​ 和 C_iCi​ :这些用户会使用中转站 A i 和中转站 B i 进行通讯,公司可以获益 C_iCi​ 。(1≤i≤M, 1≤A_iAi​ , B_iBi​ ≤N)

THU 集团的 CS&T 公司可以有选择的建立一些中转站(投入成本),为一些用户提供服务并获得收益(获益之和)。那么如何选择最终建立的中转站才能让公司的净获利最大呢?(净获利 = 获益之和 – 投入成本之和)

解析:
最大权闭合子图的基本应用。源点向所有用户连流量为收益的边,所有中转站向汇点连流量为成本的边,用户所需要的中转站,由用户向需要的中转站连inf边,最后用总收益减去最小割(最大流)就是答案,原因很简单,如果割掉用户的边,那么就舍弃掉一部分收益,可以看做损失,如果割掉中转站的边,那么就付出一定代价,可以看做损失,又因为不会割掉INF的边,所以就巧妙的解决了选A必须选B的问题。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#define inf 1e9
using namespace std;
struct point
{
    int next;
    int dis;
    int to;
}e[1000010];
int n,m,num,s,t,a,b,c,ans;
int head[600010],h[60010];
void add(int from,int to,int dis)
{
    e[num].next=head[from];
    e[num].to=to;
    e[num].dis=dis;
    head[from]=num++;
}
bool bfs()
{
    memset(h,0,sizeof(h));
    h[s]=1;
    queue<int>q;
    q.push(s);
    while(!q.empty())
    {
        int x=q.front();
        q.pop();
        for(int i=head[x];i!=0;i=e[i].next)
        {
            int to=e[i].to;
            if(!h[to]&&e[i].dis)
            {
                q.push(to);
                h[to]=h[x]+1;
            }
        }
    }
    return h[t];
}
int dfs(int x,int dis)
{
    if(x==t)
        return dis;
    int sum=0;
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(h[to]==h[x]+1&&e[i].dis)
        {
            int diss=dfs(to,min(dis,e[i].dis));
            if(diss>0)
            {
                sum+=diss;
                dis-=diss;
                e[i].dis-=diss;
                e[i^1].dis+=diss;
                if(!dis)
                    break;
            }
        }
    }
    if(!sum)
        h[x]=-1;
    return sum;
}
int dinic()
{
    int tot=0;
    while(bfs())
        tot+=dfs(s,inf);
    return tot;
}
int main()
{
    scanf("%d%d",&n,&m);
    t=m+n+1;
    for(int i=1;i<=n;i++)
    {
        int w;
        scanf("%d",&w);
        add(i,0,0);
        add(0,i,w);
    }
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d%d",&a,&b,&c);
        ans+=c;
        add(i+n,a,0);
        add(a,i+n,inf);
        add(i+n,b,0);
        add(b,i+n,inf);
        add(t,i+n,0);
        add(i+n,t,c);
    }
    printf("%d",ans-dinic());
    return 0;
}


STM32H723串口接收全为0 & CAN错误中断问题 STM32H723串口接收全为0 和 叠加的导致CAN错误问题 阅读详情

相关推荐

VOLTE信令流程-IMS注册篇(五)

目录 VOLTE信令流程-IMS 注册 VOLTE信令流程-IMS 注册/注销 VOLTE信令流程-VoLTE呼叫流程 VoLTE-VoLTE VoLTE-CS CS-VoLTE CS-CS VOLTE信令流程 VOLTE信令流程-VOLTE-VOLTE信令 VOLTE信令流程-INVITE详细信息 VOLTE信令流程-eSRVCC信令流程 VOLTE信令流程-IP短信 VOLTE信令流程-IMS 注册 IMS注册流程简述  获取鉴权向量 IMS用户将注...

gender123的博客 2万+

最大获利

问题 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 ...

刘猿猿 389

QMI8658A和QMC5883L传感器校准全攻略:从零偏校准到椭球拟合

本文详细解析了QMI8658A和QMC5883L传感器的校准方法,从零偏校准到椭球拟合,涵盖了9轴运动传感器的核心误差来源及补偿技术。通过实战案例和数学建模,帮助开发者提升传感器精度,适用于无人机、AR/VR等智能硬件应用。

weixin_29189381的博客 158

省选专练 [NOI2006]最大获利(profit)

模板最大权闭合图。对于边权拆除一个点和两个连上的无穷大边#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<queue> using na...

dingwufu9301的博客 311

可调电源的电路设计

可调电源在电路调试中经常用到,可调电源分为两种2-5v(非0点可调)和0-5v(低至0点可调)可调两种。 对于第一种非0点电压的可调范围,其主要是由于开关电源或LDO芯片输出的最小电压为一个固定电压值,非0范围。因此通过调节开关电源或LDO端的反馈电阻的设计模型,其电压可调范围都与芯片的参考电压有关。 基于开关电源的可调电压设计电路 因芯片U2的输出参考电压VSENSE管脚为1.22v。因此,通过调节可调电阻R8的数值,其芯片输出的最低电压一定不小于1.22v。当然此种方案是手动可调输出电压的设计,如

weixin_42257266的博客 9732

教你搞懂RT-Thread的移植和配置ENV工具环境

RT-Thread的移植和配置ENV工具环境

Troubadour~的博客 8264

bzoj1497 NOI2006 最大获利 最小割

woc我真的想打人了,inf值如果不调到最大就tle是什么鬼?????我整整调了将近一个小时啊淦! 。。 连边的话,看amber的论文就好了,然后形成最大权封闭子图,s向正权点连边,负权点向t连边,容量都为权值,可以证明一个方案和一个割一一对应。/************************************************************** Problem:

老臣 976

Materials Studio实战技巧(八)——利用片段库高效构建有机金属配合物

本文详细介绍了在Materials Studio中利用Fragment Browser(片段浏览器)高效构建有机金属配合物的实战技巧。通过调用预置的Metal Templates和Ligands库,用户可以快速搭建如茂金属催化剂等复杂分子骨架,并利用对称性操作精确控制Meso与Rac构型。文章还涵盖了自定义片段库的创建与使用,能显著提升建模效率,适用于计算化学与材料模拟领域的研究者。

wine的专栏 936

【bzoj1479】[NOI2006]最大获利

1497: [NOI2006]最大获利 Time Limit:5 SecMemory Limit:64 MBSubmit:4335Solved:2123[Submit][Status][Discuss] Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战。THU集团旗下的CS&T通讯公司在新一代通讯技术血战...

anzhi7214的博客 101

统信UOS系统盘空间不足?5分钟搞定扩容的图形化解决方案

本文提供统信UOS系统盘空间不足的图形化扩容解决方案,使用GParted分区编辑器在不丢失数据的情况下快速完成扩容。详细步骤包括准备工作、空间调整和执行验证,适合技术用户快速解决问题。

d6e7f8的博客 957

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

BZOJ2182: [Spoj1479]The GbAaY Kingdom最小直径生成树

图的绝对中心.. http://blog.youkuaiyun.com/crazy_ac/article/details/8816877#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<queue> #include<algorithm> using namespace std;int f[211]

Don't fake it till you made it 776

MaxScript批量修改材质、贴图名称

MaxScript批量修改材质、贴图名称1 实现效果1.1 修改前材质、贴图名称1.2 修改后2 代码 1 实现效果 1.1 修改前材质、贴图名称 1.2 修改后 2 代码 prefixName = "prefiname" maxFile = "maxfilepath" makeDir "newBitmappath" mapsPath = newbitmappath + "\\" fn formatStr index = ( str = index as string newS

郑德帅 3241

(待更)[学习笔记]数论例题选做1

你来迟了… 当你看到篇博客的时候,这个世界已经发生了翻天覆地的变化。

Panda_Hu's blog 367

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Bzoj1479: [Nerrc1997]Puncher打孔机

1479: [Nerrc1997]Puncher打孔机 Time Limit:5 SecMemory Limit:64 MBSubmit:22Solved:14[Submit][Status][Discuss] Description 打孔机是一种在票上打孔的装置, 假设票是一个M*N的矩阵,矩阵行列间距相等,你可以选择在M*N个位置上打穿或不打穿,这样就有 2^(M*N...

weixin_30361753的博客 58

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[最小直径生成树 模板题] BZOJ 2180 最小直径生成树 & BZOJ 2182 [Spoj1479] TGK & Ural 1569 Networking the “Iset”

我不会啊 老老实实去学吧 求图的绝对中心 && 最小直径生成树 MDST 绝对重心呢 就是枚举每一条边 然后从这条边上某个坐标 到所有点的最小距离是一条折线 然后用这一组折线乱搞就好了怎么求MDST呢 从绝对重心跑一边最短路径树就好了#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> using n

雯舞 1102

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【BZOJ 4228】Tibbar的后花园

算法标签:生成函数+多项式操作

forever_dreams的博客 345

【BZOJ3456】城市规划(分治NTT)

累了

DD(XYX)的硫氰化氘博客 483

bzoj1072【SCOI2007】排列perm

状压DP

AaronPolaris 1736

STM32参考设计去哪找?从官方文档到开源社区的全套实战路线

在嵌入式开发中,参考设计是连接芯片手册与实际工程的桥梁,尤其对于STM32这类资源庞大、外设复杂的MCU而言,能否高效获取已验证的硬件方案和代码模板,直接决定项目初期的推进速度。开发者通常面临两类需求:一是快速上手,需要接地气的原理图、例程和教程;二是解决偏门问题,需要从社区中寻找针对特定场景的实践方案。ST官方提供的参考手册、应用笔记与例程包构成了权威基础,正点原子、野火等板卡厂商则降低了学习门槛,而GitHub、Gitee与立创开源广场进一步扩展了设计灵感的边界。围绕ILI9341读ID异常、HAL_D

weixin_33895695的博客 310

【BZOJ-2818】Gcd 线性筛

2818: Gcd Time Limit:10 SecMemory Limit:256 MBSubmit:3347Solved:1479[Submit][Status][Discuss] Description 给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对. Input 一个整数N Ou...

weixin_30249203的博客 90

BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘

题目没给全,吃X了。。。 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 [Submit][Status][Discuss]Description 栋栋最近迷上了随机算法,而随机数生成是随机算法的基础。栋栋准备使用线性同余法(Linear Congruential

DaD3zZ , To be a Beyonder! 724

BZOJ2241:打地鼠(二维前缀和 & 思维)

2241: [SDOI2011]打地鼠Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1479  Solved: 946[Submit][Status][Discuss]Description打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中。玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越

junior19的博客 585
上一篇: BZOJ1458 士兵占领
下一篇: BZOJ3144 切糕
Slr2002
博客等级 码龄9年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值