Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
using namespace std; int subjects, people; struct professor { int salary; int n; vector
subject; }; professor candidate[205]; int candidates; int dp[201][1 << 8][1 << 8]; int rec(int at, int bitmask1, int bitmask2) { if((__builtin_popcount(bitmask1) == subjects) and (__builtin_popcount(bitmask2) == subjects)) { return 0; } if(at == candidates) { // cout << bitmask1 << " " << bitmask2 << endl; return 1e8; } if(dp[at][bitmask1][bitmask2] != -1) { return dp[at][bitmask1][bitmask2]; } int new_mask1 = bitmask1; int new_mask2 = bitmask2; for(int i = 0; i < candidate[at].n; i++) { int p = candidate[at].subject[i]; if(new_mask1 & (1 << p)) { new_mask2 |= (1 << p); } else { new_mask1 |= (1 << p); } } int result = 1e8; result = min(result, rec(at + 1, new_mask1, new_mask2) + candidate[at].salary); result = min(result, rec(at + 1, bitmask1, bitmask2)); return dp[at][bitmask1][bitmask2] = result; } int main() { memset(dp, -1, sizeof dp); cin >> subjects >> people; professor initial[people + 1]; int initial_salary = 0; int mask1 = 0, mask2 = 0; for(int i = 0; i < people; i++) { cin >> initial[i].salary >> initial[i].n; initial_salary += initial[i].salary; for(int j = 0; j < initial[i].n; j++) { int p; cin >> p; p--; initial[i].subject.push_back(p); if(mask1 & (1 << p)) { mask2 |= (1 << p); } else { mask1 |= (1 << p); } } } cin >> candidates; for(int i = 0; i < candidates; i++) { cin >> candidate[i].salary >> candidate[i].n; for(int j = 0; j < candidate[i].n; j++) { int p; cin >> p; candidate[i].subject.push_back(p - 1); } } cout << rec(0, mask1, mask2) + initial_salary << endl; return 0; } // 011
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)