很神奇的事情,状压求助悬关
查看原帖
很神奇的事情,状压求助悬关
400468
Aakkosetsumussa楼主2023/11/13 18:40

没学过系统学过状压,在补。。这道题我参考了深入浅出进阶篇的代码但是 90pts

for(ll i=1; i<=(1<<n); i++) f[i]=1e18;
	f[0]=0;
	for(ll i=0; i<(1<<n); i++)
		for(ll k=1; k<=m; k++) {
			ll t=i;
			for(ll j=0; j<n; j++)
				if((a[k][j+1]==1 && !(i&(1<<j))) ||
				        (a[k][j+1]==-1 && (i&(1<<j)))) t^=(1<<j);
			f[t]=min(f[t], f[i]+1);
		}

神奇的是,我把这段代码重复了两边,就过了??

	f[0]=0;
	for(ll i=0; i<(1<<n); i++)
		for(ll k=1; k<=m; k++) {
			ll t=i;
			for(ll j=0; j<n; j++)
				if((a[k][j+1]==1 && !(i&(1<<j))) ||
				        (a[k][j+1]==-1 && (i&(1<<j)))) t^=(1<<j);
			f[t]=min(f[t], f[i]+1);
		}
       for(ll i=0; i<(1<<n); i++)
		for(ll k=1; k<=m; k++) {
			ll t=i;
			for(ll j=0; j<n; j++)
				if((a[k][j+1]==1 && !(i&(1<<j))) ||
				        (a[k][j+1]==-1 && (i&(1<<j)))) t^=(1<<j);
			f[t]=min(f[t], f[i]+1);
		}

这是为啥啊??求助大佬

2023/11/13 18:40
加载中...