여름 훈련 광 솔 시리즈-Hdu 3506 대형 Rectangle in a Histogram(단조 로 운 스 택)
5903 단어 HDU
http://acm.hdu.edu.cn/showproblem.php?pid=1506
제목 의 대의:
Ai 를 최소 값 으로 하 는 구간 에 몇 개의 원소 가 있 느 냐 고 수열 An 을 제시 합 니 다.
문제 풀이 방향:
스 택 을 수 동 으로 모 의 합 니 다.스 택 내 요 소 는 단조 로 운 체감 시퀀스 입 니 다.새 원소 Ai 가 창고 에 들 어가 야 할 때 창고 꼭대기 원소 가 Ai 보다 크 면 창고 꼭대기 원소 가 Ai 보다 크 지 않 고 Ai 가 창고 에 들 어 갈 때 까지 팝 업 합 니 다.
여기 서 i 는 스 택 꼭대기 요소 의 사각형 이 뒤로 뻗 어 있 는 경계 이 고 팝 업 과정 에서 Ai 의 행렬 이 앞으로 뻗 어 있 는 경 계 를 기록 할 수 있 습 니 다.
1 //#include <bits/stdc++.h>
2 #include <iostream>
3 #include <algorithm>
4 #include <cstdio>
5 using namespace std;
6 const int maxn = 100005;
7 #define LL long long// LL, ,int
8 struct node
9 {
10 LL x, index;
11 } Stack[maxn];
12
13 int main ()
14 {
15 LL n;
16 while (scanf ("%I64d", &n), n)
17 {
18 LL sum = 0;
19 LL head, last, num, m;
20 head = 0;
21 last = -1;
22 for (LL i=0; i<=n; i++)
23 {
24 if (i == n)// 0,
25 num = 0;
26 else
27 scanf ("%I64d", &num);
28 m = i;//
29 while (head<=last && Stack[last].x>num)
30 {
31 sum = max(sum, (i - Stack[last].index)*Stack[last].x);
32 m = Stack[last].index;
33 last --;
34 }
35 Stack[++last].index = m;
36 Stack[last].x = num;
37 }
38 printf ("%I64d
", sum);
39 }
40 return 0;
41 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[HDU] 4089 활성화 확률 DPdp[i][j]를 모두 i개인의 대기열인 Tomato가 j위 서버가 마비될 확률로 역추를 사용하면 우리는 상태 이동 방정식을 얻을 수 있다. i == 1 : dp[1][1] = dp[1][1] * p1 + dp[1]...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.