首页 > 代码库 > zoj 3229 Shoot the Bullet

zoj 3229 Shoot the Bullet

                           Shoot the Bullet

 

题目:

   一个叫雅各的人想在外太空的N天里给M个妹子照相。但是,雅各和妹子对照相都有要求。

   每一天雅各有C个妹子愿意让他照相,而每个妹子对照相的都有一个要求,就是总相片书小于Gi,而如果某天出现了则当天的相片数在[L,R].因为,如果多了妹子就会爆发把雅各暴打一顿。而雅各也有要求,就是每天的相片数不超过D,多了雅各也会不高兴。

  要求你求出满足条件下最多相片的方案。

 

算法分析:

    有源汇上下界最大流。

    这题的建图还是比较容易得到了,就是在输出图的时候我调试了好久。T_T

    每一天[0,D]给源点建立,如果,该天某个妹子出现了,则把妹子和这一天连上一条边处理方法是上下界的处理(R-L)如果不懂得可以网上找论文。推荐的时周源的。

 

 

 

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;

const int INF = 1 << 30;
const int MAXN = 1500;
struct Edge{
    int from,to,cap,flow,cost;
    Edge(){};
    Edge(int _from,int _to,int _cap,int _flow)
       :from(_from),to(_to),cap(_cap),flow(_flow){};
};

vector<Edge> edges;
vector<int> G[MAXN];
vector<int> road[400];
bool vst[MAXN];
int cur[MAXN],d[MAXN];
int in[MAXN];
int low[400][1005];
int s,t,src,sink,cnt,N,M;

void init(){
   src = http://www.mamicode.com/t + 1; sink = src + 1;>


 

zoj 3229 Shoot the Bullet