蒟蒻爆搜挂了,求debug
  • 板块P1490 买蛋糕
  • 楼主tuya_
  • 当前回复0
  • 已保存回复0
  • 发布时间2020/10/18 22:14
  • 上次更新2023/11/5 10:26:10
查看原帖
蒟蒻爆搜挂了,求debug
122794
tuya_楼主2020/10/18 22:14
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<vector>
using namespace std;
int n,ans,num=1;
bool f[1010],vis[1010];
void print(){
	for(int i=1;i<=n;i++) cout<<f[i]<<" ";
    getchar();getchar();
}
void dfs(int i,int sum,int ma,int nn){
	if(nn>=n) {
		if(sum==ans) num++;
		else if(ans>sum) ans=sum,num=1;
		return;
	}
	else if(i>n) return;
	if(sum>ans||nn<i-1) return;
	stack<int> s;
	int now=0;
	if(f[i]) dfs(i+1,sum,ma,nn);
	
	for(int j=min(ma+i,n);j>=i;j--) {
		if(f[j-i]&&f[j]==0) {
			s.push(j);
			now++;
			f[j]=1;
		}
	}
	dfs(i+1,sum+1,min(ma+i,n),nn+now);
	while(s.size()){
		f[s.top()]=0;
		s.pop();
	}
}
int main(){
	scanf("%d",&n);
	ans=n;
	f[0]=1;
	dfs(1,0,0,0);
	printf("%d %d",ans,num);
	return 0;
}
2020/10/18 22:14
加载中...