不愧是花花 /cf
溜大了(100+60+50+0)
哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?哇袄?
都是原题,那没必要密码了。
A.仙客来
给定 \(n\) 个整数 \(a_i\), 中间用加减号隔开. 你可以在里面任意添加括号, 求能得到的最大结果是多少.
水题,直接贪心即可。
#include <bits/stdc++.h>
#define each(i,a,b) for(int i=(a);i<=(b);++i)
#define eachr(i,a,b) for(int i=(a);i>=(b);--i)
typedef long long ll;
using namespace std;
constexpr int N=1e5+15;
inline int rd(){
int w=1,r=0;char c=getchar();
while(!isdigit(c)) (c=='-')and(w=-1),c=getchar();
while(isdigit(c)) r=r*10+(c^48),c=getchar();
return r*w;
}
int n,a[N],tt=1;
ll s[N],ans,sum;
int main(){
scanf("%d",&n);
each(i,1,n) a[i]=rd();
each(i,1,n){
if(a[i]>=0 && a[i-1]>=0) s[tt]+=a[i];
else s[++tt]=a[i];
}
each(i,1,tt) sum+=abs(s[i]);
each(i,1,tt-1){
if(s[i]<0 && s[i+1]>=0) ans=max(ans,sum-2*(-s[i]+s[i+1])),sum+=2*s[i];
if(s[i]<0 && s[i+1]<0) ans=max(ans,sum-2*(-s[i])),sum+=2*s[i];
}
printf("%lld\n",ans);
return 0;
}