zoukankan      html  css  js  c++  java
  • poj1040

    dfs

    没剪枝就过了……

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <algorithm>
    using namespace std;

    #define maxm 23
    #define maxn 8

    struct Order
    {
    int s, e, p;
    }order[maxm];

    int cap, n, m;
    int ans;
    int ocount;
    int down[maxn];

    bool operator < (const Order &a, const Order &b)
    {
    if (a.s == b.s)
    return a.e < b.e;
    return a.s < b.s;
    }

    void input()
    {
    ocount
    = 0;
    for (int i = 0; i < m; i++)
    {
    int a, b, c;
    scanf(
    "%d%d%d", &a, &b, &c);
    order[i].s
    = a;
    order[i].e
    = b;
    order[i].p
    = c;
    }
    }

    void dfs(int i, int p, int money)
    {
    if (i == m)
    {
    ans
    = max(ans, money);
    return;
    }
    if (i > 0)
    for (int j = order[i - 1].s + 1; j <= order[i].s; j++)
    p
    -= down[j];
    if (p + order[i].p <= cap)
    {
    down[order[i].e]
    += order[i].p;
    dfs(i
    + 1, p + order[i].p, money + order[i].p * (order[i].e - order[i].s));
    down[order[i].e]
    -= order[i].p;
    }
    dfs(i
    + 1, p, money);
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    while (scanf("%d%d%d", &cap, &n, &m), cap | n | m)
    {
    input();
    sort(order, order
    + m);
    ans
    = 0;
    dfs(
    0, 0, 0);
    printf(
    "%d\n", ans);
    }
    return 0;
    }
  • 相关阅读:
    杂记
    [POI2015]PUS
    CF786B Legacy(线段树优化建图)
    SP11470 TTM
    [WC2010]重建计划
    [HNOI2014]世界树
    luogu P4842 城市旅行
    [SDOI2016]征途
    [APIO2014]序列分割
    上下界网络流构图证明
  • 原文地址:https://www.cnblogs.com/rainydays/p/2112620.html
Copyright © 2011-2022 走看看