Walking "Tagesfrage" "DP"

Gehen - Fragen - Daimayuan Online Judge

Ideen:

Der erste Gedanke war DFS, aber 2^100 muss TLE sein;

Dann hatte ich das Gefühl, dass es nicht funktionieren kann, ich musste DP verwenden, und DP musste immer den vorherigen Zustand berücksichtigen "Bist du gelaufen?" && "Reicht es, dass ich gehe?"

AC-Code:

#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;
}

Ich denke du magst

Origin blog.csdn.net/weixin_60789461/article/details/123194219
Empfohlen
Rangfolge