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的主要内容,如果未能解决你的问题,请参考以下文章

P2622 关灯问题II(状压&spfa)

luogu p2622关灯问题II

状态压缩入门 P2622 关灯问题II

P2622 关灯问题II

关灯问题II 状压DP

关灯问题II