设为首页 加入收藏

TOP

sgu-262 Symbol Recognition
2015-11-21 00:59:22 来源: 作者: 【 】 浏览:1
Tags:sgu-262 Symbol Recognition

题目大意:

K N?M 01 矩阵 (1<=N,M<=10,2<=K<=6) ,保证两两不同,然后要你从 N?M 矩阵中选出最少的位置,使得仅靠这些位置就能区分这 K 个矩阵。


解题思路:

我们观察到 K 的范围,发现如果我们将所有矩阵两两是否可以区分的信息存储下来需要的空间是 2K?(K?1)2 ,是可以承受的,然后我们逐格 dp F[i][j][G] 表示考虑到了第 (i,j) 并且区分状态是 G 时所需的最小的选取数,然后我们可以预处理出对于选取 (i,j) 可以区分那几对矩阵。
所以最后的答案就是 F[N][M][2K?(K?1)2?1]


AC代码:

#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          using namespace std; int N,M; int K; int ch[10][20][20]={{{0}}}; int change[20][20]={{0}}; int F[33000]={0}; bool Matrix[33000][11][11]={{{0}}}; int need[20][20]={{0}}; int main() { scanf("%d%d%d",&N,&M,&K); for(int i=1;i<=K;i++) for(int p=1;p<=N;p++) for(int q=1;q<=M;q++) { scanf("%1d",&ch[i][p][q]); for(int j=1;j
         
          =0;p--) { if(change[i][j]==0) continue; if(F[p]+1
          
         
        
       
      
     
    
   
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇scu oj 4445 Right turn 2015年四.. 下一篇sgu-261 Discrete Roots

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: