正解:网络流

解题报告:

传送门$QwQ$

这题还,挺有趣的我$jio$得.

考虑依然先是照着最小割的模子建图呗,然后从意义上来分析,割一条边就相当于不吃一种减肥药/买一种药材.由已知得,买的药材数量要和吃的减肥药数量相等,所以考虑只要满足割的边数恰好等于$n$就好$QwQ$

又因为要出现割的局面至少要割$n$条(有一、、显然,,,?懒得证了$QwQ$

所以现在就要考虑割的边数一定是最少的

那不显然使流量都特别大就能实现了嘛$QwQ$

又因为是要$\sum P_{i}$取$min$,所以都变成$inf-p_{i}$就成

然后就做完辣!$over$

(感$jio$只大概说了下原理并没有详细说怎么建图?$QwQ$

就考虑减肥药和药材分别建一排点彼此之间连$inf$,药材和$T$连$inf$,$S$和减肥药连$inf-p_{i}$.

$over$

(还有就,我发现了一个双倍经验$QwQ$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define t(i) edge[i].to
#define w(i) edge[i].wei
#define n(i) edge[i].nxt
#define ri register int
#define rb register int
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];~i;i=n(i)) const int N=+,M=+,inf=1e8;
int n,dep[N],head[N],cur[N],S,T,ed_cnt=-,as;
struct ed{int to,nxt,wei;}edge[N<<]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void ad(ri x,ri y,ri z)
{edge[++ed_cnt]=(ed){x,head[y],z};head[y]=ed_cnt;edge[++ed_cnt]=(ed){y,head[x],};head[x]=ed_cnt;}
il bool bfs()
{
queue<int>Q;Q.push(S);memset(dep,,sizeof(dep));dep[S]=;
while(!Q.empty())
{
ri nw=Q.front();Q.pop();
e(i,nw)if(w(i) && !dep[t(i)]){dep[t(i)]=dep[nw]+,Q.push(t(i));if(t(i)==T)return ;}
}
return ;
}
il int dfs(ri nw,ri flow)
{
if(nw==T || !flow)return flow;ri ret=;
for(ri &i=cur[nw];~i;i=n(i))
if(w(i) && dep[t(i)]==dep[nw]+)
{ri tmp=dfs(t(i),min(flow,w(i)));ret+=tmp,w(i)-=tmp;w(i^)+=tmp,flow-=tmp;}
return ret;
}
il int dinic(){ri ret=;while(bfs()){rp(i,S,T)cur[i]=head[i];while(int d=dfs(S,inf))ret+=d;}return ret;} int main()
{
//freopen("6045.in","r",stdin);freopen("6045.out","w",stdout);
n=read();S=;T=n<<|;memset(head,-,sizeof(head));
rp(i,,n)ad(T,n+i,inf);
rp(i,,n){ri t=read();while(t--){ri tmp=read();ad(tmp+n,i,inf);}}
rp(i,,n){ri tmp=read();ad(i,S,inf-tmp);as-=inf-tmp;}
printf("%d\n",as+dinic());
return ;
}

随机推荐

  1. @atcoder - AGC038E@ Gachapon

    目录 @description@ @solution - 1@ @accepted code - 1@ @solution - 2@ @accepted code - 2@ @details@ @de ...

  2. oracle函数 end

    [功能]当:<表达式>=<表达式条件值1……n> 时,返回对应 <满足条件时返回值1……n> 当<表达式条件值1……n>不为条件表达式时,与函数deco ...

  3. CNN输出维度的计算

    在 CNN 的一层中的 patch 中共享权重 w ,无论猫在图片的哪个位置都可以找到.   当我们试图识别一个猫的图片的时候,我们并不在意猫出现在哪个位置.无论是左上角,右下角,它在你眼里都是一只猫 ...

  4. 1878: [SDOI2009]HH的项 莫队算法-离线查询区间内部不同数字的个数

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  5. Hibernate懒加载导致json数据对象传输异常的问题---(非常重要)

    1. 异常: [console_demo][WARN] [2016-12-15 19:49:35] org.springframework.web.servlet.mvc.support.Defaul ...

  6. echarts细节的修改(2):矩形数图,柱状图,折线图,雷达图等

    1.矩形数图的配置,是直接拿饼图的配置 然后将type换成treemap. 修改类型 option.series.type = 'treemap'; 关闭面包屑导航 option.series.bre ...

  7. jq常用动画fade slide

    https://www.cnblogs.com/sandraryan/ hide(); <div class="box">big box</div> $(' ...

  8. poj 1920 Towers of Hanoi

    Towers of Hanoi Time Limit: 3000MS   Memory Limit: 16000K Total Submissions: 2213   Accepted: 986 Ca ...

  9. Pytorch使用GPU

    pytorch如何使用GPU在本文中,我将介绍简单如何使用GPU pytorch是一个非常优秀的深度学习的框架,具有速度快,代码简洁,可读性强的优点. 我们使用pytorch做一个简单的回归. 首先准 ...

  10. css模仿ipad的日历

    https://www.cnblogs.com/sandraryan/ 题外话之:最近的练习用js之类的写起来会简单点,但是为了巩固基础,只好html和css硬怼页面X﹏X 这是一个日历的代码 注释有 ...