提交时间:2024-03-09 17:35:08

运行 ID: 137120

#include <iostream> #include <vector> #include <bitset> #include <climits> using namespace std; int main() { int n, m; cin >> n >> m; vector<bitset<10>> drugs(m); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { int effect; cin >> effect; if (effect == 1) { drugs[i].set(j); } else if (effect == -1) { drugs[i].reset(j); } } } int minDrugs = INT_MAX; for (int i = 0; i < (1 << m); i++) { bitset<10> diseases; int numDrugs = 0; for (int j = 0; j < m; j++) { if (i & (1 << j)) { diseases |= drugs[j]; numDrugs++; } } if (diseases.count() == n) { minDrugs = min(minDrugs, numDrugs); } } if (minDrugs == INT_MAX) { cout << "The patient will be dead." << endl; } else { cout << minDrugs << endl; } return 0; }