因為跨過最大值的區間一定是合法的,所以我們人為地把最大值放在最左邊
我們要統計的就是在最大值右邊單調不降的序列,可以用單調棧維護
需要特殊處理相同的情況
#include#include#include#include#define rg register
inline int read()
while(ch>='0' && ch<='9')
return x*fh;
}const int maxn=1e7+5;
int n,a[maxn],sta[maxn],tp,be,ed,mmax,cnt[maxn];
long long ans;
int main()
} ed=be+n-1;
for(rg int i=be;i<=ed;i++) else
sta[++tp]=a[i];
if(a[i]==sta[tp-1]) cnt[tp]=cnt[tp-1]+1;
else cnt[tp]=1;
} while(tp>2)
printf("%lld\n",ans);
return 0;
}
聯賽模擬測試24 聯合權值 改
考完之後聽說往年有一年聯賽考過一道類似的題,於是一下子又以為要涼涼了,自信一點,把以為去掉 我們不妨先來考慮如何統計總和,我們考慮列舉每乙個點作為中間點的時候對於答案的貢獻,暴力列舉會 t 到飛起,我們可以記錄以該點的所有出邊鏈結的點的權值總和,之後再對總和平方,就可以得到乙個部分重複的答案,重在了...
牛客練習賽24 D
名字挺有意思的,排插樹,雖然這是個圖。算dijkstra的模版題,求最短路裡面最長的那條,因為到講台的距離總是取決於最短的那條路,但是又要求離講台最遠,那麼我們通過dijkstra計算出起始點到所有點的最短路然後遍歷找最大值就好。如下 include using namespace std type...
聯賽模擬測試34
考場打表 rand 正解可以根據乙個倍數往上翻 如果乙個數b是a的n倍,那麼b可以由a貼上n次得到 開乙個佇列按照每個因數倍增幾次取最小即可 藍書原題 csp考試之前還看來著 然後考場假了 打了暴力滾粗 下來之後一點就透了 等比數列求和 對於唯一一組hack資料 是mod完階乘出0了 特判一次直接往...