P9810题解
xfzf_shentao · · 题解
题目传送门
修改内容:对解法进一步的说明补充。将【中文标点符号】与【英文、数字、公式或汉字】之间的多余空格删去。
题目大意:
此题输入
算法实现:
80 pts 方法
首先将所有的数的值累加放到
上代码:
#include<bits/stdc++.h>
using namespace std;
int k,last,sum1,sum2,a[100010];
int read() {
int f=1,x=0;
char ch=getchar();
for(; ch<'0'||ch>'9'; ch=getchar()) if (ch=='-') f=-1;
for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-48;
return x*f;
}
int main(){
k=read();
a[1]=read();sum1=a[1];
for(int i=2;i<=k;i++){
a[i]=read();sum1+=a[i];
if (a[i]==0) {
for(int j=i;j>=1;j--)
if (a[j]!=0) {
sum2+=a[j];
a[j]=0;
break;
}
}
}
printf("%d\n",sum1-sum2);
return 0;
}
测评记录
100 pts 方法
因为栈是后进先出,用栈可以快速的解决这个问题,若
上代码:
#include<bits/stdc++.h>
using namespace std;
stack<int> q;
int ans;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) {
int x;
cin>>x;
if (x==0) q.pop();
else q.push(x);
}
int len=q.size();
for(int i=1;i<=len;i++) {
int x=q.top();
ans+=x;
q.pop();
}
printf("%d\n",ans);
return 0;
}//祝大家noip rp++;