比赛 |
20140414 |
评测结果 |
AAATTTTTTT |
题目名称 |
奶牛的十项全能 |
最终得分 |
30 |
用户昵称 |
(ˇˍˇ) ~耶稣 |
运行时间 |
7.006 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2014-04-14 11:20:27 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int u=30;
int s[u][u],a[u],p[u];
int ans,n,b;
bool v[u];
int dfs(int x,int mark){
int now=0;
if (x>n) return now;
for (int j=1; j<=n; j++)
if (!v[j]){
v[j]=1;
int rr=s[x][j];
if (mark+rr>=p[x]) rr+=a[x];
rr+=dfs(x+1,mark+rr);
now=max(now,rr);
v[j]=0;
}
return now;
}
void work(){
memset(v,0,sizeof(v));
ans=dfs(1,0);
}
int main(){
freopen("deca.in","r",stdin);
freopen("deca.out","w",stdout);
scanf("%d%d",&n,&b);
int i;
for (i=1; i<=b; i++){
int temp,x,y;
scanf("%d%d%d",&temp,&x,&y);
p[temp]=x;
a[temp]=y;
}
/* p[0]=0; a[0]=0;
for (i=1; i<=n; i++){
if (a[i]==0&&p[i]==0){
a[i]=a[i-1];
p[i]=p[i-1];
}
}
*/
for (i=1; i<=n; i++)
for (int j=1; j<=n; j++)
scanf("%d",&s[j][i]);
work();
printf("%d",ans);
return 0;
}