日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深渊水妖 模拟,贪心 牛客白月赛44

發布時間:2025/3/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深渊水妖 模拟,贪心 牛客白月赛44 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/contest/11221/A
來源:牛客網

時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
潛蛟舞,蜉蝣動,深淵水妖漣漪現。

你進行了 nn 次考試,第 ii 次考試的分數是 a_ia
i
?

你想知道你最大進步的幅度是多少,定義最大進步的幅度為:

  • 選定一段 極長 的區間 [l,r][l,r],滿足 a_l\le a_{l+1}\le\cdots\le a_ra
    l
    ?
    ≤a
    l+1
    ?
    ≤?≤a
    r
    ?

  • 滿足條件一的情況下,使得 a_r-a_la
    r
    ?
    ?a
    l
    ?
    的值最大。

  • 如果你有多段最大進步,你需要輸出所有的最大進步段,每一段用兩個數 l,rl,r 表示,按照區間的左端點升序輸出。

    一句話題意:找到所有極長的不嚴格上升段,并找出它們當中右端點權值 - 左端點權值最大的那些個段,輸出端點坐標。
    輸入描述:
    全文第一行輸入一個正整數 T(1\le T\le10^5)T(1≤T≤10
    5
    ),表示數據組數。

    每組數據第一行輸入一個正整數 n(2\le n\le10^5)n(2≤n≤10
    5
    )。

    第二行輸入 nn 個正整數,第 ii 個正整數是 a_i(1\le a_i\le n)a
    i
    ?
    (1≤a
    i
    ?
    ≤n)。

    數據保證 \sum n\le3\times10^6∑n≤3×10
    6
    ,保證至少存在一個 i\in[2,n]i∈[2,n] 滿足 a_i\ge a_{i-1}a
    i
    ?
    ≥a
    i?1
    ?

    輸出描述:
    對每組詢問輸出一行,表示你所得到的所有答案。
    示例1
    輸入
    復制
    1
    7
    1 3 5 2 4 6 3
    輸出
    復制
    1 3 4 6
    備注:
    區間 [1,3][1,3] 是 1,3,51,3,5,滿足 1\le3\le51≤3≤5 并且 5-1=45?1=4 差值最大。

    區間 [4,6][4,6] 同理,6-2=46?2=4 同樣為最大的差值。

    思路 :

    • 先找出所有的 極長 不嚴格上升 區間
    • 然后在這些區間中選出 右端點權值-左端點權值最大 的那些區間
    #include <iostream> #include <vector> #define x first #define y second using namespace std;typedef pair<int, int> PII;const int N = 1e5 + 10;int a[N];void solve() {int n; cin >> n;for (int i = 1; i <= n && cin >> a[i]; i ++ );vector<PII> ve;int l = 1;for (int i = 2; i <= n; i ++ ){if (a[i] < a[i - 1]){ve.push_back({l, i - 1});l = i;}}ve.push_back({l, n});vector<PII> ans;int mx = 0;for (auto it : ve){if (a[it.y] - a[it.x] > mx){ans.clear();mx = a[it.y] - a[it.x];ans.push_back(it);}else if (a[it.y] - a[it.x] == mx)ans.push_back(it);}for (auto it : ans) cout << it.x << ' ' << it.y << ' ';cout << endl; }int main() {int _; cin >> _;while (_ -- )solve(); }

    總結

    以上是生活随笔為你收集整理的深渊水妖 模拟,贪心 牛客白月赛44的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。