hdu 4049 2011北京赛区网络赛J 状压dp ***
cl少用在for循环里
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int MAXN=;
int n,m,tt;
int dp[][<<],cost[MAXN],in[MAXN][MAXN],a[MAXN][MAXN],st[MAXN];
int main()
{
int i,j,k,ca=;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
while(scanf("%d%d",&n,&m)!=EOF&&n&&m)
{
for(i=;i<=m;i++)scanf("%d",cost+i);
for(i=;i<=n;i++)
for(j=;j<=m;j++) scanf("%d",&in[i][j]);
for(i=;i<=n;i++) //陪同
{
for(j=;j<=n;j++) scanf("%d",&a[i][j]);
}
//dp初始化
for(i=;i<=m;i++)
{
for(j=;j<=(<<n)-;j++) dp[i][j]=-;
}
for(i=;i<=(<<n)-;i++) dp[][i]=;
for(i=;i<=m;i++)
for(j=;j<=(<<n)-;j++)
{
int tot=;
//当前状态取得的值
int temp=j;
for(k=;k<=n;k++)
{
st[k]=temp%;
if(st[k]) tot+=(in[k][i]-cost[i]);
temp/=;
}
//printf("%d\n",tot);
//陪伴加成
for(k=;k<=n;k++)
{
for(int kk=k+;kk<=n;kk++)
{
if(st[k]&&st[kk])
{
tot+=a[k][kk];
}
}
}
//之前的转态
int ans=; //状态总和
int pre[<<];
pre[]=j;
for(k=;k<=n;k++)
{
if(!st[k]) //该人当前未出现,则之前可能是出现也可能是没出现
{
int sum=ans;
for(int kk=;kk<ans;kk++)
{
int nst=pre[kk]^(<<(k-));
pre[sum++]=nst;
}
ans=sum;
}
}
//加上之前的转态
int Max=-;
for(k=;k<ans;k++)
{
if(Max<dp[i-][pre[k]])
{
Max=dp[i-][pre[k]];
}
}
dp[i][j]=Max+tot;
}
int Max=-;
for(i=;i<=m;i++)
{
for(j=;j<=(<<n)-;j++)
{
if(Max<dp[i][j]) Max=dp[i][j];
}
}
if(Max<=) printf("STAY HOME\n");
else printf("%d\n",Max);
}
}
hdu 4049 2011北京赛区网络赛J 状压dp ***的更多相关文章
- hdu 4044 2011北京赛区网络赛E 树形dp ****
专题训练 #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm ...
- hdu 4050 2011北京赛区网络赛K 概率dp ***
题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内.当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数 0:表示不能到 ...
- hdu 4045 2011北京赛区网络赛F 组合数+斯特林数 ***
插板法基础知识 斯特林数见百科 #include<iostream> #include<cmath> #include<cstdio> #include<cs ...
- hdu 4041 2011北京赛区网络赛B 搜索 ***
直接在字符串上搜索,注意逗号的处理 #include<cstdio> #include<iostream> #include<algorithm> #include ...
- hdu 4046 2011北京赛区网络赛G 线段树 ***
还带这么做的,卧槽,15分钟就被A了的题,居然没搞出来 若某位是1,则前两个为wb,这位就是w #include<cstdio> #include<cstring> #defi ...
- hdu 4043 2011北京赛区网络赛D 概率+大数 **
推出公式为:P = A(2n,n)/(2^(2n)*n!) 但是不会大数,学完java再补
- HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)
HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others) Memory Limit: ...
- hdu 4035 2011成都赛区网络赛E 概率dp ****
太吊了,反正我不会 /* HDU 4035 dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点 ...
- hdu 4031 2011成都赛区网络赛A题 线段树 ***
就是不知道时间该怎么处理,想了好久,看了别人的题解发现原来是暴力,暴力也很巧妙啊,想不出来的那种 -_-! #include<cstdio> #include<iostream&g ...
随机推荐
- ubuntu查看端口占用
查看端口号 sudo netstat -ltnp | 结束进程 sudo kill pid
- 【GoLang】GoLang 单元测试、性能测试使用方法
单元测试代码: ackage test import ( // "fmt" "testing" ) func Test_FlowControl(t *testi ...
- [转]Java连接各种数据库的方法
//MySQL: String Driver="com.mysql.jdbc.Driver"; //驱动程序 String URL="jdbc:m ...
- 多线程BackroundWorker 使用
参考文章:http://www.cnblogs.com/inforasc/archive/2009/10/12/1582110.html using System; using System.Coll ...
- java读取excel
/* * this function will read from excel * and will return the items of excel */ public static String ...
- js中setInterval与setTimeout用法
setTimeout 定义和用法: setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式. 语法: setTimeout(code,millisec) 参数: ...
- 【linux】vim的一些快捷键
ctrl+y :重复上一行内容 v+移动光标 :选择内容 y :复制选中的内容 p :在光标处粘贴复制的内容 ctrl+v :进入列模式,可以选择多列数据 dd :剪切一行,也可做删除一行使用
- struts2.0整合json
框架:struts2.0+hibernate2+spring 今天写代码时,需要用到json,我就直接加了两个jar包:json-lib-2.1-jdk15.jar,struts2-json-plug ...
- MyEclipse在线安装maven插件最新地址
http://repository.sonatype.org/content/sites/forge-sites/m2e/0.10.0/S/20100209-0800/
- java 500/404错误总结
404是路径错误,简单的说就是你的页面找不到后台执行它的代码(未找到服务端代码)500最常见的就是你的编程语言语法错误导致的(服务端代码报错)