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 ***的更多相关文章

  1. hdu 4044 2011北京赛区网络赛E 树形dp ****

    专题训练 #include<stdio.h> #include<iostream> #include<string.h> #include<algorithm ...

  2. hdu 4050 2011北京赛区网络赛K 概率dp ***

    题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内.当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数 0:表示不能到 ...

  3. hdu 4045 2011北京赛区网络赛F 组合数+斯特林数 ***

    插板法基础知识 斯特林数见百科 #include<iostream> #include<cmath> #include<cstdio> #include<cs ...

  4. hdu 4041 2011北京赛区网络赛B 搜索 ***

    直接在字符串上搜索,注意逗号的处理 #include<cstdio> #include<iostream> #include<algorithm> #include ...

  5. hdu 4046 2011北京赛区网络赛G 线段树 ***

    还带这么做的,卧槽,15分钟就被A了的题,居然没搞出来 若某位是1,则前两个为wb,这位就是w #include<cstdio> #include<cstring> #defi ...

  6. hdu 4043 2011北京赛区网络赛D 概率+大数 **

    推出公式为:P = A(2n,n)/(2^(2n)*n!) 但是不会大数,学完java再补

  7. HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)

    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: ...

  8. hdu 4035 2011成都赛区网络赛E 概率dp ****

    太吊了,反正我不会 /* HDU 4035 dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点 ...

  9. hdu 4031 2011成都赛区网络赛A题 线段树 ***

    就是不知道时间该怎么处理,想了好久,看了别人的题解发现原来是暴力,暴力也很巧妙啊,想不出来的那种  -_-! #include<cstdio> #include<iostream&g ...

随机推荐

  1. openstack 常用命令

    转自: docs.openstack.org $ nova boot --image ubuntu-cloudimage --flavor 1 --user-data mydata.file

  2. Git引用

    原文: http://gitbook.liuhui998.com/7_3.html git中,分支(branch), 远程跟踪分支(remote-tracking branch)以及标签(tag)都是 ...

  3. 《oracle每日一练》免安装Oracle客户端使用PL/SQL

    免安装Oracle客户端使用PL/SQL Oracle客户端挺招人烦的,部署连接它的应用通常需要先安装它的客户端,安装程序要求在目标机器上写注册表,假设你没有洁癖的话,你仍可能被下面的事情绊住:当你的 ...

  4. 【leetcode】Insert Interval

    Insert Interval Given a set of non-overlapping intervals, insert a new interval into the intervals ( ...

  5. 【leetcode】Merge Intervals

    Merge Intervals Given a collection of intervals, merge all overlapping intervals. For example,Given  ...

  6. mybatis xml 大于 小于

    当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序 ...

  7. linux mysql查看安装信息

    ps -ef|grep mysql root               ?        :: /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mys ...

  8. fork详解

    [本文链接] http://www.cnblogs.com/hellogiser/p/fork.html [代码] 下面的代码输出多少个-?  C++ Code  123456789101112131 ...

  9. [Linux]yum开启rpm包缓存

    在CentOS下用yum安装,回发现在/var/cache/yum/下的base.extrs和updates下的packages下都没有发现下载的RPM 原来在/etc/yum.conf下没有设置下载 ...

  10. codeforces 425B Sereja and Table (枚举、位图)

    输入n*m的01矩阵.以及k. n,m<=100,k<=10 问修改至多k个,使得矩阵内的各连通块(连着的0或1构成连通块)都是矩形,且不含另外的数字(边界为0(1)的矩形内不含1(0)) ...