QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#834181#3414. Diagrams & TableauxSGColin#AC ✓10ms3816kbC++201.5kb2024-12-27 12:52:512024-12-27 12:52:53

Judging History

This is the latest submission verdict.

  • [2024-12-27 12:52:53]
  • Judged
  • Verdict: AC
  • Time: 10ms
  • Memory: 3816kb
  • [2024-12-27 12:52:51]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef tuple<int, int, int> tii;
typedef vector<int> vi;

#define pb push_back
#define eb emplace_back
#define all(s) (s).begin(), (s).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)

int n, m, L, l[10];

vector<vi> S[8];

void dfs(int l, int mn, vi s) {
    if (l == 0) {S[L].eb(s); return;}
    rep(i, mn, m) {
        s.eb(i);
        dfs(l - 1, i + 1, s);
        s.pop_back();
    }
}

inline void work() {
    rep(i, 1, 7) l[i] = 0;
    rep(i, 1, n) {
        S[i].clear();
        int w; cin >> w;
        rep(j, 1, w) l[j] = i;
    }
    cin >> m;
    rep(i, 1, n) {L = i; dfs(i, 1, vector<int>{});}
    vector<ll> dp[8];
    for (n = 7; l[n] == 0; --n);
    auto check = [&](vi nw, vi pre) {
        rep(i, 0, (int)nw.size() - 1) if (nw[i] < pre[i]) return false;
        return true;
    };
    rep(i, 0, (int)S[l[1]].size() - 1) dp[1].eb(1);
    rep(i, 2, n) {
        rep(j, 0, (int)S[l[i]].size() - 1) {
            ll ans = 0;
            rep(k, 0, (int)S[l[i - 1]].size() - 1)
                if (check(S[l[i]][j], S[l[i - 1]][k])) ans += dp[i - 1][k];
            dp[i].eb(ans);
        }
    }
    ll ANS = 0;
    for (auto x : dp[n]) ANS += x;
    printf("%lld\n", ANS);
}

int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    while (cin >> n) work();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3816kb

input:

1 1
1
1 1
2
2 2 1
4
4 3 2 1 1
4

output:

1
2
20
20

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 10ms
memory: 3740kb

input:

4 7 7 7 2
5
5 6 6 4 2 2
7
6 6 6 4 3 2 1
7
7 7 7 7 7 4 2 2
7
7 7 7 7 7 5 3 2
7
6 6 6 5 3 2 1
7
7 7 7 7 7 5 2 2
7
4 7 6 4 1
5
6 6 6 6 6 4 2
7
5 6 6 6 3 1
7
7 7 7 7 7 7 3 2
7
4 7 7 6 1
5
6 6 6 6 4 2 1
7
6 6 6 6 5 2 1
7
4 7 7 6 2
5
6 6 6 6 6 6 6
7
4 7 6 4 2
5
5 6 6 6 5 3
7
7 7 7 7 6 3 2 2
7
7 7 7 7 5 4 ...

output:

6930
2656192
2838528
194040
124740
3492720
138600
31185
336798
3430350
19404
15840
2587200
1892352
15400
924
26730
1778700
465696
519750
21560
2097152
4752
462
56
2276736
12936
1155
224
66528
473088
3201660
13860
6468
41580
4125
20
623700
8
242550
155232
762300
26400
5292540
727650
360
2475
23100
10...

result:

ok 108 lines