题解
2024-12-07 20:01:56
发布于:广东
49阅读
0回复
0点赞
我不知道为什么是绿题,就是一个很简单的模拟啊!把高度记录下来然后再把< a[i]的区间加一遍b[i]就可以了。
代码如下:
#include<bits/stdc++.h>
using namespace std;
long long a[1000005],b[1000005],ans[1000005];
int main(){
int n;
cin >> n;
for(int i = 0;i < n;i ++) cin >> a[i];
for(int i = 0;i < n;i ++) cin >> b[i];
for(int i = 0;i < n;i ++){
ans[i] += b[i];
int x = b[i],k = i;
while(k + 1 < n and a[k + 1] < a[i]){
k ++;
ans[k] += b[i];
}
x = b[i],k = i;
while(k - 1 >= 0 and a[k - 1] < a[i]){
k --;
ans[k] += b[i];
}
}
for(int i = 0;i < n;i ++){
cout << ans[i] << " ";
}
return 0;
}
全部评论 2
事实上你这个代码用脚造个数据都能轻松hack
1000000 1 2 3 4 5 6 7 8 9 ......
1周前 来自 广东
1哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
2024-12-08 来自 广东
0n方过百万
1周前 来自 广东
0
有帮助,赞一个