「BZOJ2879」[Noi2012]美食节

这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版

如果一开始把全部边连上会T

优化的方法是只连用到过和下一次增广可能用到的边。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=50,M=110,NN=100010,oo=1e9;
 4 int n,m,cost[N][M],tot,s,t,p[N],rank[NN],c[NN];
 5 bool isend[NN];
 6 struct Edge{
 7     int from,to,flow,cap,w;
 8 };
 9 int edge_tot;
10 vector<Edge>edge;
11 vector<int>point[NN];
12 void add_edge(int f,int t,int cc,int ww){
13     edge.push_back((Edge){f,t,0,cc,ww});
14     point[f].push_back(edge_tot++);
15     edge.push_back((Edge){t,f,0,0,-ww});
16     point[t].push_back(edge_tot++);
17     return;
18 }
19 int dis[NN],pre[NN];
20 bool inq[NN];
21 bool spfa(){
22     queue<int>q;
23     int x;
24     for(int i=1;i<=tot;i++) dis[i]=oo;
25     q.push(s);
26     dis[s]=0,inq[s]=1;
27     while(!q.empty()){
28         x=q.front();q.pop();
29         inq[x]=0;
30         for(int i=0;i<point[x].size();i++){
31             Edge& e=edge[point[x][i]];
32             if(e.cap<=e.flow) continue;
33             if(dis[x]+e.w<dis[e.to]){
34                 dis[e.to]=dis[x]+e.w,pre[e.to]=point[x][i];
35                 if(!inq[e.to]){inq[e.to]=1;q.push(e.to);}
36             }
37         }
38     }
39     return dis[t]<oo;
40 }
41 int mincostmaxflow(){
42     int ans=0,f,now;
43     while(spfa()){
44         f=oo,now=t;
45         while(now!=s){
46             f=min(f,edge[pre[now]].cap-edge[pre[now]].flow);
47             if(isend[now]){
48                 isend[now]=0,isend[++tot]=1,rank[tot]=rank[now]+1,c[tot]=c[now];
49                 add_edge(tot,t,1,0);
50                 for(int i=3;i<=n+2;i++) add_edge(i,tot,1,rank[tot]*cost[i-2][c[tot]]);
51             }
52             now=edge[pre[now]].from;
53         }
54         ans+=dis[t]*f,now=t;
55         while(now!=s){
56             edge[pre[now]].flow+=f,edge[pre[now]^1].flow-=f;
57             now=edge[pre[now]].from;
58         }
59     }
60     return ans;
61 }
62 int main(){
63     scanf("%d%d",&n,&m);
64     for(int i=1;i<=n;i++) scanf("%d",&p[i]);
65     for(int i=1;i<=n;i++)
66         for(int j=1;j<=m;j++)scanf("%d",&cost[i][j]);
67     s=++tot,t=++tot;
68     for(int i=1;i<=n;i++) add_edge(s,++tot,p[i],0);
69     for(int i=1;i<=m;i++){
70         add_edge(++tot,t,1,0);
71         rank[tot]=1,c[tot]=i,isend[tot]=1;
72         for(int j=3;j<=n+2;j++) add_edge(j,i+n+2,1,cost[j-2][i]);
73     }
74     int ans=mincostmaxflow();
75     printf("%d",ans);
76 }

 

转载于:https://www.cnblogs.com/mycups/p/8528851.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不越狱换壁纸_终于来了!iOS 14.3 正式版,可自动定时换壁纸

嘿嘿&#xff0c;我没有猜错吧&#xff01;iOS 14.3 正式版会在12月15日凌晨时段发布&#xff0c;在前几天我就有提到&#xff0c;这一天会发布&#xff0c;主要是与新品 AirPods Max 发售时间与iOS 14.3正式版发布时间一致。其次这次发布iOS 14.3正式版更新内容与 iOS 14.3 RC…

Hibernate【inverse和cascade属性】知识要点

