首页 > 其他分享 >E - Product Development

E - Product Development

时间:2023-10-01 10:44:23浏览次数:50  
标签:Development 10 Product 01 int 背包 dp

E - Product Development

一眼看上去,选与不选,很像01背包问题,很显然当k=1时就是01背包
那我们可以想到设置dp[i],表示目标为i时所要花费的最小代价,直接套用01背包模板

但是题目写道要满足多个k值,也就是多个背包问题,那该怎么办
但是我们可以看到,p<=5,小于10进制每一位的9
那么我们可不可以把它转化成10进制来做呢

方法:
1.把目标值设为m,m的每一位都为p一共k位
2.选第i时,我们把x算出,x表示目标为x时再加上第i个项目时能到达目标j的数值,也就是转换成10进制
2.1 意思是j是由谁转移得到的
3.状态转移(01模板)

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int N = 2e5 + 10, INF = 1e9 + 10;
int n, k, p;
int c[150];//代价
int a[150][10];//每一位的价值
LL dp[100005];//目标为i时所花费的最小代价,i最大55555,dp[i]最大1e11
int m;//10进制目标值,每一位都为p
int main() {
	ios::sync_with_stdio(0), cin.tie(0);
	cin >> n >> k >> p;
	for (int i = 1; i <= k; i++) m = m * 10 + p;//目标值
	for (int i = 1; i <= n; i++) {
		cin >> c[i];
		for (int j = 1; j <= k; j++) cin >> a[i][j];
	}
	memset(dp, 0x3f, sizeof dp);
	dp[0] = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = m; j >= 0; j--) {//01背包
			//十进制转换
			int w[6] = {0};
			for (int x = j, l = 1; l <= k; l++, x /= 10) {
				w[l] = max(0, x % 10 - a[i][l]);//计算每一位的转移
			}
			int x = 0;
			for (int l = k; l > 0; l--) x = x * 10 + w[l];//确立j由谁转移
			//十进制转换
			//01背包
			dp[j] = min(dp[j], dp[x] + c[i]);//选第i个,目标为j时由x转移的最小代价
		}
	}
	cout << (dp[m] > 1e11 ? -1 : dp[m]);
	return 0;
}

标签:Development,10,Product,01,int,背包,dp
From: https://www.cnblogs.com/bu-fan/p/17738643.html

相关文章

  • Setting up development environment with Ubuntu 22.04
    0.Dont'useSnap&Ubuntuappliationstore.90%的问题可以通过重启解决改了IP后需要,禁用网络后再开启才生效 1.Input:https://shurufa.sogou.com/linux/guide 2.IDE:https://www.jetbrains.com/toolbox-app/https://code.visualstudio.com/ 3.RemoteControl:......
  • 无涯教程-JavaScript - PRODUCT函数
    描述PRODUCT函数将所有作为参数给出的数字相乘并返回乘积。如,如果单元格A1和A2包含数字,要将这两个数字相乘,可以使用以下公式=产品(A1,A2)这与与(*)数学运算符相乘相同。即=A1*A2当您需要将多个单元格相乘时,PRODUCT功能非常有用。Example=产品(A1:A3,C1:C3)这和=......
  • [LeetCode] 1352. Product of the Last K Numbers 最后 K 个数的乘积
    Designanalgorithmthatacceptsastreamofintegersandretrievestheproductofthelast k integersofthestream.Implementthe ProductOfNumbers class:ProductOfNumbers() Initializestheobjectwithanemptystream.voidadd(intnum) Appendsthei......
  • [题解]AT_arc116_b [ARC116B] Products of Min-Max
    思路我们容易可以得到一个朴素的做法,首先对\(a\)数组排序,然后枚举最大值和最小值\(a_i,a_j\),那么对于中间的元素都有选与不选两种情况,得到答案:\[\sum_{i=1}^{n}(a_i\timesa_i+(\sum_{j=i+1}^{n}a_i\timesa_j\times2^{j-i-1}))\]然后对这个式子做一个化简:......
  • Burp Suite Extension Development Guide
    BurpSuite是什么?BurpSuite是一款Web应用程序渗透测试工具,可以帮助用户发现和利用Web应用程序中的漏洞,提高渗透测试的效率和精度。Web应用程序最常用的传输数据的协议就是HTTP/HTTPS,所以我们将从HTTP协议的数据格式开始介绍。HTTP/HTTPS协议内容简要划分Burp中最为核心的对象......
  • 关于 Product Pipeline 的 galectin.json 文件
    ProductPipeline概述:"ProductPipeline"是一个广泛用于企业中的术语,指的是一个产品从概念到最终交付的整个过程。它代表了产品的生命周期,从概念、规划、设计、开发、测试、部署,一直到最终发布和维护。在软件开发领域,"ProductPipeline"通常包括多个阶段和环节,每个环节都有特定的......
  • IDEA编译报错:maven-resources-production:guyi-admin: java.lang.IndexOutOfBoundsExc
    编译项目的时候,IDEA一直提示:maven-resources-production:xxxxxx:java.lang.IndexOutOfBoundsException:Range[-1,-1+1025)outofboundsforlength1024,maven-resources-production:xxxxxx:java.lang.IndexOutOfBoundsException:Range[-1,-1+1025)outofboundsfor......
  • maven-resources-production:webapi: java.lang.NegativeArraySizeException
    maven-resources-production:webapi:java.lang.NegativeArraySizeException打开项目启动时,发现报这个错误,基于此,我分析了一下,首先原本好好的项目突然这样子,首先查看代码更新的情况,发现代码并没有作任何变化。分析代码jar包的问题,首先mvnclean和mvninstall直接一起上。代码可......
  • 关于 Product Pipeline 的 galectin.json 文件
    ProductPipeline概述:"ProductPipeline"是一个广泛用于企业中的术语,指的是一个产品从概念到最终交付的整个过程。它代表了产品的生命周期,从概念、规划、设计、开发、测试、部署,一直到最终发布和维护。在软件开发领域,"ProductPipeline"通常包括多个阶段和环节,每个环节都有特定的......
  • centos7中 configure: error: liblzma development files not found
     001、configure:error:liblzmadevelopmentfilesnotfound 002、解决方法[root@pc1test01]#yum-yinstallxz-devel 。 ......