正题

题目链接:https://www.luogu.com.cn/problem/P3980


题目大意

nnn天,第iii天需要AiA_iAi​个志愿者。有mmm种志愿者,第iii种从sis_isi​天服务到tit_iti​天,需要cic_ici​元的费用。

求满足条件的最小费用

1≤n≤1000,1≤m≤100001\leq n\leq 1000,1\leq m\leq 100001≤n≤1000,1≤m≤10000


解题思路

考虑费用流

如果雇佣了sis_isi​天到tit_iti​天的话那么就相当于将这段范围AiA_iAi​的值减一,注意到是区间的111需要cic_ici​的费用,那么肯定这个条件是压缩成一条边的,也就是sis_isi​向ti+1t_i+1ti​+1连接费用为111的边。

这样的话考虑如何满足条件,注意到是减一也就是抽走一条经过sis_isi​到tit_iti​的流量,也就是对于这些流量的限制。

建立nnn个点,iii向i+1i+1i+1连接流量为T−AiT-A_iT−Ai​(TTT是一个很大的数就可以了)表示至少需要抽走AiA_iAi​的流量就好了。

然后跑费用流


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define ll long long
using namespace std;
const ll N=1100,T=(1ll<<31),inf=1e18;
struct node{ll to,next,w,c;
}a[N*22];
ll n,m,s,t,tot=1,ans,ls[N],f[N],mf[N],pre[N];
bool v[N];queue<int> q;
void addl(ll x,ll y,ll w,ll c){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;a[tot].w=w;a[tot].c=c;a[++tot].to=x;a[tot].next=ls[y];ls[y]=tot;a[tot].w=0;a[tot].c=-c;return;
}
bool SPFA(){memset(f,0x3f,sizeof(f));q.push(s);f[s]=0;v[s]=1;mf[s]=T;while(!q.empty()){ll x=q.front();q.pop();v[x]=0;for(ll i=ls[x];i;i=a[i].next){ll y=a[i].to;if(a[i].w&&f[x]+a[i].c<f[y]){f[y]=f[x]+a[i].c;pre[y]=i;mf[y]=min(mf[x],a[i].w);if(!v[y])v[y]=1,q.push(y);}}}return (f[t]<inf);
}
void Updata(){ll x=t;ans+=mf[t]*f[t];while(x!=s){a[pre[x]].w-=mf[t];a[pre[x]^1].w+=mf[t];x=a[pre[x]^1].to;}return;
}
signed main()
{scanf("%lld%lld",&n,&m);s=n+2;t=s+1;addl(s,1,T,0);for(ll i=1;i<=n;i++){ll x;scanf("%lld",&x);addl(i,i+1,T-x,0);}for(ll i=1;i<=m;i++){ll s,t,c;scanf("%lld%lld%lld",&s,&t,&c);addl(s,t+1,T,c);}addl(n+1,t,T,0);while(SPFA())Updata();printf("%lld\n",ans);return 0;
}

P3980-[NOI2008]志愿者招募【费用流】相关推荐

  1. [Bzoj1061][Noi2008]志愿者招募(费用流)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1061 一开始疯狂想dp,然后队友走过来瞄一眼就告诉我像费用流,菜的真实,jpg. 一种比 ...

  2. 洛谷P3980 志愿者招募——费用流

    洛谷P3980 [NOI2008]志愿者招募--费用流 题目介绍 题目描述 输入格式 输出格式 测试样例 题解 代码 题目介绍 题目描述 链接: 传送门. 申奥成功后,布布经过不懈努力,终于成为奥组委 ...

  3. P3980 NOI2008志愿者招募

    志愿者招募 题目链接 https://www.luogu.org/problemnew/show/P3980 题解 这道题很神奇,这种建图方法很有启发性. 我们平时做的题都点都是是一对一的,而这道题的 ...

  4. 洛谷 - P3980 [NOI2008]志愿者招募(最小费用最大流+思维建边)

    题目链接:点击查看 题目大意:现在有n天需要志愿者,每一天需要招募的人数是Ai个人,现在有m类志愿者,每类志愿者可以在[l,r]天内被招募,需要花费的代价为Ci,现在需要安排一种招募方式,可以使得总花 ...

  5. bzoj 1061 志愿者招募 费用流

    详见BYV的博客,写的非常全面https://www.byvoid.com/blog/noi-2008-employee /************************************** ...

  6. 【费用流】BZOJ1061: [Noi2008]志愿者招募(这题超好)

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 5291  Solved: 3173 [Submit][St ...

  7. [BZOJ1061] [NOI2008] 志愿者招募 - 最小费用最大流

    大部分内容转自: BYVOID - NOI2008 志愿者招募  如果讲道理的话,就是说我们抽象一下这个模型--然后每条费用边就是连接起始日期和结束日期的边,也就是说这条边上的流量增加1,就要增加一个 ...

  8. [NOI2008] 志愿者招募 (费用流)

    [NOI2008] 志愿者招募 (费用流) 题目描述 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过 ...

  9. [BZOJ1061][Noi2008]志愿者招募

    [BZOJ1061][Noi2008]志愿者招募 试题描述 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿 ...

  10. 单纯型法Ⅱ(bzoj 1061: [Noi2008]志愿者招募)

    线性规划单纯型法:http://blog.csdn.net/jaihk662/article/details/78050666 标准型:m个约束,n个变量,构成m*n的矩阵 C是一个n的向量,B是一个 ...

最新文章

  1. java解析五元组_pcap文件解析,并且按照五元组分类
  2. 实施Service Mesh前,你需要考虑这几个问题
  3. 树莓派/香橙派自建本地DNS加速解析
  4. 45 Ansible Play-books模式
  5. Android Hal层简要分析
  6. 14.4 线程通讯-生产者与消费者
  7. 缺少glibc指定版本的解决方案
  8. Android6.0的SMS(短信)源码分析--短信发送
  9. httpclient 调用WebAPI
  10. java 子类重定义变量_java子类对象和成员变量的隐写方法重写
  11. etl数据抽取工具_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别
  12. LeetCode 480. 滑动窗口中位数(大小堆升级版+set实现)
  13. JAVA基础学习预科部分 (Markdown + dox)2021/2/22持续更新中
  14. 现代软件工程 学生阅读和调查作业
  15. 监控、链路追踪、日志的区别
  16. HTML5 Notification
  17. 下了一个游戏说计算机丢失,冰封64位win10系统下启动游戏提示计算机丢失XINPUT1-3.dll怎么办...
  18. kali系统卸载Docker容器
  19. 锡兰1.1.0现已上市
  20. MBA/MEM 复试准备(03)面试礼仪

热门文章

  1. mysql数据库已连接数据库_001. 【已解决】Java连接MYSQL 数据库的连接步骤
  2. 移动计算机怎么开机密码,win7忘记开机密码解决办法
  3. columnproperty server sql_获取SQL Server表字段的各种属性
  4. 开线程插数据_python笔记7-多线程之线程同步(锁lock)
  5. android ble status,Android BLE peripheral disconnects with status code BLE_HCI_INSTANT_PASSED(0x28)
  6. php 发邮件 500错误,使用PHP发送邮件出现这个错误:The following From address failed:xxxx@163.com...
  7. 8-1 回溯法实验报告 (15 分)(思路+详解)
  8. android 手机交互设计,移动设备交互设计比较
  9. [蓝桥杯2016决赛]阶乘位数-数论
  10. C++map容器-查找和统计