zoukankan      html  css  js  c++  java
  • 【积累】【dp】01背包+概率优化(乱搞

    2020 Multi-University Training Contest 4 Contest of Rope Pulling

    就 想不到还能这么搞。学到了

    标程:有那么一点点复杂,但是会更优(更快)一点。

    个人(参考了博客:

    //#pragma GCC optimize(2)
    #include<bits/stdc++.h>
    #define mem(a,b) memset(a,b,sizeof(a))
    using namespace std;
    typedef long long ll;
    const int mod=998244353;
    const int inf=0x3f3f3f3f;
    const int maxn=1e6+5;
    
    struct P{
        int w,v,ly;
    }a[2005];
    mt19937 mt(time(0));
    ll f[maxn];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int n,m;
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)scanf("%d%d",&a[i].w,&a[i].v),a[i].ly=1;
            for(int i=1;i<=m;i++)scanf("%d%d",&a[i+n].w,&a[i+n].v),a[i+n].ly=-1;
            shuffle(a+1,a+1+n+m,mt);
            int up=80000;ll ans=0;
            mem(f,-inf);f[40000]=0;
            for(int i=1;i<=n+m;i++)
            {
                if(a[i].ly>0){
                    for(int j=up;j>=a[i].w;j--)
                        f[j]=max(f[j],f[j-a[i].w]+a[i].v);
                }
                else {
                    for(int j=0;j<=up-a[i].w;j++)
                        f[j]=max(f[j],f[j+a[i].w]+a[i].v);
                }
                ans=max(ans,f[40000]);
            }
            printf("%lld
    ",ans);
        }
    }
    
    
  • 相关阅读:
    flask-scripts
    mysql相关
    day9:函数
    day8:文件操作
    day7:set和深浅copy
    day6:前两小节补充
    day5:字典dict
    day4:数据结构list
    piano class 13
    day3:数据类型 str
  • 原文地址:https://www.cnblogs.com/kkkek/p/13456218.html
Copyright © 2011-2022 走看看