求卡常大佬
查看原帖
求卡常大佬
658786
STUDENT00楼主2022/11/2 19:20

第一个点1.07ms,我要死了。。。

#include<bits/stdc++.h>
using namespace std;
char n;
int p[21][21],q[21][21],dp[21][1<<20];
int main(){
	scanf("%d",&n);
	for(register char i=1;i<=n;i++) for(register char j=1;j<=n;j++) scanf("%d",&p[i][j]);
	for(register char i=1;i<=n;i++) for(register char j=1;j<=n;j++) scanf("%d",&q[i][j]);
	for(register char i=1;i<=n;i++) for(register char j=1;j<=n;j++) p[i][j]*=q[j][i];
	for(register char i=1;i<=n;i++){
		for(register int j=0;j<(1<<n);j++){
			for(register char k=1;k<=n;k++){
				if((j>>k-1)&1) dp[i][j]=max(dp[i][j],dp[i-1][j-(1<<k-1)]+p[i][k]);
			}
		}
	}
	printf("%d",dp[n][(1<<n)-1]);
	return 0;
}

哪位卡常大佬帮我卡卡?

2022/11/2 19:20
加载中...