lanqiao oj 小明的宠物袋

简介: lanqiao oj 小明的宠物袋

15 届蓝桥杯14天国特冲刺营_蓝桥杯 - 蓝桥云课

#include<iostream>
#include<algorithm>
#include<cstring>
 
using namespace std ;
const int N = 12 , M = 35 ;
int a[M][M] ;
int n , m ;
int f[M][1<<N] ;
int row[100100] ;
int t ;
int w[M] ;
int cnt_1(int x){
  int num = 0 ;
  while(x){
    if(x&1) num ++ ;
    x >>= 1 ;
  }
  return num ;
}
int main(){
  cin >> n >> m;
  for(int i = 1 ; i <= n ;i ++){
    int tmp = 0 ;
    for(int j = 1 ; j <= m ; j ++){
      cin >> a[i][j] ;
      tmp |= (a[i][j]<<(j-1)) ;
    }
    w[i] = tmp ;
  }
  for(int i = 0 ; i < 1 << m ; i ++){//判断同一排的合法状态 
    if((i & (i>>1) )==0) row[i] = true ;
    else row[i] = false ;
  }
  
  for(int i = 1 ; i <= n ;i ++){
    for(int j = 0 ; j < 1 << m ; j ++){
      if((w[i] & j) == 0 && (row[j])){
        for(int k = 0 ; k < 1 << m ; k ++){
          if(row[k] && (k&j) == 0&&(w[i-1]&k) == 0)f[i][j] = max(f[i][j] , f[i-1][k]  + cnt_1(j));
        }
      }
    }
  }
  int ans = 0 ;
  for(int i = 0 ; i < 1 << m ; i ++) ans = max(ans,f[n][i]) ;
  cout << ans << endl ;
}
目录
相关文章
|
12天前
lanqiao OJ 22年省赛 扫雷
lanqiao OJ 22年省赛 扫雷
28 1
|
12天前
lanqiao OJ 1505 剪邮票
lanqiao OJ 1505 剪邮票
23 0
|
12天前
lanqiao OJ 99 分巧克力
lanqiao OJ 99 分巧克力
10 1
|
12天前
lanqiao OJ 525 传球游戏
lanqiao OJ 525 传球游戏
25 2
|
9天前
lanqiao oj 1203 小明的字符串
lanqiao oj 1203 小明的字符串
9 0
|
10天前
lanqiao OJ 健身
lanqiao OJ 健身
10 0
|
12天前
|
人工智能
lanqiao OJ 109 分考场
lanqiao OJ 109 分考场
9 0
|
10天前
lanqiao oj 1135 蓝桥幼儿园(并查集)
lanqiao oj 1135 蓝桥幼儿园(并查集)
21 0
|
10天前
lanqiao oj 1122 蓝桥王国
lanqiao oj 1122 蓝桥王国
9 0
|
12天前
lanqiao OJ 110 合根植物
lanqiao OJ 110 合根植物
9 0