10分求调,给关注!
  • 板块P1564 膜拜
  • 楼主LiJinLin_AFO
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/10/9 21:44
  • 上次更新2023/11/2 14:44:04
查看原帖
10分求调,给关注!
755503
LiJinLin_AFO楼主2023/10/9 21:44
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
int a[3005],dp[3005],x[3005],y[3005],n,m;
inline int hx(int i,int j){
	return x[i]-x[j-1];
}
inline int hy(int i,int j){
	return y[i]-y[j-1];
}
inline bool f(int i,int j){
	if(hx(i,j)==0) return 1;
	if(hy(i,j)==0) return 1;
	if(abs(hx(i,j)-hy(i,j))<=m) return 1;
	return 0;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		x[i]=x[i-1];
		y[i]=y[i-1];
		if(a[i]==1) ++x[i];
		else ++y[i];
	}
	dp[1]=1;
	for(int i=2,j;i<=n;i++){
		for(j=i;j>=1&&f(i,j);j--){
			if(!dp[i]) dp[i]=dp[j]+1;
			else dp[i]=min(dp[i],dp[j]+1);
		}
	}
	printf("%d",dp[n]);
	return 0;
}

本蒟蒻的思路和题解一模一样,为什么只有 10 分?有意义的回复给好朋友的关注!

2023/10/9 21:44
加载中...