zoukankan      html  css  js  c++  java
  • 【专业找水题】状压dp最水题,没有之一

    题目链接

    现在代码能力没上升,倒是越来越会找水题了(比例题还水的裸题你值得拥有)

    这网站不是针对竞赛的,所以时空限制都很宽松

    然后就让我水过去了

    对于每个点,包括自己的前m个元素是否取都是一种状态,所以状压一下(才1024不要怂)

     1 #include <cstdio>
     2 int n,m,q;
     3 int a[1001];
     4 int dp[1001][2000];
     5 int max(int a,int b){return(a<b)?b:a;}
     6 int main()
     7 {
     8     scanf("%d%d%d",&n,&m,&q);
     9     for(int i=1;i<=n;i++)
    10         scanf("%d",&a[i]);
    11     int add=1<<(m-1);
    12     for(int i=1;i<=n;i++)
    13         for(int j=0;j<=(add<<1)-1;j++)
    14         {
    15             int k=j,sum=0;
    16             while(k)
    17                 sum+=k&1,k>>=1;
    18             if(sum>q) continue;
    19             dp[i][j>>1]=max(dp[i][j>>1],dp[i-1][j]);
    20             if(sum==q && !(j&1)) continue;
    21             dp[i][(j>>1)+add]=max(dp[i][(j>>1)+add],dp[i-1][j]+a[i]);
    22         }
    23     int ans=0;
    24     for(int j=0;j<=add<<1;j++)
    25         ans=max(ans,dp[n][j]);
    26     printf("%d",ans);
    27     return 0;
    28 } 

    先用这道题熟悉一下状压的套路吧,到时候还要补轮廓线= =

    调试要点:

    1.位运算

    2.位运算

    3.位运算

    (其实就是所有左移右移都要加括号,为了这玩意儿我爆了N发OJ)

  • 相关阅读:
    c++ 虚继承与继承的差异 (转)
    主题:PageRank解释
    (转)开源爬虫larbin分析
    Django随笔
    原生爬虫小Demo
    SVN
    Python的正则表达式与JSON
    类库 方法 模块等
    笔记
    自动补全Typeahead
  • 原文地址:https://www.cnblogs.com/wanglichao/p/5777841.html
Copyright © 2011-2022 走看看