zoukankan      html  css  js  c++  java
  • Doing Homework HDU

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<string>
    #include<cmath>
    using namespace std;
    const int INF=0x3f3f3f3f;
    const int MAXN=(1<<15)+5;
    const int MOD=1e9+7;
    int dead[20],cost[20];
    int dp[MAXN],t[MAXN];
    char s[20][105];
    int pre[MAXN];
    void print(int x)
    {
        if(x==0)
            return;
        print(x^(1<<pre[x]));
        printf("%s
    ",s[pre[x]] );
    }
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            memset(pre,0,sizeof pre);
            int n;
            scanf("%d",&n);
            for(int i=0; i<n; i++)
                scanf("%s%d%d",s[i],&dead[i],&cost[i] );
            for(int i=1; i<(1<<n); i++)
            {
                dp[i]=INF;
                for(int j=n-1; j>=0; j--)
                {
                    int tmp=1<<j;
                    //如果没有做 
                    if(! (i&tmp) )
                        continue;
                    //做这个题之后的分数+花费-期限=扣得分 
                    int score=t[i^tmp]+cost[j]-dead[j];
                    //如果小于,说明不扣分 
                    if(score<0)
                        score=0;
                    //如果当前的状态扣的分数   >  做这个题之后扣的分 
                    if(dp[i]>dp[i^tmp]+score)
                    {
                        //分数
                        dp[i]=dp[i^tmp]+score;
                        //花的时间
                        t[i]=t[i^tmp]+cost[j];
                        //转移状态,这个状态下做的题 
                        pre[i]=j;
                    }
                }
            }
            printf("%d
    ", dp[(1<<n)-1]);
            print((1<<n)-1);
        }
        return 0;
    }
  • 相关阅读:
    用于区分IE的:条件注释
    详解css:background
    scrollTop总为零原因;如何查看滚动条的位置或者说滚动条的滚动距离(待完善)
    过滤器Filter与监听器Listener
    JSP标签
    servlet
    JSP
    一个CSS简单入门网站
    开始写博客了!
    _nop()
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12238191.html
Copyright © 2011-2022 走看看