结题报告

2020-01-12 16:01:03来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

结题报告

题目:点此

思路:{

利用单调递减栈,每压一个元素,弹出的元素都向它发射过能量,弹完后的栈顶接受过它的能量。

把每个元素收集的能量统计起来,找最大值输出。

犯的错误:{

1.偷懒搞文件输入输出后没去掉。

2.一些类型用错了(应long long用int)。

3.没考虑栈空的情况。

}

收获:{

1.为避免错,整数用long long,小数用double。

2.要考虑周全,不要想当然。

3.不是CSP-J/S考试,不要用文件输入输出。

}

 1 //#include <iostream>
 2 #include <stack>
 3 #include <cstdio>
 4 #include <vector>
 5 using namespace std;
 6 stack <int> number;
 7 vector <int> v,h;
 8 vector <long long> vs;
 9 int main(){
10     int n;
11 //    freopen("13.txt","r",stdin);
12     scanf("%d",&n);
13     for(int i=0;i<n;i++){
14         long long sum=0;
15         int hi,vi;
16         scanf("%d %d",&hi,&vi);
17         h.push_back(hi);
18         v.push_back(vi);
19         while(!number.empty()&&h[number.top()]<hi){
20             sum+=v[number.top()];
21             number.pop();
22         }
23         if(!number.empty()){
24             vs[number.top()]+=vi;
25         }
26         number.push(i);
27         vs.push_back(sum);
28     }
29     long long m=0;
30     for(int i=0;i<n;i++){
31         if(m<vs[i]){
32             m=vs[i];
33         }
34     }
35     printf("%lld",m);
36     //fclose(stdin);
37     return 0;
38 }

原文链接:https://www.cnblogs.com/eason66-blog/p/P1901.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:洛谷P4071-[SDOI2016]排列计数 题解

下一篇:条款04:确定对象使用前已被初始化