比赛 20251019新安模拟赛1 评测结果 AAWWWWWTTT
题目名称 铺设道路 最终得分 20
用户昵称 tomato的 运行时间 6.098 s
代码语言 C++ 内存使用 3.65 MiB
提交时间 2025-10-19 09:25:13
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, d[N];
int ans;
void df(int a, int b){
	int sum = 10005;
	for(int i = a; i <= b; i++) sum = min(sum, d[i]);
	ans += sum;
	for(int i = a; i <= b; i++) d[i] -= sum;
}
bool pd(){
	for(int i = 1; i <= n; i++){
		if(d[i] != 0) return false;
	}
	return true;
}
int main(){
	freopen("2018road.in", "r", stdin);
	freopen("2018road.out", "w", stdout);
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> d[i];
	}
	ans = 0;
	df(1, n);
	for(int k = 1; k <= n; k++)
		if(!pd()){
			for(int i = 1; i <= n; i++){
				if(d[i] != 0){
					for(int j = i; j <= n + 1; j++){
						if(d[j] == 0 || j == n + 1) df(i, j - 1);
					}
				}
			}
		}
	cout << ans;
	return  0;
}