The city planners plan to build N plants in the city which has M shops.

Each shop needs products from some plants to make profit of proiproi units.

Building ith plant needs investment of payipayi units and it takes titi days.

Two or more plants can be built simultaneously, so that the time for building multiple plants is maximum of their periods(titi).

You should make a plan to make profit of at least L units in the shortest period. 

InputFirst line contains T, a number of test cases.

For each test case, there are three integers N, M, L described above.

And there are N lines and each line contains two integers payipayi, titi(1<= i <= N).

Last there are M lines and for each line, first integer is proiproi, and there is an integer k and next k integers are index of plants which can produce material to make profit for the shop.

1 <= T <= 30 
1 <= N, M <= 200 
1≤L,ti≤10000000001≤L,ti≤1000000000 
1≤payi,proi≤300001≤payi,proi≤30000 
OutputFor each test case, first line contains a line “Case #x: t p”, x is the number of the case, t is the shortest period and p is maximum profit in t hours. You should minimize t first and then maximize p.

If this plan is impossible, you should print “Case #x: impossible” 
Sample Input

2

1 1 2
1 5
3 1 1 1 1 3
1 5
3 1 1

Sample Output

Case #1: 5 2
Case #2: impossible
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<queue>
#include<deque>
#include<iomanip>
#include<vector>
#include<cmath>
#include<map>
#include<stack>
#include<set>
#include<fstream>
#include<memory>
#include<list>
#include<string>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
#define MAXN 405
#define L 31
#define INF 1000000009
#define eps 0.00000001
#define sf(a) scanf("%lld",&a)
struct plant
{
LL pay, time;
LL id;
bool operator<(const plant& rhs) const
{
return time < rhs.time;
}
};
struct shop
{
LL cnt, time, pro;
LL pl[MAXN];
};
shop s[MAXN];
plant p[MAXN];
LL g[MAXN << ][MAXN << ];
LL level[MAXN<<];
LL T, n, m, l, st, ed, ans, tmp;
bool bfs()
{
memset(level, -, sizeof(level));
level[st] = ;
queue<LL> q;
q.push(st);
while (!q.empty())
{
LL f = q.front();
q.pop();
for (LL i = ; i <= ed; i++)
{
if (level[i] == - && g[f][i] > )
{
level[i] = level[f] + ;
q.push(i);
}
}
}
return level[ed] > ;
}
LL dinic(LL k, LL low)
{
if (k == ed)return low;
LL a;
for (LL i = ; i <= ed; i++)
{
if (level[i] == level[k] + && g[k][i] > && (a = dinic(i, min(low, g[k][i]))))
{
g[k][i] -= a;
g[i][k] += a;
return a;
}
}
return ;
}
void solve()
{
ans = ;
while (bfs())
{
while (tmp = dinic(st, INF))
ans += tmp;
}
}
int main()
{
sf(T);
for (LL cas = ; cas <= T; cas++)
{
sf(n), sf(m), sf(l);
for (LL i = ; i <= n; i++)
{
sf(p[i].pay), sf(p[i].time);
p[i].id = i;
}
for (LL i = ; i <= m; i++)
{
sf(s[i].pro);
sf(s[i].cnt);
s[i].time = ;
for (LL j = ; j < s[i].cnt; j++)
{
sf(s[i].pl[j]);
s[i].time = max(s[i].time, p[s[i].pl[j]].time);
}
}
sort(p + , p + + n);
bool f = false;
st = n + m + , ed = st + ;
printf("Case #%lld: ", cas);
for (LL i = ; i <= n; i++)
{
memset(g, , sizeof(g));
for (LL j = ; j <= i; j++)
g[p[j].id][ed] = p[j].pay;
LL tot = ;
for (LL j = ; j <= m; j++)
{
if (s[j].time <= p[i].time)
{
tot += s[j].pro;
g[st][j + n] = s[j].pro;
for (LL k = ; k < s[j].cnt; k++)
g[j + n][s[j].pl[k]] = INF;
}
}
solve();
ans = tot - ans;
if (ans >= l)
{
printf("%lld %lld\n", p[i].time, ans);
f = true;
break;
}
}
if (!f)
printf("impossible\n");
}
}

