QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#464378#6955. AssignmentfsavcxzWA 120ms4188kbC++202.4kb2024-07-06 02:38:512024-07-06 02:38:52

Judging History

你现在查看的是最新测评结果

  • [2024-07-06 02:38:52]
  • 评测
  • 测评结果:WA
  • 用时:120ms
  • 内存:4188kb
  • [2024-07-06 02:38:51]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
const int N = 105;
#define pb push_back
int a[N],b[N],cost[N][N],dp[N][N][13],tp[N][13];
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
    //freopen("in", "r", stdin);
	int T;
	cin >> T;
	while(T--){
		int n,k;
		cin >> n >> k;
		for(int i = 1;i <= n;i++)cin >> a[i];
		for(int i = 1;i <= n;i++)cin >> b[i];

		for(int i = 1;i <= n;i++){
			for(int j = 1;j <= n;j++){
				cin >> cost[i][j];
			}
		}
		for(int i = 0;i <= n + 1;i++){
			for(int j = 0;j <= n + 1;j++){
				for(int t = 0;t <= k;t++){
					if(i <= j)dp[i][j][t] = (int)1e9;
					tp[j][t] = (int)1e9;
				}
			}
		}
		for(int l = 1;l <= n;l++){
            if(a[l] == b[l]){
                dp[l][l][0] = 0;
            }else{
                dp[l][l][1] = 0;
                dp[l][l][0] = cost[b[l]][1];
            }
		}
		for(int l = n;l >= 1;l--){
				for(int r = 0;r <= n + 1;r++){
					for(int y = 0;y <= k;y++){
						tp[r][y] = (int)1e9;
					}
				}

			int lst = -1;
			for(int c = b[l];c <= b[l];c++){
				for(int y = 0;y <= k;y++){
					tp[l - 1][y] = 0;
				}

				for(int r = l;r <= n;r++){
					for(int y = 0;y <= k;y++){
						tp[r][y] = (int)1e9;
					}
					if(b[r] == c){
                        for(int y = 0;y <= k;y++){
                            tp[r][y] = min(tp[r - 1][y], tp[r][y]);
                        }
					}
					if(b[r] == c)
                        for(int j = l - 1;j < r;j++){
                            for(int y = 0;y <= k;y++){
                                for(int x = 0;x + y <= k;x++){
                                    if(b[j] == c){
                                        tp[r][x + y] = min(tp[r][x + y], tp[j][x] + dp[j + 1][r][y]);
                                    }
                                }
                            }
                        }

				}
			}
			for(int r = l + 1;r <= n;r++){
					for(int x = 0;x <= k;x++){
						dp[l][r][x] = min(dp[l][r][x], tp[r][x] + cost[b[l]][r - l + 1]);
					}


				for(int i = l;i < r;++i){
					for(int x = 0;x <= k;x++){
						for(int y = 0;x + y <= k;y++){
							dp[l][r][x + y] = min(dp[l][r][x + y], dp[l][i][x] + dp[i + 1][r][y]);
						}
					}
				}
			}
		}
		cout << dp[1][n][0] << ' ';
		for(int x = 1;x <= k;x++){
			dp[1][n][x] = min(dp[1][n][x], dp[1][n][x - 1]);
			cout << dp[1][n][x] << ' ';
		}
		cout << '\n';
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 120ms
memory: 4188kb

input:

10
100 10
24 56 71 49 70 39 19 23 96 26 85 33 73 84 35 75 58 77 85 40 33 36 75 55 7 28 37 7 100 94 35 64 68 46 77 80 90 28 85 8 9 23 32 45 4 51 47 82 6 49 45 55 28 69 80 7 61 41 83 42 16 25 82 56 26 92 14 66 43 1 2 62 25 84 19 58 35 37 14 61 38 12 27 95 98 100 61 36 75 83 35 19 74 56 87 10 10 6 60 5...

output:

31600238 30666836 29768969 28871102 27981406 27133126 26345152 25557178 24780724 24007882 23235040 
37783284 36857811 35985761 35139146 34292531 33491639 32690747 31889855 31107845 30363672 29620314 
6013780 5243470 4527525 3897679 3315609 2982822 2751643 2539027 2364577 2206160 2047743 
8425212 762...

result:

wrong answer 1st lines differ - expected: '27473279 26539877 25650181 248...3001 20960159 20221324 19493165', found: '31600238 30666836 29768969 288...178 24780724 24007882 23235040 '