zoukankan      html  css  js  c++  java
  • Bone Collector和I NEED A OFFER!

    两个的01背包,第一个没变型,是最简单的;
    第二个稍稍变形了一点。第一题链接:https://cn.vjudge.net/contest/146325#problem/O
    第二:https://cn.vjudge.net/contest/146325#problem/L
    密码:ACM7114
    下面看看这两个代码,对比一下吧!会学的更快;

    第一个
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    int v1[1005];
    int w[1005];
    int f[1005];
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            memset(v1,0,sizeof(v1));
            memset(w,0,sizeof(w));
            memset(f,0,sizeof(f));
            int i,j;
            int n,v;
            scanf("%d%d",&n,&v);
            for(i=1; i<=n; i++)
            {
                scanf("%d",&v1[i]);
            }
            for(j=1; j<=n; j++)
            {
                scanf("%d",&w[j]);
            }
            for(i=1; i<=n; i++)
            {
                for(j=v; j>=w[i]; j--)//01背包应该注意从后向前因为与前面有关
                {
                        f[j]=max(f[j],f[j-w[i]]+v1[i]);
                }
            }
            printf("%d
    ",f[v]);
        }
        return 0;
    }
    他可以收到至少一份offer的最大概率;
    因为不好求,所以求他的相反最小概率即可。
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    using namespace std;
    const int M = 10005;
    int v[10005];
    double f[10005],w[10005];
    int main()
    {
        int m,n;
        while(~scanf("%d%d",&m,&n))
        {
            int i,j;
            if(m==0&&n==0)
                break;
            memset(f,0,sizeof(f));
            for(i=1; i<=n; i++)
            {
                int a1;
                double a2;
                scanf("%d%lf",&v[i],&w[i]);
                w[i]=1-w[i];
            }
            for(i=0; i<=10005; i++)
                f[i]=1;
            for(i=1; i<=n; i++)
            {
                for(j=m; j>=v[i]; j--)
                {
                    f[j]=min(f[j],f[j-v[i]]*w[i]);
                }
            }
            f[m]=(1-f[m])*100;
            printf("%.1lf%%
    ",f[m]);
        }
        return 0;
    }
    "No regrets."
  • 相关阅读:
    今日总结
    今日总结
    每日总结
    每日总结
    小程序之navigator跳转方式
    vue面试题(上)
    ES6 中的 set 用法
    维信小程序 如何 实现下拉刷新?
    微信小程序的相关文件类型有哪些??
    vue中v-if与v-show的区别以及使用场景
  • 原文地址:https://www.cnblogs.com/zxy160/p/7215170.html
Copyright © 2011-2022 走看看