状压1~4tle,而(2^15)*(15^2)<10^8
查看原帖
状压1~4tle,而(2^15)*(15^2)<10^8
1104479
zombiell810975楼主2024/10/27 21:21

rt,时间复杂度最高为36864000<10^8

	#include<bits/stdc++.h>
	using namespace std;
	int t,n,a[200005],c[200005];
	int main(){
		scanf("%d",&t);
		while(t--){
			scanf("%d",&n);
			for(int i=1;i<=n;i++) scanf("%d",&a[i]);
			int ans=0;
			for(int i=0;i<=((1<<n)-1)/2;i++) {
				memset(c,0,sizeof(c));
				int csum=0;
				for(int j=1;j<=n;j++) {
					for(int k=j-1;k>=1;k--) {
						if(((i>>(k-1))&1)==((i>>(j-1))&1)) {
							if(a[k]==a[j]) csum+=a[j];
							break;
						}
					} 
				}
				ans=max(ans,csum);
			}
			printf("%d\n",ans);
		}
		return 0;
	}
2024/10/27 21:21
加载中...