CF1326B - Maximums solution to a problem

Since \ (x_i = \ max \ {0, A_1 \ A_ {I-SIM. 1} \} \) , so when \ (i = 1 \) when, \ (x_i = 0 \) .

And because \ (b_i-x_i a_i = \) , so \ (B_1 = A_1-x_1 = a_1-0 = A_1 \) .

以此类推, \ (b_2 = a_2-x_2 = A_2- \ max \ {0, a_1 \ sim a_ {2-1} \} = A_2- \ max \ {0, a_1 \} \) , \ (B_3 = -X_3 = a_3 A_3- \ max \ {0, a_1 \ sim a_ {3-1} \} = A_3- \ max \ {0, a_1 \ sim a_2 \} \) , ......

Because arrays \ (B \) values are known, so only maintenance \ (\ max \ {a_1 \ sim a_ {i-1} \} \) values to obtain the array \ (A \) values.

Code:

const int maxN=200005;
int n,b[maxN],a[maxN];
int main() {
	cin>>n;
	for (int i=1;i<=n;i++) cin>>b[i];
	a[1]=b[1];
	int maxx=max(a[1],0);
	for (int i=2;i<=n;i++) a[i]=maxx+b[i],maxx=max(0,max(maxx,a[i]));
	for (int i=1;i<=n;i++) cout<<a[i]<<' ';
}

Guess you like

Origin www.cnblogs.com/Xray-luogu/p/12574911.html