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 ;
}
目录
相关文章
|
7月前
|
算法
leetcode:136. 只出现一次的数字(找单身狗)
leetcode:136. 只出现一次的数字(找单身狗)
28 0
|
2月前
lanqiao OJ 22年省赛 扫雷
lanqiao OJ 22年省赛 扫雷
30 1
|
2月前
lanqiao OJ 99 分巧克力
lanqiao OJ 99 分巧克力
14 1
|
2月前
lanqiao OJ 525 传球游戏
lanqiao OJ 525 传球游戏
28 2
|
2月前
lanqiao oj 1203 小明的字符串
lanqiao oj 1203 小明的字符串
12 0
|
2月前
lanqiao OJ 健身
lanqiao OJ 健身
13 0
|
2月前
|
人工智能
lanqiao OJ 109 分考场
lanqiao OJ 109 分考场
13 0
|
2月前
lanqiao OJ 98 包子凑数
lanqiao OJ 98 包子凑数
9 0
|
2月前
lanqiao oj 1135 蓝桥幼儿园(并查集)
lanqiao oj 1135 蓝桥幼儿园(并查集)
27 0
|
2月前
lanqiao OJ 2097 青蛙过河
lanqiao OJ 2097 青蛙过河
11 0