/*与1565的解法差不多*/

#include<stdio.h>

#include<string.h>

int map[16][16];

int dp[2][1<<16];

int h[1<<16];

int Max(int a,int b)

{

 return a>b?a:b;

}

int main()

{

 int m,i,j,k,max;

 m=0;

 for(i=0;i<(1<<16);i++)

  if((i&(i<<1))==0)

   h[m++]=i;

  char s[1001];

  while(gets(s))

  {

   

   int len=strlen(s);

   if(len==0)

    break;

   int num=0;

   for(i=0;i<len;i+=3)

   {

    map[0][num++]=10*(s[i]-'0')+(s[i+1]-'0');

   }

   for(i=1;i<num;i++)

   {

    gets(s);

    int k=0;

    for(j=0;j<len;j+=3)

     map[i][k++]=10*(s[j]-'0')+(s[j+1]-'0');

   }

   memset(dp,0,sizeof(dp));

   int p=0;

   for(i=0;i<num;i++)

   {

    p^=1;

    for(j=0;j<m;j++)

    {

     if(h[j]>(1<<num))

      break;

     max=0;

     for(k=0;k<num;k++)

      if(h[j]&(1<<k))

       max+=map[i][k];

      for(k=0;k<m;k++)

      {

       if(h[k]>(1<<num))

        break;

       if(h[j]&h[k])

        continue;

       if(h[j]&(h[k]<<1))

        continue;

       if(h[j]&(h[k]>>1))

        continue;

       dp[p][h[j]]=Max(dp[p][h[j]],dp[1-p][h[k]]+max);

      }

    }

   }

   int max=0;

   for(i=0;i<m&&i<=(1<<num);i++)

    if(max<dp[p][h[i]])

     max=dp[p][h[i]];

    printf("%d\n",max);

   getchar();

  }

  return 0;

}

hdu 2167 状态压缩的更多相关文章

  1. hdu 2167(状态压缩基础题)

    题意:给你一个矩阵,让你在矩阵中找一些元素使它们加起来和最大,但是当你使用某一个元素时,那么这个元素周围的其它八个元素都不能取! 分析:这是一道比较基础的状态压缩题,也是我做的第三道状态压缩的题,但是 ...

  2. hdu 2167 状态压缩dp

    /* 状态转移方程:dp[i][j]=Max(dp[i][j],dp[i-1][k]+sum[i][j]); */ #include<stdio.h> #include<string ...

  3. HDU 1074 (状态压缩DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...

  4. hdu 4739(状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4739 思路:状态压缩. #include<iostream> #include<cs ...

  5. HDU 3341 状态压缩DP+AC自动机

    题目大意: 调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高 这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态 我最开始对于状态的保存是, ...

  6. hdu 1565(状态压缩基础题)

    题意:容易理解. 分析:这是我做的状态压缩第二题,一开始超内存了,因为数组开大了,后来超时了,因为能够成立的状态就那么多,所以你应该先把它抽出来!!总的来说还是比较简单的!! 代码实现: #inclu ...

  7. HDU 2553 状态压缩

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. hdu 3006(状态压缩)

    The Number of set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. hdu 2489(状态压缩+最小生成树)

    Minimal Ratio Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

随机推荐

  1. PHP的知识点总结1

    PHP 基础知识总结 2015-06-03 分类: 编程技术   PHP 代表 PHP: Hypertext Preprocessor PHP 文件可包含文本.HTML.JavaScript代码和 P ...

  2. android开发学习 ------- RecyclerView多类型实例

    实现RecyclerView多类型的实例:效果如下图所示 public class CarFragment extends Fragment{ private View view; private R ...

  3. BZOJ1132: [POI2008]Tro(叉积 排序)

    题意 世上最良心题目描述qwq 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Sol 直接模拟是$n^3$的. 考虑先枚举一个$i$,那么我们要算的就是$\sum_ ...

  4. CSS预处理less基本使用

    中文API http://lesscss.cn   变量 @变量名:变量值   @maincolor:#aeeeee; @acolor:#ffffff; @ht200:200px; @ht50:50p ...

  5. FragmentTabHost实现标签卡效果

    转载请注明原文链接:http://www.cnblogs.com/yanyojun/p/8099523.html 代码已上传到github:https://github.com/YanYoJun/Fr ...

  6. sql语句分为三类(DML,DDL,DCL)-介绍

    本文知识来源自:<Oracle专家高级编程> 分享作者:Vashon 时间:20150415 DDL is Data Definition Language statements. Som ...

  7. Data Center Manager Leveraging OpenStack

    这是去年的一个基于OpenStack的数据中心管理软件的想法. Abstract OpenStack facilates users to provision and manage cloud ser ...

  8. Win10 系统安装Sql Server2008 R2 数据库遇到的问题及解决办法总结!

    1.开始安装时,提示要先安装 “.NET Framework 3.5(包括.NET 2.0和3.0)”,之前已经下载好.NET Framework 3.5 sp1,安装时还是提示要先安装 “.NET  ...

  9. vue下axios和fetch跨域请求

    1.在config的index.js下面进行常用跨域配置代码:proxyTable: { '/apis': { //使用"/api"来代替"http://xxxx.cn& ...

  10. 洛谷 P1006 传纸条

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的是 ...