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;
}
posted @ 2025-08-19 15:16  S/P/A/  阅读(9)  评论(0)    收藏  举报