P2622 关灯问题II
Posted sfwr-you
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2622 关灯问题II相关的知识,希望对你有一定的参考价值。
_____________________________________________________________________________________________
逆向DP搞一搞就行
其实感觉本题更适合bfs好一点,没有dp的必要
#include<bits/stdc++.h> using namespace std; int n,m,a[150][20],f[5000]; int now(int val,int lne) int no=val; for(int i=1;i<=n;i++) if(!a[lne][i])continue; if((a[lne][i]==1)&&(val&(1<<(i-1))))no^=(1<<(i-1)); if((a[lne][i]==-1)&&(!(val&(1<<(i-1)))))no^=(1<<(i-1)); return no; int main() cin>>n>>m; for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)cin>>a[i][j]; memset(f,0x3f,sizeof(f)); f[(1<<n)-1]=0; for(int i=(1<<n)-1;i>=0;i--) for(int j=1;j<=m;j++) f[now(i,j)]=min(f[now(i,j)],f[i]+1); cout<<(f[0]==1061109567?-1:f[0]);
以上是关于P2622 关灯问题II的主要内容,如果未能解决你的问题,请参考以下文章