답안 #63268

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
63268 2018-08-01T08:00:05 Z 윤교준(#1834) Vim (BOI13_vim) C++11
50 / 100
116 ms 2928 KB
#include <bits/stdc++.h>
#define rf(x) (x)=0;while(*p<48)p++;while(47<*p)(x)=((x)<<3)+((x)<<1)+(*p++&15);
#define pb push_back
#define eb emplace_back
#define sz(V) ((int)(V).size())
#define befv(V) ((V)[(sz(V)-2)])
#define allv(V) ((V).begin()),((V).end())
#define sorv(V) sort(allv(V))
#define revv(V) reverse(allv(V))
#define univ(V) (V).erase(unique(allv(V)),(V).end())
#define clv(V) (V).clear()
#define upmin(a,b) (a)=min((a),(b))
#define upmax(a,b) (a)=max((a),(b))
#define INF (0x3f3f3f3f)
#define INFLL (0x3f3f3f3f3f3f3f3fll)
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const bool debug = 0;
const int MAXN = 505;

vector<pii> G[MAXN];
int D[MAXN][MAXN];
int dp[MAXN][MAXN];

vector<int> CV[11];
vector<int> IV;

int B[MAXN];
char A[MAXN];

int N, Ans;

int f(int x, int y) {
	int n = sz(IV);
	if(x+1 == n) return 0;
	int &ret = dp[x][y];
	if(ret < INF) return ret;

	for(int t = x+1; t < n; t++)
		upmin(ret, f(t, x+1) + D[IV[y]][IV[t]] + D[IV[t]][IV[x+1]]);
	return ret;
}

int main() {
	scanf("%d %s", &N, A+1);

	{
		vector<int> V, VI(1, 0);
		for(int i = 1; i <= N; i++) {
			if('e' == A[i]) {
				Ans += 2;
				continue;
			}
			V.eb(A[i]-'a'+1);
			if('e' == A[i-1]) VI.eb(sz(V)-1);
		}

		N = sz(V);
		for(int i = 1; i <= N; i++)
			B[i] = V[i-1];
		for(int v : VI) IV.eb(v+1);
	}
	if(!Ans) {
		puts("0");
		return 0;
	}

	if(debug) {
		printf("N=%d\n", N);
		for(int i = 1; i <= N; i++)
			printf("%d ", B[i]);
		puts("");
		for(int v : IV) printf("%d ", v);
		puts("");
	}

	for(int i = 1; i <= N; i++) CV[B[i]].eb(i);
	for(int i = 2; i <= N; i++) G[i].eb(i-1, 1);
	{
		int col[11] = {0, };
		for(int i = N; i; i--) {
			for(int j = 1; j <= 10; j++)
				if(col[j]) G[i].eb(col[j], 2);
			col[B[i]] = i;
		}
	}
	
	for(int i = 1; i <= N; i++) {
		fill(D[i], D[i]+N+1, INF);
		for(pii &e : G[i]) D[i][e.first] = e.second;
		D[i][i] = 0;
	}
	for(int k = 1; k <= N; k++) for(int i = 1; i <= N; i++) for(int j = 1; j <= N; j++)
		upmin(D[i][j], D[i][k] + D[k][j]);
	
	for(int i = 0; i < sz(IV); i++)
		fill(dp[i], dp[i]+sz(IV), INF);
	
	Ans += f(0, 0);

	cout << Ans << endl;
	return 0;
}

Compilation message

vim.cpp: In function 'int main()':
vim.cpp:49:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %s", &N, A+1);
  ~~~~~^~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 1144 KB Output is correct
2 Correct 43 ms 1440 KB Output is correct
3 Correct 25 ms 1440 KB Output is correct
4 Correct 59 ms 1440 KB Output is correct
5 Correct 34 ms 1440 KB Output is correct
6 Correct 80 ms 1692 KB Output is correct
7 Correct 49 ms 1692 KB Output is correct
8 Correct 7 ms 1692 KB Output is correct
9 Correct 2 ms 1692 KB Output is correct
10 Correct 3 ms 1692 KB Output is correct
11 Correct 2 ms 1692 KB Output is correct
12 Correct 3 ms 1692 KB Output is correct
13 Correct 34 ms 1692 KB Output is correct
14 Correct 76 ms 1692 KB Output is correct
15 Correct 26 ms 1692 KB Output is correct
16 Correct 38 ms 1692 KB Output is correct
17 Correct 82 ms 1708 KB Output is correct
18 Correct 31 ms 1708 KB Output is correct
19 Correct 20 ms 1708 KB Output is correct
20 Correct 24 ms 1708 KB Output is correct
21 Correct 31 ms 1708 KB Output is correct
22 Correct 31 ms 1708 KB Output is correct
23 Correct 116 ms 1708 KB Output is correct
24 Correct 85 ms 1708 KB Output is correct
25 Correct 81 ms 1708 KB Output is correct
26 Correct 61 ms 1708 KB Output is correct
27 Correct 45 ms 1708 KB Output is correct
28 Correct 76 ms 1760 KB Output is correct
29 Correct 73 ms 1760 KB Output is correct
30 Correct 98 ms 1760 KB Output is correct
31 Correct 71 ms 1760 KB Output is correct
32 Correct 81 ms 1760 KB Output is correct
33 Correct 73 ms 1760 KB Output is correct
34 Correct 40 ms 1760 KB Output is correct
35 Correct 56 ms 1760 KB Output is correct
36 Correct 58 ms 1816 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 4 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 3 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 4 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 3 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 3 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 3 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 3 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 3 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 5 ms 1816 KB Execution killed with signal 11 (could be triggered by violating memory limits)
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 2084 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Runtime error 4 ms 2272 KB Execution killed with signal 11 (could be triggered by violating memory limits)
3 Runtime error 5 ms 2348 KB Execution killed with signal 11 (could be triggered by violating memory limits)
4 Runtime error 6 ms 2500 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Runtime error 8 ms 2720 KB Execution killed with signal 11 (could be triggered by violating memory limits)
6 Runtime error 6 ms 2720 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Runtime error 5 ms 2720 KB Execution killed with signal 11 (could be triggered by violating memory limits)
8 Runtime error 6 ms 2792 KB Execution killed with signal 11 (could be triggered by violating memory limits)
9 Runtime error 6 ms 2792 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Runtime error 4 ms 2792 KB Execution killed with signal 11 (could be triggered by violating memory limits)
11 Runtime error 6 ms 2792 KB Execution killed with signal 11 (could be triggered by violating memory limits)
12 Runtime error 5 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Runtime error 5 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
14 Runtime error 4 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Runtime error 6 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
16 Runtime error 5 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Runtime error 5 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
18 Runtime error 6 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
19 Runtime error 6 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Runtime error 5 ms 2928 KB Execution killed with signal 11 (could be triggered by violating memory limits)