60分求助,改到自己都认不出来了
  • 板块P1564 膜拜
  • 楼主Xunxas
  • 当前回复2
  • 已保存回复2
  • 发布时间2020/6/28 18:01
  • 上次更新2023/11/6 23:57:00
查看原帖
60分求助,改到自己都认不出来了
296900
Xunxas楼主2020/6/28 18:01
#include <iostream>
#include <cmath>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

int a[10001][2],sum[10000];

int main() {
	
	memset(sum,0,sizeof(sum));
	memset(a,0x7f,sizeof(a));
	
	int n,m;
	cin>>n>>m;
	
	for(int i=1;i<=n;i++)
	{
		cin>>a[i][1];
		if(  a[i][1]==2  )
		a[i][1]=-1;
	}
	
	sum[0]=0;
	
	for(int i=1;i<=n;i++)
	sum[i]=sum[i-1]+a[i][1];
	
	a[1][2]=1;
	
	for(int i=2;i<=n;i++)
	for(int j=1;j<=i-1;j++)
	{
		if(  a[i-1][2]==1  &&  sum[i]<=m )
		{
			a[i][2]=1;
			break;
		}

		if(  abs(sum[i]-sum[j])<=m || abs(sum[i]-sum[j])==i-j  )
		a[i][2]=min(a[i][2],a[j][2]+1);
		
		if(  sum[i]==i )
		{
			a[i][2]=1;
			break;
		}
	}
	

	cout<<a[n][2];
	
	return 0;
}















2020/6/28 18:01
加载中...