Caminando "Pregunta diaria" "DP"

Caminar - Preguntas - Juez en línea de Daimayuan

Ideas:

El primer pensamiento fue DFS, pero 2^100 debe ser TLE;

Entonces sentí que no podía funcionar, tenía que usar DP, y DP siempre tenía que considerar el estado anterior "¿Has caminado?" && "¿Es suficiente para que me vaya?"

Código CA:

#include <iostream>
#include <string.h>
using namespace std;
const int N = 1e5+10;
int A[N],B[N];
int ans[101][N];
int main() {
	int n,m;
	memset(ans, 0, sizeof(ans));
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>A[i]>>B[i];
	ans[1][A[1]]=1;
	ans[1][B[1]]=1;
	ans[0][0]=1;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			if( j>=A[i] && ans[i-1][j-A[i]] ) ans[i][j]=1;
			if( j>=B[i] && ans[i-1][j-B[i]] ) ans[i][j]=1;
		}
	for(int i=0;i<=m;i++)
	{
		if(ans[n][i]==1) cout<<"1";
		else cout<<"0";
	}
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_60789461/article/details/123194219
Recomendado
Clasificación