怎么做页游网站运营,软文营销的软文形式,经典wordpress网站,企业网站psd模板题目链接
四元组问题
个人思路
这个题目…真费脑子 假设 a,b,c,d 对应的值分别是 A,B,C,D 总的来说#xff0c;就是从前往后一个单调栈从大到小找 A#xff1b;从后往前#xff0c;一个单调栈从大到小找 D。 具体看注释更清晰点#xff01;
参考代码
Java
import jav…题目链接
四元组问题
个人思路
这个题目…真费脑子 假设 a,b,c,d 对应的值分别是 A,B,C,D 总的来说就是从前往后一个单调栈从大到小找 A从后往前一个单调栈从大到小找 D。 具体看注释更清晰点
参考代码
Java
import java.io.*;
import java.util.Deque;
import java.util.LinkedList;public class Main {static PrintWriter out new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static void main(String[] args) {// 假设 a,b,c,d 对应的值分别是 A,B,C,DScanner sc new Scanner();int n sc.nextInt();int[] arr new int[n 1];for(int i 1; i n; i) {arr[i] sc.nextInt();}// 后缀数组找 D从后往前找当前最小的int[] suffix new int[n 2];suffix[n] arr[n];for(int i n - 1; i 1; --i) {// 此处寻找从当前 i 到末尾最小值即可能的 Dsuffix[i] Math.min(arr[i], suffix[i - 1]);}DequeInteger stack new LinkedList();// 开始找 Aint A Integer.MIN_VALUE;// 由于我们要找的 A 是除了 B 以外的 最大值所以初始定为最小for (int i 1; i n; i) {// 满足条件时arr[i] 即所找 Cif(A arr[i] arr[i] suffix[i]) {out.println(YES);out.flush();return;}// 此时就是一个单调栈栈内自栈底向栈顶 递减while (!stack.isEmpty() stack.getLast() arr[i]) {A Math.max(A, stack.pop());}// 如果 A 成功更新此处 B 就是此时插入的栈顶stack.push(arr[i]);}out.println(NO);out.flush();}
}
class Scanner {static StreamTokenizer st new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));public Scanner() {}public int nextInt() {try {st.nextToken();} catch (IOException e) {throw new RuntimeException(e);}return (int) st.nval;}
}C/C
#includebits/stdc.h
using namespace std;
const int N 5e5 3;
int n, arr[N], suffix[N];
stackint st;
void solve()
{cin n;for(int i 1; i n; i)cin arr[i];// 后缀数组找 D从后往前找当前最小的suffix[n] arr[n];for(int i n - 1; i 1; --i)suffix[i] min(suffix[i 1], arr[i]); // 此处寻找从当前 i 到末尾最小值即可能的 D// 开始找 A, 由于我们要找的 A 是除了 B 以外的 最大值所以初始定为最小int A INT_MIN;for(int i 1; i n; i){// 满足条件时arr[i] 即所找 Cif(A arr[i] arr[i] suffix[i]){cout YES;return;}// 此时就是一个单调栈栈内自栈底向栈顶 递减while (!st.empty() st.top() arr[i]){A max(A, st.top());st.pop();}// 如果 A 成功更新此处 B 就是此时插入的栈顶st.push(arr[i]);}cout NO;
}
int main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);solve();
}