首页 > 其他分享 >[dp+dfs]砝码称重

[dp+dfs]砝码称重

时间:2024-09-25 11:24:27浏览次数:11  
标签:le 20 int dfs 砝码 100 dp 称重

题目描述

现有 n n n 个砝码,重量分别为 a 1 , a 2 , … , a n a_1, a_2, \ldots,a_n a1​,a2​,…,an​ ,在去掉 m m m 个砝码后,问最多能称量出多少不同的重量(不包括 0 0 0 )。

输入格式

第一行为有两个整数 n n n 和 m m m ,用空格分隔。
第二行有 n n n 个正整数 a i a_i ai​ ,表示每个砝码的重量。

输出格式

输出一行一个整数,表示最多能称量出的重量的数量。

样例

样例输入1:

3 1
1 2 2

样例输出1:

3

样例解释1
在去掉一个重量为 2 2 2 的砝码后,能称量出 1 , 2 , 3 1, 2, 3 1,2,3 共 3 3 3 种重量。

数据范围

对于 20 % 20\% 20% 的数据, m = 0 m = 0 m=0。
对于 50 % 50\% 50% 的数据, m ≤ 1 , n ≤ 10 m \le 1,n\le 10 m≤1,n≤10。
对于 100 % 100\% 100% 的数据, n ≤ 20 , m ≤ 4 , m < n , a i ≤ 100 n \le 20, m \le 4,m < n,a_i \le 100 n≤20,m≤4,m<n,ai​≤100。

题解

对于 20 % 20\% 20% 的数据,去掉 0 0 0 个砝码,就是一个 01背包 问题。

对于 50 % 50\% 50% 的数据,枚举每个数是否选择,判断去掉个数后做 01背包

对于 100 % 100\% 100% 的数据,对上面的搜索进行剪枝,如果去掉个数大于 m m m,返回。也可以枚举去掉的砝码,会快一些。

#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[23];
bool f[23];
int dp[2010];
int ans = 0;
void solve(){//01 背包
	memset(dp, 0, sizeof(dp));
	dp[0] = 1;
	int s = 0;//01 背包每次最多更新到多少
	for(int i = 1; i <= n; ++ i){
		if(f[i]){
			continue;
		}
		s += a[i];
		for(int j = s; j >= a[i]; -- j){
			if(dp[j - a[i]]){
				dp[j] = 1;
			}
		}
	}
	//统计个数
	int sum = 0;
	for(int i = s; i >= 1; -- i){
		if(dp[i]){
			++ sum;
		}
	}
	ans = max(ans, sum);
}
//搜索
void dfs(int x, int y){
	if(y > m){
		solve();
		return;
	}
	for(int i = x + 1; i <= n; ++ i){
		f[i] = 1;
		dfs(i, y + 1);
		f[i] = 0;
	}
}

标签:le,20,int,dfs,砝码,100,dp,称重
From: https://blog.csdn.net/m0_64542522/article/details/142517875

相关文章

  • 在WordPress中使用Simple Custom CSS and JS插件美化页面
    目录一、插件安装二、添加代码三、使用案例1、图片居中2、段落前空两格3、添加版权声明四、代码编写简述WordPress是目前使用最广泛的开源建站框架,其主要功能就是“主题”(Theme)系统,该功能可以让用户自定义主题,也可以直接选择第三方个人或公司开发的主题。不过自定......
  • 2024年9月北京、广州、深圳NPDP®产品经理认证,来这很对
    在当今这个快速变化的商业环境中,产品创新已成为企业持续发展与竞争的核心动力。为了有效应对市场挑战,提升产品开发效率与质量,越来越多的企业和个人开始关注并投身于专业的产品开发与管理知识体系的学习与实践中。其中,新产品开发专业人员(NPDP)认证作为全球公认的产品开发与管理领域的......
  • MedPrompt:基于提示工程的医学诊断准确率优化方法
    Medprompt:基于提示工程的医学诊断准确率优化方法秒懂大纲解法拆解MedPrompt提示词全流程分析总结创意视角 论文:CanGeneralistFoundationModelsOutcompeteSpecial-PurposeTuning?CaseStudyinMedicine秒懂大纲├──1研究背景【描述背景和问题】│├──大语言......
  • P3478 STA-Station/换根 $dp$ 板子
    P3478[POI2008]STA-Stationlink给定一个\(n\)个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。一个结点的深度之定义为该节点到根的简单路径上边的数量。对于全部的测试点,保证\(1\leqn\leq10^6\),\(1\lequ,v\leqn\),给出的是一棵树。思路:树......
  • DFS序求LCA
    DFS序求LCA介绍欧拉序求LCA的数组总是会忘记开两倍,并且预处理的常数较大。用DFS序求LCA可以解决这些问题。欧拉序:进节点和出节点会重复记录节点。DFS序:深度优先搜索的顺序,不会重新记录。假设要求\(lca(u,v)\),且\(dfn[u]<dfn[v]\)。那么\(dfn[u]\simdfn[v]\)的......
  • Wordpress Plugins插件巡礼 [Updated: 2024-09-24]
    1.0前言因玩startup比賽,所以用到很多low-code和Wordpressplugins來建立網站/APP。有些工具確真提高了生產力,很符合我的“低投入高產出”風格,因此在這總結一下很好用的Wordpress plugins。2.0 wordpressstartertemplatewordpress有很多免費又好看的模板,用來快速建立自己......
  • 大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(正在更新···)章节内容上节我们完成了如下的内容:MergeTree实测案例Re......
  • WordPress固定链接伪静态怎么设置?【手把手教你】
    WordPress默认链接是参数的形式,也就是常说的动态链接,这种链接对于SEO来说并不是很友好,所以一般我们都会对WordPress的固定链接格式进行修改,设置成伪静态。伪静态与静态的区别就是链接看起来是和静态页面链接一样,但是其实页面还是程序动态生成的。wordress就自带非常完善的伪静态规......
  • WordPress中最佳播客插件:专家级指南
    随着播客的流行,越来越多的专业播客制作者希望通过WordPress网站提升内容品质和用户体验。如果你是一名经验丰富的播客制作者,正在寻找更强大、更灵活的工具来管理和推广播客,这篇文章就是为你准备的。我们将介绍两款适合用户的专家级WordPress播客插件,帮助你充分发挥网站的潜力。1.P......
  • Hadoop三大组件之HDFS(一)
    1.HDFS的架构HDFS(HadoopDistributedFileSystem)采用主从架构,由一个NameNode(主节点)和多个DataNode(从节点)组成。NameNode负责管理数据块映射信息(如文件名、文件目录、权限、块位置等)并配置副本策略,而DataNode负责存储实际的数据块。SecondaryNameNode辅助NameNode进行元......