Less Time, More profit 最大权闭合子图(最大流最小割)的更多相关文章

  1. HDU 5855 Less Time, More profit 最大权闭合子图

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5855 Less Time, More profit Time Limit: 2000/1000 MS ...

  2. 【最大权闭合子图 最小割】bzoj1497: [NOI2006]最大获利

    最大权闭合子图的模型:今天才发现dinic板子是一直挂的…… Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在 ...

  3. 洛谷 P4174 [NOI2006]最大获利 && 洛谷 P2762 太空飞行计划问题 (最大权闭合子图 && 最小割输出任意一组方案)

    https://www.luogu.org/problemnew/show/P4174 最大权闭合子图的模板 每个通讯站建一个点,点权为-Pi:每个用户建一个点,点权为Ci,分别向Ai和Bi对应的点连 ...

  4. bzoj 1497 [NOI2006]最大获利【最大权闭合子图+最小割】

    不要被5s时限和50000点数吓倒!大胆网络流!我一个5w级别的dinic只跑了1s+! 看起来没有最大权闭合子图的特征--限制,实际上还是有的. 我们需要把中转站看成负权点,把p看成点权,把客户看成 ...

  5. 洛谷 P2762 太空飞行计划问题 【最大权闭合子图+最小割】

    --一道难在读入的题. 最后解决方案直接getline一行然后是把读优拆掉放进函数,虽然很丑但是过了. 然后就是裸的最大权闭合子图了,把仪器当成负权点向t连流量为其价格的边,s向实验连流量为实验报酬的 ...

  6. BZOJ 1565 / P2805 [NOI2009]植物大战僵尸 (最大权闭合子图 最小割)

    题意 自己看吧 BZOJ传送门 分析 - 这道题其实就是一些点,存在一些二元限制条件,即如果要选uuu则必须选vvv.求得到的权值最大是多少. 建一个图,如果选uuu必须选vvv,则uuu向vvv连边 ...

  7. 【最大权闭合子图/最小割】BZOJ3438-小M的作物【待填】

    [题目大意] 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...n编号),现在,第i种作物种植在A中种植 ...

  8. HDU5855 Less Time, More profit(最大权闭合子图)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5855 Description The city planners plan to build ...

  9. 2018.11.06 NOIP训练 最大获利(profit)(01分数规划+最大权闭合子图)

    传送门 好题啊. ∑i<jpi,jK∗(200−K)>X\frac{\sum_{i<j}p_{i,j}}{K*(200-K)}>XK∗(200−K)∑i<j​pi,j​​ ...

随机推荐

  1. Android使用Gson(相当于C#的Newtonsoft.Json)非常好用

    C#转Java有一段时间了,之前做ASP.NET WebAPI微软竟将第三方类库Newtonsoft.Json作为VS新建MVC和WebAPI项目默认必备的Json工具Nuget包,可想而知这个包有多 ...

  2. 忘记dba用户密码,利用SQLPlus重置dba密码

    打开SQL Plus 输入用户名: sys as sysdba 输入口令:可直接回车 连接到: Oracle Database 11g Enterprise Edition Release 11.2. ...

  3. C++学习之继承篇

    今天通过对实验二继承,重载,覆盖的学习,让我更深一步理解了这些概念的区别. 首先来明确一个概念,函数名即地址,也就是说函数名就是个指针. 编译阶段,编译器为每个函数的代码分配一个地址空间并编译函数代码 ...

  4. OpenFlow_tutorial_4_Create_a_Learning_Switch

    一.环境搭建: 教程里提供的VM image需要梯子才能下载,好不容易下载下来,发现镜像很难用,各种安装问题,搞了好几天也解决不了.后来就自己搭环境,主要是安装Ryu. 1.首先下载相应的python ...

  5. git的使用 及一些常见的错误处理

    git安装使用 添加文件到Git仓库,分两步: 1.使用命令git add <file>,注意,可反复多次使用,添加多个文件: 2.使用命令git commit -m <messag ...

  6. element-ui iview-admin 都是基于vue的ui框架

    element-ui iview-admin 都是基于vue的ui框架

  7. 雷林鹏分享:PHP Secure E-mails

    在上一节中的 PHP e-mail 脚本中,存在着一个漏洞. PHP E-mail 注入 首先,请看上一章中的 PHP 代码: if (isset($_REQUEST['email'])) { // ...

  8. Android中notifyDataSetInvalidated()和notifyDataSetChanged()有什么区别

     看下源码中对于这两个方法   public void notifyDataSetChanged () 该方法内部实现了在每个观察者上面调用onChanged事件.每当发现数据集有改变的情况,或者读取 ...

  9. DIV可编辑后,与限制输入及光标偏移的纠葛

    前言 最近在弄个人的网站,偶然间发现DIV可以设置编辑模式,之前设计的方案在此功能上需要限制输入的长度.网上搜索了一波,综合搜索的结果,考虑使用的监听事件有:keydown .textInput .i ...

  10. nodejs运行机制

    有一天老大忽然问起我这个问题,nodejs运行机制 是怎样的?因自己对nodejs也不是很熟悉,就上网查了一下,得出结果如下: 1.简介 Node.js是一个事件驱动I/O服务端JavaScript环 ...