
Lv.1
在 【音乐类作品】社区的音乐类作品了解一下? 中回复
imgsrc="https://static.cod喵/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E6%90%93%E5%A4%B4.gif"alt="emotion_编程猫_搓头"width="661"height="661"
2021-10-31T14:02:11 点赞:0
在 【召唤精灵】萌新看源码·004【分裂】 中回复
???????????????????????????????????????????????????????????????????????????
2021-11-09T16:23:40 点赞:0
在 【少院士讲堂】第四期 侦测与运算(上)(改) 中回复
..................................................................................................................................................................................
2021-11-11T17:26:11 点赞:0
在 联机还在怕云变量不够用?云列表速度太慢吗?巅峰之战(已弃作品)教你搭建联机作品! 中回复
#include<bits/stdc++.h>
#define int long long
using namespace std;
//static char buf[1000100],*p1 = buf,*p2 = buf;
//#define getchar() p1 == p2 && (p2 = (p1 = buf) + fread(buf,1,1000000,stdin),p1 == p2) ? EOF : *p1++
inline int read(){
register int x = 0;
register char ch = getchar();
while(ch < '0' || ch > '9'){
ch = getchar();
}
while(ch >= '0' && ch <= '9'){
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
return x;
}
int n,f1[200100][30],f2[200100][30],sum;
int qmax(int l,int r){
if(l == r) return f1[l][0];
int k = log2(r - l + 1);
return max(f1[l][k],f1[r - (1 << k) + 1][k]);
}
int qmin(int l,int r){
if(l == r) return f2[l][0];
int k = log2(r - l + 1);
return min(f2[l][k],f2[r - (1 << k) + 1][k]);
}
int ql(int i){
int l = i,r = n;
while(l <= r){
int mid = (l + r) >> 1;
if(qmax(i,mid) < qmin(i,mid)) l = mid + 1;
else r = mid - 1;
}
if(l <= n && qmax(i,l) == qmin(i,l)) return l;
return 0;
}
int qr(int i){
int l = i,r = n;
while(l <= r){
int mid = (l + r) >> 1;
if(qmax(i,mid) > qmin(i,mid)) r = mid - 1;
else l = mid + 1;
}
if(r > 0 && qmax(i,r) == qmin(i,r)) return r;
return 0;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
n = read();
for(int i = 1;i <= n;i++){
f1[i][0] = read();
}
for(int i = 1;i <= n;i++){
f2[i][0] = read();
}
for(int j = 1;j <= 21;j++){
for(int i = 1;i + (1 << j) - 1 <= n;i++){
f1[i][j] = max(f1[i][j - 1],f1[i + (1 << (j - 1))][j - 1]);
}
}
for(int j = 1;j <= 21;j++){
for(int i = 1;i + (1 << j) - 1 <= n;i++){
f2[i][j] = min(f2[i][j - 1],f2[i + (1 << (j - 1))][j - 1]);
}
}
for(int i = 1;i <= n;i++){
int l = ql(i),r = qr(i);
if(l == 0) continue;
if(r == 0) continue;
if(l > r) swap(l,r);
sum += (r - l + 1);
}
cout<<sum;
return 0;
}2021-11-21T19:21:13 点赞:1
在 【随笔教程贴】——函数 中回复
imgsrc="https://static.codemao.cn/emoji/codemao/%E7%BC%96%E7%A8%8B%E7%8C%AB_%E6%90%93%E5%A4%B4.gif"alt="emotion_编程猫_搓头"
2022-01-02T08:34:26 点赞:0