8352 | 2024. 01. 14 23:21:26 | TuruTamas | Festés (50 pont) | cpp17 | Időlimit túllépés 10/50 | 702ms | 35676 KiB |
#include <bits/stdc++.h>
using namespace std;
#ifdef DEBUG
ifstream in_file("minta/be1.txt");
#define input in_file
#define INTHENAMEOFGOD
#else
#define input cin
#define INTHENAMEOFGOD \
ios::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
#endif
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef array<ll, 2> pii;
ll N, M, a, ans = LLONG_MAX;
vector<set<ll>> f(ll i) {
vector<set<ll>> ret;
for (ll l = 0; l <= i; l++) {
for (ll r = i; r < N; r++) {
set<ll> s;
for (ll i = l; i <= r; i++)
s.insert(i);
ret.push_back(s);
}
}
return ret;
}
vector<vector<set<ll>>> vvs;
vector<vvi> C;
vi R;
set<ll> s, festett;
ll g(set<ll>::iterator it, ll m) {
if (it == s.end())
return 0;
if (festett.count(*it))
return g(++it, m);
ll r = LLONG_MAX;
for (auto range : vvs[*it]) {
ll first = *range.begin();
ll last = *range.rbegin();
set<ll> to_remove;
for (ll val : range) {
if (festett.insert(val).second) {
to_remove.insert(val);
}
}
auto nit = it;
nit++;
r = min(r, C[m][first][last] + g(nit, m));
for (ll val : to_remove)
festett.erase(val);
}
return r;
}
void call_g(ll i) {
if (i == N) {
ll ans_tmp = 0;
for (ll m = 0; m < M; m++) {
ans_tmp += g(s.begin(), m);
}
for (ll sor = 0; sor < N; sor++) {
if (!s.count(sor))
ans_tmp += R[sor];
}
ans = min(ans, ans_tmp);
} else {
call_g(i+1);
s.insert(i);
call_g(i+1);
s.erase(i);
}
}
int main() {
INTHENAMEOFGOD
input >> N >> M;
R.resize(N);
for (ll &val : R)
input >> val;
C.resize(M);
for (ll m = 0; m < M; m++) {
C[m].resize(N);
for (ll l = 0; l < N; l++) {
C[m][l].resize(N);
for (ll r = l; r < N; r++) {
input >> C[m][l][r];
}
}
}
vvs.resize(N);
for (ll n = 0; n < N; n++) {
vvs[n] = f(n);
}
call_g(0);
cout << ans << "\n";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 10/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 2076 KiB | |||
2 | Elfogadva | 0/0 | 4ms | 2180 KiB | |||
3 | Időlimit túllépés | 0/2 | 667ms | 21332 KiB | |||
4 | Elfogadva | 2/2 | 13ms | 2772 KiB | |||
5 | Elfogadva | 3/3 | 108ms | 3420 KiB | |||
6 | Időlimit túllépés | 0/2 | 658ms | 5360 KiB | |||
7 | Időlimit túllépés | 0/2 | 702ms | 34312 KiB | |||
8 | Időlimit túllépés | 0/2 | 647ms | 34328 KiB | |||
9 | Időlimit túllépés | 0/2 | 667ms | 34464 KiB | |||
10 | Időlimit túllépés | 0/2 | 676ms | 34772 KiB | |||
11 | Időlimit túllépés | 0/2 | 661ms | 34720 KiB | |||
12 | Időlimit túllépés | 0/2 | 648ms | 32340 KiB | |||
13 | Időlimit túllépés | 0/2 | 669ms | 32524 KiB | |||
14 | Elfogadva | 2/2 | 216ms | 33632 KiB | |||
15 | Elfogadva | 3/3 | 216ms | 33464 KiB | |||
16 | Időlimit túllépés | 0/3 | 667ms | 22984 KiB | |||
17 | Időlimit túllépés | 0/2 | 656ms | 23132 KiB | |||
18 | Időlimit túllépés | 0/3 | 667ms | 23008 KiB | |||
19 | Időlimit túllépés | 0/2 | 657ms | 32468 KiB | |||
20 | Időlimit túllépés | 0/2 | 685ms | 34164 KiB | |||
21 | Időlimit túllépés | 0/2 | 680ms | 35440 KiB | |||
22 | Időlimit túllépés | 0/2 | 657ms | 35664 KiB | |||
23 | Időlimit túllépés | 0/2 | 644ms | 35676 KiB | |||
24 | Időlimit túllépés | 0/2 | 652ms | 35612 KiB | |||
25 | Időlimit túllépés | 0/2 | 657ms | 35672 KiB |