hiho week 244 register

Ended

Participants:122

Verdict:Accepted
Score:100 / 100
Submitted:2019-03-09 12:05:55

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e3+23;
int n,m,t,val[MAXN],p[MAXN],v,s;
int dp[MAXN][MAXN];
int solve()
{
    for(int i = 1;i <= n; ++i){
        for(int j = 0;j < (1<<m); ++j){
            if(!dp[i-1][j] && j) continue;
            dp[i][j] = max(dp[i][j],dp[i-1][j]);
            dp[i][j^p[i]] = max(dp[i][j^p[i]],dp[i-1][j]+val[i]);   
        }
    }
    return dp[n][(1<<m)-1];
}
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>n>>m;
        memset(dp,0,sizeof(dp));
        memset(p,0,sizeof(p));
        for(int i = 1;i <= n; ++i){
            cin>>val[i]>>s;
            while(s--){
                cin>>v;
                p[i] ^= (1<<(v-1));
            }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX