#include <stdio.h>#include <string.h>#include <iostream>using namespace std;#define N 250#define M 20100#define INF 0x3fffffffstruct node{ int from,to,next,w;}edge[M];int n,m;int cnt,pre[N];int s1,nn,t;int lv[N],gap[N];int kk;int mark[N];int save[110][2];void add_edge(int u,int v,i
转载
2013-04-14 15:47:00
35阅读
题目链接:http://poj.org/problem?id=3308思路:裸的最小点权覆盖,建立超级源点和超级汇点,将源点与行相连,容量为这行消灭敌人的代价,将列与汇点相连,容量为这列消灭敌人的代价,对于每一个敌人(x,y),连边x->y,容量为inf,这样就说明选取的点覆盖了那些边(敌人),然后跑最大流求最小割即可。PS:这里是乘积最小,要取对数转化为和最小。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 222 ...
转载
2013-08-25 11:05:00
72阅读
2评论
火星人侵略地球,他们意图登陆破坏死。但是这种激光枪的使用
原创
2023-05-29 18:30:13
50阅读
Destroying The Graph http://poj.org/problem?id=2125 Time Limit: 2000MS Memory Limit: 65536K Description Alice and Bob play the following game. First,
原创
2021-08-05 09:35:28
84阅读
最小点权覆盖集 二分图最小点权覆盖集解决的是这样一个问题: 在二分图中,对于每条边,两个端点至少选一个,求所选取的点最小权值和。 方法: 1、先对图二分染色,对于每条边两端点的颜色不同 2、然后建立源点S,向其中一种颜色的点连一条容量为该点权值的边 3、建立汇点T,由另一种颜色的点向T连一条容量为该
原创
2021-07-20 14:15:10
341阅读
题意敌人侵略r*c的地图。为了消灭敌人,可以在某一行或者某一列安置超级大炮。每一个大炮可以瞬间消灭这一行(或者列)的敌人。安装消灭第i行的大炮消费是ri。安装消灭第j行的大炮消费是ci现在有n个敌人,告诉你这n个敌人的坐标,让你同时消灭这些敌人,为你最小花费是多少。花费的定义:每个大炮消费的乘积。思...
转载
2013-08-07 15:27:00
20阅读
2评论
题意敌人侵略r*c的地图。为了消灭敌人,可以在某一行或者某一列安置超级大炮。每一个大炮可以瞬间消灭这一行(或者列)的敌人。安装消灭第i行的大炮消费是ri。安装消灭第j行的大炮消费是ci现在有n个敌人,告诉你这n个敌人的坐标,让你同时消灭这些敌人,为你最小花费是多少。花费的定义:每个大炮消费的乘积。思...
转载
2013-08-07 15:27:00
21阅读
2评论
AsteroidsTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 18183Accepted: 9905DescriptionBessie wants to navigate her spaceship through a dange...
转载
2015-11-12 13:43:00
173阅读
2评论
题意: 假如你如今正处在一个N*N的矩阵中,这个矩阵里面有K个障碍物,你拥有一把武器,一发弹药一次能消灭一行或一列的障碍物,求最小的弹药消灭所有障碍物 输入为: N K 接下来有K行,每行包括障碍物的坐标,即r行c列; 如: 3 4 1 1 1 3 2 2 3 2 输出为: 花费最小的弹药数 思路:
转载
2016-04-11 19:29:00
126阅读
2评论
浅谈区间最小点覆盖 本篇随笔简单介绍一下区间最小点覆盖问题及其解法。 一、区间最小点覆盖问题的概念 就是给你一堆区间,请用最少的点,保证每个区间都至少包含一个点。 二、解决办法 考虑贪心。 按右端点排序,那么可以肯定的是,在这段区间内的所有左端点所代表的区间一定是都可以取的。 然后把这些区间删除。
转载
2020-11-27 15:17:00
556阅读
2评论
Machine Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8067 Accepted Submission(s): 405
原创
2021-07-21 15:27:22
67阅读
最小点权覆盖 给出一个二分图,每个点有一个非负点权要求选出一些点构成一个覆盖,问点权最小是多少 建模: S到左部点,容量为点权 右部点到T,容量为点权 左部点到右部点的边,容量inf 求最小割即可。 证明: 每一个割集,对应选择一些点,对应一个覆盖。 每个覆盖有不同的代价,选择最小的就是最小点覆盖
转载
2018-11-27 14:55:00
122阅读
2评论
http://poj.org/problem?id=3308 r*c的地图 每一个大炮可以消灭一行一列的敌人 安装消灭第i行的大炮花费是ri 安装消灭第j行的大炮花费是ci 已知敌人坐标,同时消灭所有敌人,问最小花费 花费为所有大炮消费的乘积 乘转加:log(a*b*c)=log(a)+log(b)
原创
2021-08-05 11:35:25
27阅读
题目:http://poj.org/problem?id=3308题意:有一个n*m的格子,格子上有一些敌人,给出这些敌人在格子上的位置,可以在行或者列上安装一些武器,每次消灭一行或者一列,动用每一个武器都有一个花费,总的花费为每个武器花费的成绩,求消灭所有敌人的最小花费思路:二分图最小点权匹配,只不过之前碰到的题最大流是累加和,这个是累乘积,建图时对所有的花费取log,然后对求出来的最大流取ex
原创
2016-11-05 11:20:57
73阅读
二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。 二分图最小点权覆盖 从x或者y集合...
转载
2014-08-06 16:45:00
36阅读
2评论
50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2256 Accepted Submission(s):
原创
2021-07-21 15:27:28
92阅读
每次选择清除一行或者一列上的小行星。最少选择几次。 将行和列抽象成点,第i行为节点i+n,第j列为节点j,每个行星则是一条边,连接了所在的行列。 于是问题转化成最小点覆盖。二分图的最小点覆盖==最大匹配。
原创
2021-07-22 14:08:53
239阅读
题意: 两台机器,A台机器有N种模式,B台机器有M种不同的模式,初始模式都是0 以及K个需要运行的任务(i,x,y),在A台机器是x模式,在B台机器是y模式。 请合理为每个任务安排一台机器并合理安排顺序, 每个任务要有对应A B机器的模式中至少要有一种来运行 每次切换都会付出代...
转载
2016-05-16 22:28:00
56阅读
2评论