为什么大数据的三个点会爆零啊????
查看原帖
为什么大数据的三个点会爆零啊????
213196
Wens楼主2020/10/22 08:31
#include<bits/stdc++.h>
using namespace std;
int sum[100001][21],num[21],n,m,vis[21],f[(1<<20)-1];
int tail[(1<<20)-1];
int main(){
	memset(f,127,sizeof(f));
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		int x;
		cin>>x;
		++num[x];
		for(int j=1;j<=m;++j){
			sum[i][j]=sum[i-1][j];
			if(x==j)continue;
			++sum[i][j];
		}
	}
	for(int i=0;i<=(1<<m)-1;++i){
		int t=0;
		for(int j=0;j<=m-1;++j){
			if(i&(1<<j)){
				t+=num[j+1];
			}
		}
		tail[i]=t;
	}
	f[0]=0;
	for(int i=0;i<=(1<<m)-1;++i){
		for(int j=0;j<=m-1;++j){
			if(!(i&(1<<j)))continue;
			int x=i^(1<<j),l=tail[x],r=tail[i];
			f[i]=min(f[i],f[x]+sum[r][j+1]-sum[l][j+1]);
		}
	}
	cout<<f[(1<<m)-1]<<endl;
	return 0;
}
2020/10/22 08:31
加载中...