有没有大犇看一下还能调吗
  • 板块灌水区
  • 楼主131354320hy
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/11/20 19:39
  • 上次更新2023/11/3 23:56:44
查看原帖
有没有大犇看一下还能调吗
362183
131354320hy楼主2021/11/20 19:39

T3考场写了个半个记搜,不知道思路对不对,剪枝剪了一个半小时啥也没剪出来

#include<iostream> 
#include<cstdio> 
#include<cmath>
#include<cstring> 
#include<algorithm> 
#include<queue> 
#include<vector>
#include<map>
#define MAXN 100000000
using namespace std;
string ab;
int n,sz[10001],qk[3000][10001],k=1,ffmin=MAXN,fccc[10010];
map<string,int> jy;
map<long long,int>f__c; 
void dfs(int a[])
{
	for(int i=1;i<n-1;i++)
		{
		int u=a[i];
		a[i]=a[i-1]+a[i+1]-a[i];
		string aa;
		for(int j=0;j<n;j++)
			{
			aa.push_back(a[j]+'0');
			}
		if(!jy.count(aa)) 
			{
			jy[aa]=1;
			for(int kk=0;kk<n;kk++)
				{
				qk[k][kk]=a[kk];
				}
			double pjz=0,fc=0;
			for(int j=0;j<n;j++)
				{
				pjz=pjz+qk[i][j];
				}
			pjz/=n;
			for(int j=0;j<n;j++)
				{
				fc=fc+(qk[i][j]-pjz)*(qk[i][j]-pjz);
				}
			fc=fc*n;
			int fcc=fc;
			ffmin=min(ffmin,fcc);
			fccc[i]=fcc;
			if(f__c.count(fcc)) return ;
			f__c[fcc]=1;
			k++;
			dfs(a);
			}
		a[i]=u;
		}
}
int main()
{
//	freopen("variance.in","r",stdin);
//	freopen("variance.out","w",stdout);
	cin>>n;		
	for(int i=0;i<n;i++) cin>>sz[i];
	string ab;
	for(int i=0;i<n;i++)
		{
		ab.push_back(sz[i]+'0');
		}
	jy[ab]=1;
	dfs(sz);
	for(int i=0;i<n;i++)
		{
		qk[0][i]=sz[i];
		}
	cout<<ffmin;
	return 0;	
} 
2021/11/20 19:39
加载中...