Codeforces Round 1039 (Div. 2)回顾
A. Recycling Center非常简单
是一个贪心很容易看出来,每次优先选不超过c的最大重量的垃圾
13分钟AC
B. Deque Process题,一开始看错题目了,后来又卡了好久,一直在推算L,R的影响什么的,
然后先做C了,
最后发现B题非常简单,也是一个贪心,因为只要不构成5个数连续上升或下降
那就可以和上一次反着选。
1小时43分钟AC
C. Leftmost Below 是推性质,不是很难
这个写在题解里了 https://www.luogu.com.cn/article/ezdte6dz
1小时28分AC
D - Sum of LDS
这题其实很简单,但是赛场上一直在想特殊性质
其实这是很明显的dp,
求所有子数组的什么东西,常见套路就是dp[i]表示以i结尾的所以数组的答案
这题可以看出dp[i]是由i向左第一个j,满足\(a_j > a_i\)。
由于 \(\max(p_i,p_{i+1})>p_{i+2}\)
可知dp[i]肯定由dp[i-1]或dp[i-2]转移
然后就是在所有的长度加上1,也就是+i,就可以了
场外AC
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
int n;
int p[500010];
int dp[500010];
signed main(){
cin >>t;
while(t--){
cin >> n;
for(int i=1;i<=n;i++){
cin >> p[i];
}
dp[1]=1;
for(int i=2;i<=n;i++){
if(p[i-1]>p[i]){
dp[i] = dp[i-1]+i;
}
else{
dp[i] = dp[i-2]+i;
}
}
int ans=0;
for(int i=1;i<=n;i++){
ans+=dp[i];
}
cout << ans << endl;
}
return 0;
}

浙公网安备 33010602011771号