vijos1048
表示不是很懂为什么这个是七级题。。
这是一道不明复杂度的玄学搜索题
大概是sigma(i,1,n)C(i,n)。。n<=50
然而实际上过所有数据30ms不到
这里我们用邻接表来存冲突关系
enm表示当前状态该节点有多少个与其冲突的人
然后dfs下去
这就是朴素的思路
inline void dfs(int x,int now)
{
if(x==n+1)
{
ans=max(ans,now);
return;
}
if(!enm[x])
{
For(i,1,list[x][0])
enm[list[x][i]]++;
dfs(x+1,now+a[x].v);
For(i,1,list[x][0])
enm[list[x][i]]--;
}
dfs(x+1,now);
}
然而显然妥妥tle啊
那怎么办呢