Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
搞不懂代码哪里有问题啊,求大神指教啊,万分感谢!#include <iostream> #include <stack> #include <algorithm> #include <cstdio> using namespace std; const int maxn = 100010; int n; long long h[maxn], sum[maxn]; // h[i]表示第i天的情感价值,sum[i]表示第1到i天的情感价值和 stack< pair<int,long long> > stk; // a.first 存放坐标; a.second 存放高度 long long ans; int ans_l, ans_r; void init() { ans = 0; } void test(int id) { printf("【test id = %d】\n" , id); stack< pair<int, long long> > tmp_stk; cout << "stk.size = " << stk.size() << endl; while (!stk.empty()) { pair<int, long long> pp = stk.top(); stk.pop(); tmp_stk.push(pp); cout << "\t" << pp.first << " , " << pp.second << endl; } while (!tmp_stk.empty()) { stk.push(tmp_stk.top()); tmp_stk.pop(); } } int main() { while (cin >> n) { init(); for (int i = 1; i <= n; i ++) { cin >> h[i]; sum[i] = sum[i-1] + h[i]; } for (int i = 1; i <= n; i ++) { if (stk.empty() || stk.top().second < h[i]) stk.push(make_pair(i, h[i])); else { int tmp_l = i; while (!stk.empty() && stk.top().second >= h[i]) { pair<int, long long> pp = stk.top(); stk.pop(); tmp_l = pp.first; long long tmp_h = pp.second; long long tmp_ans = tmp_h * ( sum[i-1] - ( tmp_l == 1 ? 0 : sum[tmp_l-1] ) ); if (tmp_ans > ans) { ans = tmp_ans; ans_l = tmp_l; ans_r = i - 1; // cout << "check: " << tmp_ans << " : " << ans_l << " , " << ans_r << endl; // cout << "check tmp_h = " << tmp_h << endl; } } stk.push(make_pair(tmp_l, h[i])); } // test(i); } // 最后还要处理一下栈中存留下来的所有元素 // test(0); while (!stk.empty()) { pair<int, long long> pp = stk.top(); stk.pop(); int tmp_l = pp.first; long long tmp_h = pp.second; long long tmp_ans = tmp_h * ( sum[n] - (tmp_l == 1 ? 0 : sum[tmp_l-1]) ); if (tmp_ans > ans) { ans = tmp_ans; ans_l = tmp_l; ans_r = n; } } cout << ans << "\n" << ans_l << " " << ans_r << endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator