zoukankan      html  css  js  c++  java
  • 【?】串联电阻 [高精度][动态规划-完全背包]

    串联电阻

    高精+完全背包

    核心

    for(int i=1;i<=n;++i)
    for(int j=1;j<=mt;++j)
    if(j-v[i]>=0) ans[j]=ans[j]+ans[j-v[i]];
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define rg register
     5 const int base=10000,power=4;
     6 const int N=30;
     7 ll n,v[N],tt,t[2005],mt;int cnt;
     8 template<class t>void rd(t &x)
     9 {
    10     x=0;int w=0;char ch=0;
    11     while(!isdigit(ch)) w|=ch=='-',ch=getchar();
    12     while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    13     x=w?-x:x;
    14 }
    15 struct node{
    16     int a,b,c;
    17     bool operator <(const node x) const{return c<x.c;}
    18 }e[N];
    19  
    20 struct num{
    21     int a[100];
    22     num(){memset(a,0,sizeof(a));}
    23     num(int x)
    24     {
    25         memset(a,0,sizeof(a));
    26         int t=0;
    27         while(x)
    28         {
    29             a[++t]=x%base;
    30             x/=base;
    31         }
    32         a[0]=t;
    33     }
    34     void add(int k) {if(k||a[0]) a[++a[0]]=k;}
    35     void re() {reverse(a+1,a+1+a[0]);}
    36     void print()
    37     {
    38         printf("%d",a[a[0]]);
    39         for(rg int i=a[0]-1;i>0;--i)
    40         printf("%0*d",power,a[i]);
    41         printf("
    ");
    42     }
    43 }p,pai;
    44  
    45 bool operator <(const num &p,const num &q)
    46 {
    47     if(p.a[0]<q.a[0]) return 1;
    48     if(p.a[0]>q.a[0]) return 0;
    49     for(rg int i=p.a[0];i>0;--i)
    50     if(p.a[i]!=q.a[i]) return p.a[i]<q.a[i];
    51     return 0;
    52 }
    53  
    54 num operator +(const num &p,const num &q)
    55 {
    56     num c;
    57     c.a[0]=max(p.a[0],q.a[0]);
    58     for(rg int i=1;i<=c.a[0];++i)
    59     {
    60         c.a[i]+=p.a[i]+q.a[i];
    61         c.a[i+1]+=c.a[i]/base,c.a[i]%=base;
    62     }
    63     if(c.a[c.a[0]+1]) ++c.a[0];
    64     return c;
    65 }
    66  
    67 int main()
    68 {
    69     //freopen("in.txt","r",stdin);
    70     while(scanf("%lld",&n)==1&&n)
    71     {
    72         memset(v,0,sizeof(v));
    73         memset(t,0,sizeof(t));
    74         num ans[2005];
    75         ans[0]=num(1),cnt=0,mt=0;
    76         for(rg ll i=1;i<=n;++i) rd(v[i]);
    77         while(scanf("%lld",&tt)==1&&tt) t[++cnt]=tt,mt=max(mt,tt);
    78         for(rg ll i=1;i<=n;++i)
    79         for(rg ll j=1;j<=mt;++j)
    80         {
    81             if(j-v[i]>=0) ans[j]=ans[j]+ans[j-v[i]];
    82         }
    83         for(ll i=1;i<=cnt;++i) ans[t[i]].print();
    84     }
    85     return 0;
    86 }
    100昏 高精+完全背包
  • 相关阅读:
    jQuery -JQ方法大全
    Javascript模块化编程:模块的写法
    angular 路由的简单使用
    jQuery Validate验证框架
    网站出现403 Forbidden错误的原因和解决办法
    js下拉刷新
    bootstrap栅格系统的属性及使用
    AJAX 跨域请求
    用js实现分页效果
    用一个例子读懂 RequireJS
  • 原文地址:https://www.cnblogs.com/lxyyyy/p/10773318.html
Copyright © 2011-2022 走看看