Inverse属性 Inverse属性&#xff1a;表示控制权是否转移.. true:控制权已转移【当前一方没有控制权】false&#xff1a;控制权没有转移【当前一方有控制权】Inverse属性&#xff0c;是在维护关联关系的时候起作用的。只能在“一”的一方中使用该属性&#xff01;Inverse属性的…

[转]HOWTO do Linux kernel development - take 3 (中文版)

打好linux基础&#xff0c;不断的跟随这篇文章中的建议&#xff0c;适应linux kernel开发的流程。虽然需要很久甚至几年的时间&#xff0c;但我相信坚持就会前进&#xff01;加油&#xff01; HOWTO do Linux kernel development - take 3 (中文版) 译者&#xff1a;张乐 rober…

中list如何清空_如何根据索引删除 list 中的元素

这个问题很简单, 首先想到的就是a list(range(10)) del a[2]这个就可以很方便的删除掉 a 中的第 3 个元素.如果我想删除多个元素怎么办, 比如我想删除第 3, 4, 5, 6 个元素? 这个也很好办:a list(range(10)) del a[2:6]那么我要删除的元素的索引不连续呢? 比如我要删除第 3…

sql server紧急状态下登录脚本

--打开xp_cmdshell功能 EXEC [sys].[sp_configure] configname xp_cmdshell, -- varchar(35)configvalue 1 -- int 4 RECONFIGURE WITH override--修改注册表&#xff0c;修改身份验证为混合验证方式 USE [master] GOEXEC xp_instance_regwrite NHKEY_LOCAL_MACHINE, NSoftwa…

第一次项目之后...

从开始学习php不知不觉已经过去两个多月了&#xff0c;其中经历了各种各样以前没有经历过的生活和学习&#xff0c;在将近三个月的学习生活中我完成了第一个php项目。要说感觉&#xff0c;还真有些奇特&#xff0c;从开始连php是什么到现在能够亲手写出一个像模像样的网站就好像…

查询时拼接两列数据_如何用VBA代码查询两列数据差异?

爱就一个字&#xff0c;我只说一次……北京市第三交通委提醒您&#xff1a;代码千万条&#xff0c;注释第一条&#xff0c;命名不规范&#xff0c;修订两行泪……咳&#xff0c;给大家拜晚年了&#xff0c;再提前祝大家元宵快乐……我们今天和大家分享的内容是如何用VBA代码查询…

setTimeout详解

https://www.cnblogs.com/wzndkj/p/7069331.html 一、setTimeout基础 setTimeout(func|code,delay);第一个参数表示将要推迟的函数名或者一段代码&#xff0c;第二个参数表示推迟执行的毫秒数eg: console.log(1); setTimeout(console.log(2),1000); console.log(3);answer: 1 3…

Kappa电商负责人顾皓澜:电商业务一直保持盈利

Kappa电商负责人顾皓澜&#xff08;TechWeb配图&#xff09; 【TechWeb报道】10月初&#xff0c;闹得沸沸扬扬的淘宝商城事件吸引了无数互联网用户的目光&#xff0c;处于漩涡中心的淘宝商城当仁不让地挤入话题排行榜&#xff0c;商城上大小卖家的命运也牵动了众多消费者的心。…

python abs(3+4j)_表达式 abs(3+4j) 的值为 ____________ 。_学小易找答案

【单选题】REHL6/Centos6中重启网络服的命令是( ) 【单选题】在故障分析时,对变压器,以下说法不正确的是( ) 【填空题】表达式 chr(ord(A)+1) 的值为 ____________________ 。 【填空题】 【简答题】 【简答题】请提交实验报告 【单选题】电力系统发生三相短路时,短路电流知包含…

Citrix VDI-in-a-Box 第二篇:架构篇

