區間 思維 多校聯考No 2 seal

2021-09-27 03:03:08 字數 1446 閱讀 9105

詳情見「energy」一題...

【資料範圍】

對於 50%的資料,1<=n<=1000,1<=ai<=bi<=10000。

對於 100%的資料,1<=n<=10^5,1<=ai<=bi<=10^9。

最開始先分析了下樣例,自己造了幾個資料,發現結論:答案只可能在端點上,要麼左端點,要麼右端點

答案的計算方式:

預處理左端點l的字首和pre[ i ]

設當前選定的端點為i區間的ei

則答案ans=ei*包含改點ei的區間個數+pre[ n ]-pre[ i ]

對於每個區間,分別算左右端點,最後取max更新答案就可以了

(感覺和正解挺像的呀,怎麼就45分...qaq...)

正解看這裡:

還有群裡發的題解

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=1e5;

ll pre[maxn+5],num[maxn+5];

int n;

struct node

a[maxn+5];

bool cmp(node a,node b)

} for(int i=1;i<=n;i++)

} if(tot1>max)

if(tot2>max)

}printf("%lld %lld",ans,max);

return 0;}/*

41 3

4 72 5

8 10

ans:3 18

41 3

4 72 5

8 30

ans:30 30

*/

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=1e5;

ll n,cnt,s;

ll e,max=-10;

struct node

a[2*maxn+5];

bool cmp(node a,node b)

} printf("%lld %lld",e,max);

return 0;

}

11 7多校聯考

t1 為了避免晚上種種事情導致寫不成題解就先把t1寫了,畢竟也是很值得寫的。我這道題憑著乙個半感性半理性的想法意外的水到了80分 真的是很考人品啊 學競賽啊,墜重要的就是人品!先看正解 我們可以這樣化 t s bk1 i1 a b k2 i 2 a bk3 i3 a b k4 再化簡一下 t s b...

9 7多校聯考

題目描述 給定了乙個正整數 n。有多少種方法將 n 分解成為四個質數 a,b,c,d 的和。例如 9 2 2 2 3 2 2 3 2 2 3 2 2 3 2 2 2,故共有 4 種方法將 9 分 解成為四個整數。輸入格式 本題多組資料測試 第一行讀入乙個整數 t 表示資料組數。接下來共 t 行,每行...

2020多校聯考 樹

沒有定根就非常的離譜,後來告訴根直接就是 1 先考慮鏈上怎麼做,顯然維護乙個單調棧,求出第乙個比當前數大的位置,然後倍增即可。再放在樹上怎麼做?依舊維護單調棧,但這次不能暴力地彈掉棧頂元素了,因為這樣的複雜度是假的。因為單調棧有單調性,所以直接在單調棧內二分出單調棧彈得不能再彈的位置,然後修改 to...