【HDU 2167】 Pebbles
【题目链接】
【算法】
状压DP
先搜出一行符合的情况,然后,f[i][j]表示第i行,状态为j,能够取得的最大值,DP即可
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 16
const int MAXS = ; int i,j,k,n,tot,ans,val,MASK;
int a[MAXN][MAXN],f[MAXN][MAXS],ST[MAXS];
char c; int main()
{ while (scanf("%d",&a[][]) != EOF)
{
n = ;
tot = ans = ;
memset(f,,sizeof(f));
scanf("%c",&c);
while (c != '\n')
{
scanf("%d",&a[][++n]);
scanf("%c",&c);
}
for (i = ; i <= n; i++)
{
for (j = ; j <= n; j++)
{
scanf("%d",&a[i][j]);
}
}
MASK = ( << n) - ;
for (i = ; i <= MASK; i++)
{
if (i & (i << )) continue;
ST[++tot] = i;
for (j = ; j < n; j++)
{
if (i & ( << j))
f[][tot] += a[][j+];
}
}
for (i = ; i <= n; i++)
{
for (j = ; j <= tot; j++)
{
val = ;
for (k = ; k < n; k++)
{
if (ST[j] & ( << k))
val += a[i][k+];
}
for (k = ; k <= tot; k++)
{
if (ST[j] & ST[k]) continue;
if (ST[j] & (ST[k] >> )) continue;
if (ST[j] & (ST[k] << )) continue;
f[i][j] = max(f[i][j],f[i-][k] + val);
}
}
}
for (i = ; i <= n; i++)
{
for (j = ; j <= tot; j++)
{
ans = max(ans,f[i][j]);
}
}
printf("%d\n",ans);
scanf("%c",&c);
} return ;
}
【HDU 2167】 Pebbles的更多相关文章
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【HDU 2196】 Computer(树的直径)
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...
- 【HDU 2196】 Computer (树形DP)
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...
- 【HDU 5145】 NPY and girls(组合+莫队)
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...
- 【hdu 1043】Eight
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1043 [题意] 会给你很多组数据; 让你输出这组数据到目标状态的具体步骤; [题解] 从12345 ...
- 【HDU 3068】 最长回文
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/s ...
- 【HDU 4699】 Editor
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...
随机推荐
- ubuntu使用git提交github时,执行pull或者push命令要重新输入用户名和密码
ubuntu使用git提交github时,执行pull或者push命令要重新输入用户名和密码: 1:问题现象: hlp@hlp:~/code/github_code/catch_imooc1$ git ...
- 洛谷P2814 家谱(gen)
题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...
- Java的发送邮件
以下内容引用自http://wiki.jikexueyuan.com/project/java/sending-email.html: 用Java应用程序来发送一封电子邮件是足够简单的,但是开始时应该 ...
- 从头开始学Android之(二)—— Android版本
前面大致的介绍了一下Android的Linux内核层,知道Android是Google在Linux基础上创建的一个应用于移动设备的系统,并在针对移动设备的特殊性,在Linux上做了一些相应的改动建立起 ...
- CheckStyle: 解决Unicode导致LineLength出错的问题
在checkstyle.xml中,加上如下代码: <?xml version="1.0" encoding="UTF-8"?> <module ...
- JAVA数组去除重复数据
一.用List集合实现 , , , , , , ,}; List<Integer> list = new ArrayList<Integer>(); ; i<str. ...
- Notification发送通知
今天学习并測试了Notification组件,这个组件在应用中也经经常使用到.在这里写了一个简单的Demo. Notification是显示在状态栏的消息----位于手机屏幕的最上方. 程序一般通过N ...
- 获取当前时间 YYYY-MM-DD
1.函数封装 /** * 获取当前时间 * 格式YYYY-MM-DD */ Vue.prototype.getNowFormatDate = function() { var date = new D ...
- unix时间戳(unix timestamp)与北京时间的互转方法
1.在linux bash下北京时间与unix时间戳互转: 获取unix timestamp: 命令:date "+%s" 输出:1372654714 获取北京时间: 命令:dat ...
- 初探swift语言的学习笔记十一(performSelector)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...