bzoj2245】的更多相关文章

http://www.lydsy.com/JudgeOnline/problem.php?id=2245 (题目链接) 题意 n个产品,每个需要造C[i]件:m个员工,每个员工可以制造一些产品:每个员工的愤怒值是关于制造产品数的递增分段函数.所有员工的愤怒值之和最少是多少. Solution 按照题意连边构图,跑费用即可. 细节 开LL. 代码 // bzoj2245 #include<algorithm> #include<iostream> #include<cstrin…
[BZOJ2245][SDOI2011]工作安排(费用流) 题面 BZOJ 洛谷 题解 裸的费用流吧. 不需要拆点,只需要连边就好了,保证了\(W_j<W_{j+1}\). #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; #define ll long long #define MAX 600 #define inf 1…
[BZOJ2245][SDOI2011]工作安排 Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由一名员工制造,不可以由某名员工制造一部分配件后,再转交给另外一名员工继续进行制造. 我们用一个由0和1组成的m*n的矩阵A来描述每名员工能够制造哪些产品.矩阵的行和列分别被编号为1~m和1~n,Ai,j为1表示员工i能够制造产品j,为0…
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2245 分析: 要注意到题目下面说的w是单增的 明显的费用流: 弄个源点S,汇点T S连向每种产品,流量是这种产品所需个数,费用是0 每种产品连向能制作它的人,流量为inf,费用是0 每个人向T连Si+1条边,流量t[i][j]-t[i][j-1],费用w[i][j] (因为w是单增的,所以就保证了每个人连向T的Si+1条边肯定是上面的边填满之后再填下面的边,保证了符合题意,如果没有这…
费用流. 这道题的模型比较明显,拆点也是很容易看出来的. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; + ; + ; const int inf = 0x3f3f3f3f; int g[maxn],v[maxm],f[maxm],c[maxm],next[maxm],eid; int idn[maxn],idm[maxn]; ]; int n,m,S,T,vid,…
这道题还是比较简单的费用流,由于w是递增的 实际上,这题数据还可以强一点,比如说分段函数不保证费用递增, 就要加一点技巧了(要保证函数的顺序) ; type node=record        next,point,flow,cost:longint;      end; ..] of longint;     edge:..] of node;     v:..] of boolean;     p,time,c,d,pre:..] of longint;     len,i,j,n,m,t…
分析: 费用流裸题,按照题面要求建边就可以了,语文题,我读了10多分钟才知道这题干啥...特别是注意一个细节a[j+1]-a[j]... 附上代码: #include <cstdio> #include <algorithm> #include <cmath> #include <cstring> #include <iostream> #include <queue> #include <cstdlib> using n…
题目大意: 传送门 题解: 很容易建模,把每一个工作人员拆成两个点,由第一个点向第二个点连S+1条边即可. 这水题没什么难度,主要是longlong卡的丧心病狂... 代码 #include <bits/stdc++.h> #define ll long long using namespace std; const ll maxn = 2550; const ll maxv = maxn * 10; const ll inf = 1000000000000; ll dist[maxv], i…
题目描述 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由一名员工制造,不可以由某名员工制造一部分配件后,再转交给另外一名员工继续进行制造. 我们用一个由0和1组成的m*n的矩阵A来描述每名员工能够制造哪些产品.矩阵的行和列分别被编号为1~m和1~n,Ai,j为1表示员工i能够制造产品j,为0表示员工i不能制造产品j. 如果公司分配了过多工作给一名员工,这…
题面 传送门 思路 数据范围n,m<=250 分配任务问题 这是典型的"看到数据范围就知道算法"类型 而且我们发现我们要保证一定产出的情况下最小化花费 这句话等价于保证一定流量的情况下最小化费用 所以先确定算法:最小费用最大流 再观察一下,我们发现这道题的费用和人唯一相关,而且人和物品之间的关系是独立的 因此我们建立一个网络流图,其中包含S,T,人点和物品点 对于每个物品i,我们连边(i,T),费用0,流量为$C_i$ 对于一个人i可以操作物品j,我们连边(i,j),费用0,流量…