Baker Vai LightOJ - 1071 (MCMF)】的更多相关文章

在个给出的矩阵从,从左上角走到右下角,然后再从右下角走到左上角,两次不能经过想同的点,每个点都有一个价值,问最大的价值是多少. 可以把原来的问题化简成从左上角走两条路到右下角,然后把价值加起来,然是这时候我出发点和目标点的价值加了两次,而原本只计算一次,所以最后要减掉,然后建图 1.超源到(1,1), 容量inf,费用0 2.自身拆点,(1, 1)和(n, m)容量2,其他点容量1,费用就是本身的价值的负值 3.(n, m)到超汇,容量inf,费用0 #include<map> #includ…
题意:类似传纸条 方法: 把他要求的操作(一个人来回),转化为两个人同时走,除了开始和结束位置只能走不同路,得到的分数和的最大值即可. 一开始想到要定义的状态,是两个人的x(行)和y(列)坐标.这样时间和空间都为$O(n^4)$,都超出了,因此需要优化.注意到每个人从起点到终点的总步数一定是相同的,而且可以根据每个人走的步数和x坐标,推出这个人的y坐标.那么可以只记录步数和两个人的x坐标作为状态.这样就可以把时间/空间优化到$O(n^3)$.(空间还可以通过滚动数组再优化,但是不优化已经够用)…
给你一些区间,每个区间都有些价值.取一个区间就能获得对应的价值,并且一个点不能覆盖超过k次,问你最大的价值是多少. 我们可以把这些区间放到一维的轴上去,然后我们可以把它看成一个需要从左到右的过程,然后这个过程中保证每个点不超过k次,并且获得的价值最大. 因为一个点不超过k次,只需要控制流入的最大流量是k,就可以保证每个点的流量都不会超过k. 建图过程: 1.超源到整个区间最小的点, 流量k, 费用0. 2.整个区间内每个点(除了最后一个点)到自己的下一个点,流量inf,费用0. 3.每个区间的左…
P3381 [模板]最小费用最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入格式 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行包含四个正整数ui.vi.wi.fi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi),单位流量的费用为fi. 输出格式 一行,包含两个整数,依次为最大流量和在最大流量情况下的最小费用. 输入输…
题意: 1.两只老虎相遇 就互相残杀 2.老虎与鹿相遇 鹿死 3.老虎与人相遇 人死 4.人与鹿相遇     鹿死 5.鹿与鹿相遇     无果 求人活的概率 解析:如果老虎为0  则人活得概率为1   如果老虎为奇数  因为只有两只老虎相遇的时候 老虎才能死  所以必然是两个两个一起死  所以 最后必然剩一只老虎    所以人死  活得概率为0 如果老虎为偶数  每天不让老虎和人相遇即可   等到所有老虎都相遇 互相残杀之后  人不就是活的了吗  而且鹿的数量 并不能影响人的存活率  因为鹿并…
You task is to find minimal natural number N, so that N! contains exactly Q zeroes on the trail in decimal notation. As you know N! = 1*2*...*N. For example, 5! = 120, 120 contains one zero on the trail. Input Input starts with an integer T (≤ 10000)…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3171 [题意] 给定一个方向矩阵,要求改变最少的格子,使得任意一个点都在一个环中. [思路] 任意一个点位于一个环中,即等价于所有的点都有且仅有一个后继. 对于一个点构建X Y结点. 连边(S,Xi,1,0),(Yi,T,1,0).对于原来可以转移到的点连边(Xi,Yj,1,0),对于需要变换才能转移到的连边(Xi,Yk,1,1). 求最小费用最大流.最大流保证了每一个点都会有一个后…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1834 [题意] 给定一个有向图,每条边有容量C,扩容费用W,问最大流和使容量增加K的最少扩容费用. [思路] 第一问就是费用为0的费用流 第二问在第一问的残量网络上操作,对于每条边都新加一条容量为inf,且费用为W的边.至于容量增加K,只要新建一个S点向1连一条容量为K费用为0的边即可.然后跑一遍最小费用最大流. [代码] #include<set> #include<cma…
Modular Production Line \[ Time Limit: 1000ms\quad Memory Limit: 65536kB \] 题意 给出 \(N\) 种零件,现在你可以用连续的一些零件组装成为一个产品,组装完你可以获得 \(w\) 的价值,要求每种零件最多使用 \(K\) 次并且每一个产品只能生产一个.问你最多可以获得的价值是多少. 思路 由于给出的 \(N\) 很大, \(M\)很小,那么显然,很多点都是没有用的,那么我们就可以将他们舍弃掉,只使用出现的点,那么可以考…
思路:很简单的博弈,找出每个人先拿的必胜态进行状态转移即可. #include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int main(){ int t, n, CASE(0); char str[10]; scanf("%d", &t); while(…