zoukankan      html  css  js  c++  java
  • 洛谷P1021 邮票面值设计

    https://www.luogu.org/problem/P1021

    #include<cstdio>
    #include<cstring>
    #include<iostream> 
    using namespace std;
    int res;
    int f[10005];
    int n;
    int tmp[10005];
    int check(int now,int sum)//完全背包判断连续
    {
    	memset(f,0x3f,sizeof(f));
    	f[0]=0;
    	for(int i=1;i<=now;i++)
    	{
    		for(int j=tmp[i];j<=sum*n;j++)//完全背包
    		{
    			f[j]=min(f[j],f[j-tmp[i]]+1);
    		}
    	}
    	for(int i=1;i<=n*sum;i++)
    	{
    		if(f[i]>n)//如果超过n了,那就是前一个
    		{
    			return i-1;
    		}
    	}
    	return n*sum;
    }
    int k;
    int ans[20];
    void dfs(int now,int last,int maxl,int sum)//当前为第now个,上一个是last,之前的最大连续的最后一个值为maxl,和已经是sum了
    {
    	if(now>k)//如果已经搜完一个了
    	{
    		if(res<maxl)//判断最大连续的是否大于res
    		{
    			res=maxl;//更新
    			for(int i=1;i<=k;i++)
    			{
    				ans[i]=tmp[i];//把ans数组更新
    			}
    		}
    		return ;//这一层完了,返回
    	}
    	for(int i=last+1;i<=maxl+1;i++)
    	{
    		tmp[now]=i;//记录
    		int x=check(now,sum+i);//背包判断max
    		dfs(now+1,i,x,sum+i);//下一层
    	}
    	return ;
    }
    int main()
    {
    	scanf("%d%d",&n,&k);
    	dfs(1,0,0,0);
    	for(int i=1;i<=k;i++)
    	{
    		printf("%d ",ans[i]);
    	}
    	printf("
    MAX=%d
    ",res);
    	return 0;
    }
    
  • 相关阅读:
    js_mongobd
    window-js-mongodb安装 错误 解决
    Mac-js-mongodb 安装
    PMP笔记-01 PMP各种图比较记忆
    kata qemu
    socat
    kata agent install syslog
    kata rootfs
    defaultKataGuestSharedDir
    kata 9p
  • 原文地址:https://www.cnblogs.com/ShineEternal/p/stamp.html
Copyright © 2011-2022 走看看