| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
各种wa 求掐#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int p[201],used0[201],used1[201],n;
bool g[201][201];
int maxl(int x,int y)
{
return x>y?x:y;
}
int dfs1(int x);
int dfs0(int x);
int dfs0(int x)
{
if(used0[x]!=-1)return used0[x];
int i,tmp;
tmp=0;
for(i=0;i<n;i++)
{
if(g[x][i]==1)
{
tmp+=dfs1(i);
}
}
tmp+=p[x];
used0[x]=tmp;
return tmp;
}
int dfs1(int x)
{
if(used1[x]!=-1)return used1[x];
int i,tmp;
tmp=0;
for(i=0;i<n;i++)
{
if(g[x][i]==1)
{
tmp+=maxl(dfs0(i),dfs1(i));
}
}
used1[x]=tmp;
return tmp;
}
int main()
{
int i,j,k,t,m,used[201];
while(cin>>n>>m)
{
if(n==0&&m==0)break;
for(i=0;i<n;i++)
{
cin>>p[i];
}
memset(g,0,sizeof(g));
memset(used0,-1,sizeof(used0));
memset(used1,-1,sizeof(used1));
memset(used,0,sizeof(used));
for(i=0;i<m;i++)
{
cin>>t;
for(k=0;k<n;k++)
{
for(j=k-1;j>=0;j--)
{
if(p[k]-p[j]==t)
{
g[j][k]=1;
used[k]=1;
}
}
}
}
k=0;
for(i=0;i<n;i++)
{
if(used[i]==0)k+=maxl(dfs0(i),dfs1(i));
}
cout<<k<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator