RE无法返回求调
  • 板块灌水区
  • 楼主Wrong_Accept
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/25 21:21
  • 上次更新2024/1/26 08:17:18
查看原帖
RE无法返回求调
977599
Wrong_Accept楼主2024/1/25 21:21

rt, 输入这个会在“return 0”处跳出

4
1
2
3
4

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int n;
ll ans;
vector<ll> a(2007), c(2007), minl(2007), dp[2007];
void ming(ll &x, ll y){
	if(x > y) x = y;
	return;
} int main(){
	cin >> n;
	for(int i = 0; i < n; i ++){
		dp[i].resize(1, 0);
		cin >> a[i];
		c[i] = a[i];
	} sort(c.begin(), c.begin() + n);
	for(int i = 0; i < n; i ++){
		for(int j = 0; j < n; j ++){
			if(! j) dp[i][j] = abs(a[0] - c[i]);
			else dp[i][j] = min(dp[i][j - 1], minl[j - 1]) + abs(a[0] - c[i]);
		} ming(ans, dp[i][n - 1]);
		for(int j = 0; j < n; j ++) ming(minl[j], dp[i][j]);
	} reverse(a.begin(), a.begin() + n);
	for(int i = 0; i < n; i ++) for(int j = 0; j < n; j ++) dp[i][j] = 0;
	for(int i = 0; i < n; i ++) minl[i] = 0;
	for(int i = 0; i < n; i ++){
		for(int j = 0; j < n; j ++){
			if(! j) dp[i][j] = abs(a[0] - c[i]);
			else dp[i][j] = min(dp[i][j - 1], minl[j - 1]) + abs(a[0] - c[i]);
		} ming(ans, dp[i][n - 1]);
		for(int j = 0; j < n; j ++) ming(minl[j], dp[i][j]);
	} cout << ans <<'\n';
	return 0;
}
2024/1/25 21:21
加载中...