首页 > 其他 > 详细

结题报告

时间:2020-01-12 18:00:25      阅读:80      评论:0      收藏:0      [点我收藏+]

题目:点此

技术分享图片

思路:{

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

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

犯的错误:{

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!