zoukankan      html  css  js  c++  java
  • Luogu P1282 多米诺骨牌 DP。。背包?

    背包。。。差不多。。QWQ


    设f[i]为达到差值为i的状态需要多少次,那就很显然了; 注意区分正负不同的代价的循环方向

    技巧:如果不想改负数的话,那可以移动一下数组下标,用一个新的指针指向原来的数组

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #define R register int
    const int lim=6000;
    using namespace std;
    inline int g() {
        R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;
        do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
    }
    int n,sum;
    int s[1010],d[13010],*f=d+lim;
    inline int abs(int x) {return x>0?x:-x;}
    signed main() {
        n=g(); for(R i=1,a,b;i<=n;++i) a=g(),b=g(),s[i]=a-b,sum+=s[i];
        memset(d,0x3f,sizeof(d)); f[sum]=0; 
        for(R i=1;i<=n;++i) 
            if(s[i]<0) for(R j=lim;j>=-lim;--j) f[j]=min(f[j],f[j+2*s[i]]+1);
            else if(s[i]>0) for(R j=-lim;j<=lim;++j) f[j]=min(f[j],f[j+2*s[i]]+1);
        for(R i=0;i<=abs(sum);++i) if(min(f[i],f[-i])!=0x3f3f3f3f) {printf("%d
    ",min(f[i],f[-i])); break;}
    }

    2019.04.29

  • 相关阅读:
    Fiddler实现手机抓包——小白入门
    linux中的baff/cache占用大量内存,如何清理?
    禁止用su切换到root
    Cookie和Session和token
    HTTP 与HTTPS
    Tcp/Ip的分层
    IP基础知识
    计算机基础<一>
    【java基础】内部类
    【JAVA基础】Java中四种权限修饰符
  • 原文地址:https://www.cnblogs.com/Jackpei/p/10783675.html
Copyright © 2011-2022 走看看