本文主要是介绍习题 8-10 奇怪的股市(Hell on the Markets,ACM/ICPC NEERC 2008, UVa1614),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原题链接:https://vjudge.net/problem/UVA-1614
分类:数学结论
备注:思维,证明
下面是抄的知乎DL的证明过程,两个重要的命题。补充:Si是从后往前算的。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
ll a[maxn],sum[maxn];
int tag[maxn],n;
int main(void){//freopen("in.txt","r",stdin);while(~scanf("%d",&n)){for(int i=1;i<=n;i++){scanf("%lld",&a[i]);sum[i]=sum[i-1]+a[i];}if(sum[n]&1)printf("No\n");else{printf("Yes\n");memset(tag,0,sizeof(tag));int s=sum[n]/2;for(int i=n;i>=1;i--){if(s>=a[i]){tag[i]=1;s-=a[i];}}for(int i=1;i<=n;i++)printf("%d%c",tag[i]?1:-1,i==n?'\n':' ');}}return 0;
}
这篇关于习题 8-10 奇怪的股市(Hell on the Markets,ACM/ICPC NEERC 2008, UVa1614)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!