%hz大佬。。这道题的状态压缩简直匪夷所思(其实是我孤陋寡闻,而且我以前的博客竟然写了这题。。水啊)

嗯这题可以发现,我们可以用一个二进制表示一行的状态,1表示选0反之,可以发现行与行之间可选的范围是确定的,比如说:
100
这样的状态适用于每一行,推广一下:
100
001
是适用于任何两行之间的。所以我们可以先将所有成立的状态求出来,要求就是左移一位和右移一位和原状态&运算为0,这样保证每个1左右都没有1。然后枚举行、状态,可以继承的状态,继承可以继承的状态的最大值,然后加上这一行的得到的值即可。

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,mp[][];
int ol,o[],f[][];
bool bj(int x,int y)
{
return ((x&y)==)?true:false;
}
int hehe(int k,int x)
{
int tp=,ans=;
while(x!=)
{
tp++;
if(x%==)ans+=mp[k][tp];
x/=;if(tp==n)break;
}
return ans;
}
int main()
{
scanf("%d",&n);
int t=;for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
scanf("%d",&mp[i][j]);
t=t*;
}
o[++ol]=;f[][]=;
for(int i=;i<t;i++)
if(bj(i,i/)==true&&bj(i,i*)==true)
{
o[++ol]=i;
f[][i]=hehe(,i);
} for(int k=;k<=n;k++)
{
for(int i=;i<=ol;i++)
{
for(int j=;j<=ol;j++)
{
if(bj(o[i],o[j])==true&&bj(o[i],o[j]/)==true&&bj(o[i],o[j]*)==true)
{
f[k][o[i]]=max(f[k][o[i]],f[k-][o[j]]);
}
}
f[k][o[i]]+=hehe(k,o[i]);
}
}
int ans=;
for(int i=;i<=ol;i++)
if(f[n][o[i]]>ans)ans=f[n][o[i]];
printf("%d\n",ans);
return ;
}

caioj1421&&hdu2167: [视频]【状态压缩】选数的更多相关文章

  1. HDU2167(SummerTrainingDay02-D 状态压缩dp)

    Pebbles Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  2. 【BZOJ2734】【HNOI2012】集合选数(状态压缩,动态规划)

    [BZOJ2734][HNOI2012]集合选数(状态压缩,动态规划) 题面 Description <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所 ...

  3. 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举

    题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k& ...

  4. 状态压缩dp(hdu2167,poj2411)

    hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字 ...

  5. HDU2167+状态压缩DP

    状态压缩dp 详见代码 /* 状态压缩dp dp[ i ][ j ]:第i行j状态的最大和 dp[i][j] = max( dp[i-1][k]+sum[i][j] ); 题意:给定一个N*N的方格, ...

  6. poj3254 Corn Fields 利用状态压缩求方案数;

    Corn Fields 2015-11-25 13:42:33 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10658   ...

  7. HDU1565 方格取数(1)(状态压缩dp)

    题目链接. 分析: 说这题是状态压缩dp,其实不是,怎么说呢,题目数据太水了,所以就过了.手动输入n=20的情况,超时.正解是网络流,不太会. A这题时有个细节错了,是dp[i][j]还是dp[i][ ...

  8. BZOJ 3813--奇数国(线段树&欧拉函数&乘法逆元&状态压缩)

    3813: 奇数国 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 755  Solved: 432[Submit][Status][Discuss] ...

  9. Number Game_状态压缩

    Description Christine and Matt are playing an exciting game they just invented: the Number Game. The ...

随机推荐

  1. SVN服务器的部署与安装

    需要下载并安装VisualSVN,TortoiseSVN,VisualSVN-Server三个工具. 其中VisualSVN是SVN针对VisualStudio的插件: TortoiseSVN是客户端 ...

  2. 分享14个很酷的jQuery导航菜单插件

    导航按钮是网站的非常重要的一部分,因其将网站的所有部分而集中一处,jQuery导航菜单插件在其中扮演重要的角色. 本文介绍了14个很酷的jQuery导航菜单插件,它们够漂亮.简单,并且完全兼容各种类型 ...

  3. String painter(区间DP)

    There are two strings A and B with equal length. Both strings are made up of lower case letters. Now ...

  4. Android渐变GradientDrawable叠加组合环ring

     Android渐变GradientDrawable叠加组合环ring 写一个Android环形shape之间的叠加组合形成新图像的例子.代码: <?xml version="1. ...

  5. HDU 4578 线段树复杂题

    题目大意: 题意:有一个序列,有四种操作: 1:区间[l,r]内的数全部加c. 2:区间[l,r]内的数全部乘c. 3:区间[l,r]内的数全部初始为c. 4:询问区间[l,r]内所有数的P次方之和. ...

  6. [NOI2003]Editor(块状链表)

    传送门 看了看块状链表,就是数组和链表的合体. 看上去好高大尚,思想也很简单. 但是发现代码量也不是很小,而且代码理解起来也是费尽得很,倒不如splay用起来顺手. 在加上适用范围貌似不是特别广,所以 ...

  7. SSH日志位置

    # Redhat or Fedora Core: /var/log/secure # Mandrake, FreeBSD or OpenBSD: /var/log/auth.log # SuSE: / ...

  8. windows7 下安装使用Redis

    Redis 安装使用 本地环境:Windows7 64位web环境:wamp集成环境,php版本:PHP Version 7.1.17 学习参考网站: RUNOOB.COM官网  http://www ...

  9. HUNAN 11567 Escaping (最大流)

    http://acm.hunnu.edu.cn/online/?action=problem&type=list&courseid=0&querytext=&pagen ...

  10. CDI Services *Decoretions *Intercepters * Scope * EL\(Sp EL) *Eventmodel

    1.Decorators装饰器综述 拦截器是一种强大的方法在应用程序捕捉运行方法和解耦.拦截器可以拦截任何java类型的调用.  这使得拦截器适合解决事务管理,安全性,以及日记记录.  本质上说,拦截 ...