题意:给你一个曲谱由音符组成 曲谱长度是n,有m行,每行有7个音符。一个演奏家可以演奏任意两行的所有音符。曲谱按顺序演奏,问你至少需要几个演奏家,可以把曲谱演奏完。
分析:状态压缩,把字符串化成数,用二进制的或与完成,具体见代码
AC_Code:
1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1e4+10; 5 const int inf=0x3f3f3f3f; 6 #define rep(i,first,last) for(int i=first;i<=last;i++) 7 #define dep(i,first,last) for(int i=first;i>=last;i--) 8 int a[17], song[maxn]; 9 int n,m; 10 char s[5]; 11 int ans; //记录演奏家个数 12 int getid(char *s){ 13 int t=(s[0]-'A')*3;//为什么*3呢?,因为s[1]=='b'的时候要+1,s[1]=='#'的时候要+2 14 if( s[1]=='