还是一道费用流的题目。话不多说,进入正题。

  题意:给定n个点和m种从l到r覆盖一层的费用,求满足所有点的覆盖层数都大等于权值的最小费用

  分析:要做到区间修改,看似比较麻烦。

     用差分把区间修改变成单点修改(左端+,右端-)

     那么建一种边,从右端+1的位置流向左端点的位置,花费为c

     然后有可能覆盖层数过大,我们建一种边使满足单点层数-1花费为0,使最后的覆盖结果一定是与要求的一致

     最后就是建源到某个点的流量剩余(或这个点到汇的流量需求)

  下面贴上代码:

#include<cstdio>
using namespace std;
const int inf=;
int n,m;
int tot=,mx,q[],d[],pree[],h[];
struct edge{int to,nxt,cst,cap;}e[];
bool vis[];
int mn(int x,int y){return x>y?y:x;}
void add(int fr,int to,int cst,int cap)
{
e[++tot]={to,h[fr],cst,cap};h[fr]=tot;
e[++tot]={fr,h[to],-cst,};h[to]=tot;
}
void init()
{
scanf("%d%d",&n,&m);
int now,lst=;
for(int i=;i<=n;i++)
{
scanf("%d",&now);
int cst=now-lst;lst=now;
if(cst>)add(i,n+,,cst),mx+=cst;//差分建图
else add(,i,,-cst);
add(i,i+,,inf);//单点减1答案不变
}
add(,n+,,lst);
for(int i=;i<=m;i++)
{
int l,r,c;
scanf("%d%d%d",&l,&r,&c);
add(r+,l,c,inf);//区间加法头加尾减
}
n+=;
}
bool spfa()
{
for(int i=;i<=n;i++)d[i]=inf;
int l=,r=;q[]=;vis[]=;
while(l!=r)
{
int x=q[l=l==n?:l+];
for(int i=h[x];i;i=e[i].nxt)
if(e[i].cap&&e[i].cst+d[x]<d[e[i].to])
{
int v=e[i].to;
pree[v]=i;
d[v]=d[x]+e[i].cst;
if(!vis[v])
{
if(d[v]>d[l+])q[r=r==n?:r+]=v;
else q[l]=v,l=l==?n:l-;
vis[v]=;
}
}
vis[x]=;
}
return d[n]==inf?:;
}
int costflow()
{
int cost=,mm=;
while(spfa())
{
int mi=inf;
for(int i=n;i;i=e[pree[i]^].to)
mi=mn(mi,e[pree[i]].cap);
for(int i=n;i;i=e[pree[i]^].to)
{
int ee=pree[i];
e[ee].cap-=mi;
e[ee^].cap+=mi;
}
cost+=d[n]*mi;
mm+=mi;
}
return mm==mx?cost:;
}
int main()
{
init();
printf("%d",costflow());
return ;
}

[NOI2008] [bzoj1061] 志愿者招募的更多相关文章

  1. [NOI2008][bzoj1061] 志愿者招募 [费用流+巧妙的建图]

    题面 传送门 思路 引入:网络流? 看到这道题,第一想法是用一个dp来完成决策 但是,显然这道题的数据并不允许我们进行dp,尤其是有10000种志愿者的情况下 那么我们就要想别的办法来解决: 贪心?这 ...

  2. 【BZOJ1061】【NOI2008】志愿者招募

    [BZOJ1061][NOI2008]志愿者招募 题面 BZOJ 题解 我们设每类志愿者分别招募了\(B[i]\)个 那么,我们可以得到一系列的方程 \[\sum_{S[i]\leq x\leq T[ ...

  3. bzoj1061 志愿者招募

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

  4. 【NOI2008】志愿者招募

    [NOI2008]志愿者招募 和[2017山东day7]养猫做法类似. 都是神仙题. 首先我设\(c_{i,j}=[l[j]\leq i\leq r[j]]\) ,于是就可以列出下面的不等式: \[ ...

  5. bzoj1061【NOI2008】志愿者招募

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 2740  Solved: 1703 [Submit][id ...

  6. BZOJ-1061 志愿者招募 线性规划转最小费用最大流+数学模型 建模

    本来一眼建模,以为傻逼题,然后发现自己傻逼...根本没想到神奇的数学模型..... 1061: [Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 ...

  7. 【BZOJ】【1061】【NOI2008】志愿者招募

    网络流/费用流 OrzOrzOrz,这题太神了不会捉. 题解:https://www.byvoid.com/blog/noi-2008-employee/ 这道题正确的解法是构造网络,求网络最小费用最 ...

  8. bzoj [Noi2008] 1061 志愿者招募 单纯形

    [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 5437  Solved: 3267[Submit][Status][Di ...

  9. 【网络流】【BZOJ1061】【NOI2008】志愿者招募

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 题意:问你如何购买志愿者使得满足题意的总费用最小. 解题思路:首先,由于志愿者存在的 ...

随机推荐

  1. Jdk1.7 与 jdk1.8的区别,最新的特征有哪些(美团,360,京东面试题目)

    在jdk7的新特性方面主要有下面几方面的增强: 1.1二进制变量的表示,支持将整数类型用二进制来表示,用0b开头. 所有整数int.short.long.byte都可以用二进制表示: byte aBy ...

  2. Jetty与Tomcat综合比较

    Jetty基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器.它有一个基本数据模型,这个数据模型就是 Handler(处理器) ...

  3. 当重写了 httpservlet重写了GenericServlet的init方法时候 必须显示调用GenericServlet的init方法时候 才能在别的方法(父类创建config实例) 例如 doget里面使用servletContext对象 不重写init 则可以直接使用

  4. Codeforces ECR52 div2翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  5. P3808 【模板】AC自动机(简单版)

    题目背景 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. 管理员提示:本题数据内有重复的单词,且重复单词应该计算多次, ...

  6. UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用)

    UVA.12096 The SetStack Computer ( 好题 栈 STL混合应用) 题意分析 绝对的好题. 先说做完此题的收获: 1.对数据结构又有了宏观的上的认识; 2.熟悉了常用STL ...

  7. mac, xcode 6.1 安装command line tools 支持,autoconf,automake等

    以下软件包 都去我的环境库找到 1 先安装 tcl库 2 安装macports /opt/local/bin/port 一般装到这里 安装autoconf时提示: Warning: The Xcode ...

  8. React属性用法总结

    1. 键值对 <ClaaNameA name = “Tom” /> <ClaaNameA name = {Tom} /> <ClaaNameA name = {“Tom” ...

  9. spring 整合 redis 单机版

    增加spring配置文件: application-jedis.xml <?xml version="1.0" encoding="UTF-8"?> ...

  10. Spring框架介绍和原理

    SpringMVC框架介绍 1) Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面. Spring 框架提供了构建 Web 应用程序的全功 ...