前言&#xff1a;为什么Citrix会收购Kaviza&#xff0c;就是因为其VDI-in-a-Box产品架构比较简单。 本文重点描述其架构和安装要求。 如果你想了解一个东西&#xff0c;首先必须了解其架构。 vdiManager是管理整个架构的工具&#xff0c;所有的虚拟机都运行在Hypervisor上。整 …

看完此文再不懂区块链算我输,用Python从零开始创建区块链

如果你还没有听说过 3 点钟区块链群&#xff0c;说明你还不是链圈的人&#xff1b;如果你还没有加入 3 点钟区块链群&#xff0c;说明你还不是链圈的大佬&#xff1b;如果你还没有被 3 点钟区块链群刷屏&#xff0c;说明你还体会不到什么是“币圈一天&#xff0c;人间一年”。 …

重新加一个window_Activity、View、Window关系,进程间通信,责任链模式,Https,数据存储...

码仔&#xff0c;今天就给大家带来了《每日一道面试题》的第九期&#xff1a;01理解Activity View window的关系 Activity像一个工匠(控制单元)&#xff0c;Window像窗户(承载模型)&#xff0c;View像窗花(显示视图)LayoutInflater像剪刀&#xff0c;Xml配置像窗花图纸。 Activ…

Maven项目编译工具的使用

Java项目中最常用的编译工具是Ant&#xff0c;Ant解析XML配置文件&#xff0c;即build.xml&#xff0c;执行Target来实现用户目标的编译工作。Maven也是一个非常好用的编译工具&#xff0c;Maven类似于Ant也是有一个配置文件来配置编译信息&#xff0c;即pom.xml. 本文简要描述…

排他网关(ExclusiveGateWay)

网关&#xff08;ExclusiveGateWay&#xff09; 作者&#xff1a;邓家海2018年3月11日 00:13:25 情景:某一家公司最近在给一个单位做一个财务审批的OA。具体需求是这样的&#xff1a;当部门申请的金额小于一万块的时候&#xff0c;财务部可以直接决策。当部分申请的金额大于一万…

离线安装宝塔lnmp_宝塔LNMP环境 Nginx安装EduSoho教程说明

[toc]宝塔下使用LNMP Nginx安装EduSoho创建站点 宝塔后台 > 网站 > 添加站点 > 输入信息 > 提交填写信息创建完成设置运行目录 宝塔后台 > 网站 > 管理运行目录选择web目录后保存 网站目录 > 运行目录 > 保存修改配置文件 配置文件 > 修改参数 >…

NHibernate初学者指南(10):一级和二级缓存

一级缓存 为了获得更好的性能&#xff0c;NHibernate智能地缓存数据。NHibernate有不同的缓存机制起作用&#xff0c;最重要的就是一级缓存。每个session对象维持一个一级缓存&#xff0c;session对象创建时缓存创建&#xff0c;session对象释放时缓存销毁。 缓存只不过是一个哈…

Freemarker模板引擎

模板引擎的实质就是将页面结构提前写好&#xff0c;然后将数据渲染到模板上生成一个静态页面&#xff0c;这样一来&#xff0c;下次就可以 直接访问静态文件&#xff0c;不用进行额外的获取数据的操作&#xff08;例如&#xff1a;访问数据库&#xff09;&#xff0c;这样大大提…

postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置

基于windows平台的postgresql主从数据库流备份配置因工作需要&#xff0c;需要搞pg数据库的主从备份&#xff0c;领导给了个方向使用流备份&#xff0c;于是开始朝着这个方向进发。鸣谢大佬A_ccelerator的博客一、配置主从库1.环境准备对于 pg 的主从库配置&#xff0c;建议是使…

msvcrt.lib和LIBCD.lib链接冲突

今天在移植一个开源代码到windows的VC6工程&#xff0c;编译时出现了这些奇怪的LINK错误。 msvcrt.lib(MSVCRT.dll) : error LNK2005: _toupper already defined in LIBCD.lib(toupper.obj)msvcrt.lib(MSVCRT.dll) : error LNK2005: _tolower already defined in LIBCD.lib(to…