首页 > 其他分享 >969. 志愿者招募

969. 志愿者招募

时间:2023-01-04 22:55:06浏览次数:64  
标签:pre 志愿者 flow 招募 969 tot int now dis

969. 志愿者招募

关键

费用怎么构造的不是很懂,但是是个无源汇上下界可行流,先记着,感觉很不错的题目

代码

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+5,M=1e6+5,inf=1e9;
 
int h[N],ne[M],e[M],w[M],c[M],tot=1;
void add(int from,int to,int wi,int ci) {
    e[++tot]=to;  w[tot]=wi;  c[tot]=ci;  ne[tot]=h[from];  h[from]=tot;
    e[++tot]=from;w[tot]=0;   c[tot]=-ci; ne[tot]=h[to];    h[to]=tot;
}
 
int S=N-2,T=N-1;
bool st[N];
int dis[N],flow[N],pre[N];
bool spfa() {
    memset(dis,0x3f,sizeof(dis));
    memset(flow,0,sizeof(flow));
    queue<int>q;q.push(S);
    flow[S]=inf;dis[S]=0;st[S]=1;
    while(!q.empty()) {
        int now=q.front();
        q.pop();st[now]=0;
        for(int i=h[now];i;i=ne[i]) {
            int to=e[i];
            if(w[i]>0&&dis[to]>dis[now]+c[i]) {
                dis[to]=dis[now]+c[i];
                pre[to]=i;
                flow[to]=min(flow[now],w[i]);
                if(st[to]==0)st[to]=1,q.push(to);
            }
        }
    }
    return flow[T];
}
 
int EK() {
    int ans=0;
    while(spfa()) {
        int tmp=flow[T];
        ans+=tmp*dis[T];
        for(int i=T;i!=S;i=e[pre[i]^1]) {
            w[pre[i]]-=tmp;
            w[pre[i]^1]+=tmp;
        }
    }
    return ans;
}

int main() {
    int n,m;
    cin>>n>>m;
    int last=0;
    for(int i=1;i<=n;i++) {
        int x;cin>>x;
        if(last>x)add(S,i,last-x,0);
        else if(last<x)add(i,T,x-last,0);
        add(i,i+1,inf-x,0);
        last=x;
    }
    add(S,n+1,last,0);
    while(m--) {
        int a,b,c;
        cin>>a>>b>>c;
        add(b+1,a,inf,c);
    }
    cout<<EK();
    return 0;
}
//很迷的题目,但是感觉很好

标签:pre,志愿者,flow,招募,969,tot,int,now,dis
From: https://www.cnblogs.com/basicecho/p/17026248.html

相关文章

  • 米哈游大量招募新同学,校招提前批最后一天!
    米哈游大量招募新同学:1.周末双休,工作日早十晚七,上班不打卡,全凭自觉;2.团队氛围很不错,有成长空间,拒绝无意义加班和内卷;3.免费晚餐线上订餐,不限量零食饮料还有咖啡和水果;4.10天......
  • let’s go——2022年读书活动招募书(第1期)
    作为一名编程人员,时常有一个想法,怎么精通某种技术?然后,业内大牛给你分享了一条学习路线,当你看完这条路线之后,之前高涨的心情瞬间低落下来,因为“万丈高楼平地起”,那条路的尽头......
  • DolphinDB 诚挚招募实施伙伴
    随着DolphinDB业务发展,为满足迅速增长的客户需求,我们现正式启动“实施伙伴招募计划”。DolphinDB客户已经涵盖7家Top10券商、头部公募及私募基金、知名银行、交易所、世......
  • hdu:悼念512汶川大地震遇难同胞——选拔志愿者(回扣必胜点定义)
    ProblemDescription对于四川同胞遭受的灾难,全国人民纷纷伸出援助之手,几乎每个省市都派出了大量的救援人员,这其中包括抢险救灾的武警部队,治疗和防疫的医护人员,以及进行心......
  • 969. 志愿者招募
    题目链接969.志愿者招募申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管。布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿......
  • 十一天志愿者生活有感
    写一篇博客园吧,记录一下最近疫情志愿者生活    今天是11月16号周三,也是就九栋全部人员转运的最后一天。记录和回望一下这些天的生活。11月5号晚练剑后离场,得......
  • 【杭州专场】蚂蚁单测自动生成产品体验活动招募开启
    「单元测试产品体验样板间」是由蚂蚁集团技术风险团队&企业级应用设计团队联合举办,针对于单元测试产品发起的线下用户体验活动,旨在邀请相关领域的技术同学亲临现场互动交流......
  • 蚂蚁集团绿色大赛---赛队招募啦!!
    2022年度大赛——蚂蚁集团绿色计算大赛,正式开赛!蚂蚁集团联合绿色计算产业联盟,面向广大学生和科技从业者发起实战精英挑战赛!规模宏大、阵容豪华、百万奖池、在线挑战,诚邀......
  • Luogu P3980 [NOI2008]志愿者招募
    题目链接:​​传送门​​别人家的建图~~~~好神奇很容易想到志愿者的起始时间和终止时间连边,费用就是他的费用但是每个点还有一个人数限制必须要有那么多个人也就是那么......
  • HUAWEI nova 9 SE等7款设备开启HarmonyOS 3 Beta版尝鲜招募!
     HarmonyOS3新一轮升级进展来了!本次共有HUAWEInova9SEHUAWEIMatePad10.8英寸等 7款华为手机、平板开启HarmonyOS3Beta版尝鲜招募。感兴趣的小伙伴快来......