답안 #201197

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
201197 2020-02-09T18:40:45 Z SamAnd Vještica (COCI16_vjestica) C++17
160 / 160
132 ms 892 KB
#include <bits/stdc++.h>
using namespace std;
const int N = 18, M = 1000006;

int n;
char s[M];
int a[N][26];

int b[(1 << N)];

int dp[(1 << N)];

int main()
{
    //freopen("input.txt", "r", stdin);
    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
    {
        scanf(" %s", s);
        int m = strlen(s);
        for (int j = 0; j < m; ++j)
            a[i][s[j] - 'a']++;
    }
    for (int x = 1; x < (1 << n); ++x)
    {
        for (int j = 0; j < 26; ++j)
        {
            int minu = M;
            for (int i = 0; i < n; ++i)
            {
                if ((x & (1 << i)))
                {
                    minu = min(minu, a[i][j]);
                }
            }
            b[x] += minu;
        }
    }
    for (int x = 1; x < (1 << n); ++x)
    {
        dp[x] = M;
        int q = 0;
        for (int i = 0; i < n; ++i)
        {
            if ((x & (1 << i)))
            {
                ++q;
            }
        }
        if (q == 1)
        {
            dp[x] = b[x];
            continue;
        }
        for (int y = (x - 1) & x; y; y = (y - 1) & x)
        {
            int z = (x ^ y);
            dp[x] = min(dp[x], b[x] + dp[z] + dp[y] - b[x] - b[x]);
        }
    }
    printf("%d\n", dp[(1 << n) - 1] + 1);
    return 0;
}

Compilation message

vjestica.cpp: In function 'int main()':
vjestica.cpp:16:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
     ~~~~~^~~~~~~~~~
vjestica.cpp:19:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf(" %s", s);
         ~~~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 248 KB Output is correct
2 Correct 5 ms 376 KB Output is correct
3 Correct 5 ms 376 KB Output is correct
4 Correct 121 ms 892 KB Output is correct
5 Correct 120 ms 888 KB Output is correct
6 Correct 120 ms 888 KB Output is correct
7 Correct 132 ms 888 KB Output is correct
8 Correct 122 ms 888 KB Output is correct
9 Correct 127 ms 888 KB Output is correct
10 Correct 123 ms 888 KB Output is correct