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 ...
随机推荐
- phpcms更换域名||外网访问本地网站
在网站在发展的过程中,很可能多次的修改域名:然后就发现我的搜索页还是之前的域名的链接地址,那么在PHPCMS V9中我们要怎么进行设置呢? 请进行以下步骤的修改: 修改/caches/config ...
- ubuntu安装skype
1.添加源 sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner&quo ...
- python——有限状态机
前言 使用Python,大部分时间花在了处理文本上.在处理文本的时候,如果对有限状态机有所了解的话,处理起来会更加得心应手.可以把文本看成一个流,然后有一个机器对这个流进行操作.这个机器有状态,不同的 ...
- Course Schedule I & II
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...
- Delete a node from BST
Given a root node reference of a BST and a key, delete the node with the given key in the BST. Retur ...
- [转载]python gevent
原地址: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001407503089 ...
- Google Code Jam 2015 R2 C
题意:给出若干个句子,每个句子包含多个单词.确定第一句是英文,第二句是法文.后面的句子两者都有可能.两个语种会有重复单词. 现在要找出一种分配方法(给每个句子指定其文种),使得既是英文也是法文的单词数 ...
- Oracle10g下载地址--多平台下的32位和64位
前段时间ORACLE把10G的下载从官网拿掉了 ,许多童鞋不知道ORACLE 10g 的下载地址,这里我附上oracle 10g 下载的链接,方便大家下载. 点击链接使用迅雷即可下载. ...
- DATEADD和DATEDIFF函数、其他日期处理方法 、已打开的端口、FORMAT函数
DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.FORMAT函数 DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.Format函数 KeyLife富翁笔 ...
- java web 学习 --第二天(Java三级考试)
第一天的学习在这http://www.cnblogs.com/tobecrazy/p/3444474.html 2.jsp 基础知识 Jsp页面中的Java脚本主要有3部分:声明(Declaratio ...