01背包 D. Make Them Equal

news2024/11/24 0:23:16

Problem - D - Codeforces

image-20231115212247443

image-20231115212306654

输出值不超过k次操作后的最大值。

看b数组的大小,b数组元素是小于1000的正整数。从1到bi如果可以,那么最多是大概10次的,因为是指数递增的,例如:1 -> 2 -> 4 -> 8 -> 16 -> 32 -> 64 -> 128 -> 256 -> 512 -> 1024。对于每个ai到bi的这个操作是互不影响的,同时ai操作一下但是不等于bi对答案没有贡献的,那么就可以把ai到bi的次数预处理出来,之后01背包。从1到bi的操作次数当作01背包的体积,ci当作01背包的价值。

发现01背包的话,k可能1e6,时间复杂度是O(1e6 * 1e3),时间上不够,但是根据之前的发现,最多不超过11、12次就可以,因为k最多是12 * 1000,即1e4,现在时间复杂度是可以过这题的。

代码如下:

#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <set>
#include <map>
#include <queue>
#include <ctime>
#include <random>
#include <sstream>
#include <numeric>
#include <stdio.h>
#include <functional>
#include <bitset>
#include <algorithm>
using namespace std;

#define Multiple_groups_of_examples
// #define int_to_long_long
#define IOS std::cout.tie(0);std::cin.tie(0)->sync_with_stdio(false); // 开IOS,需要保证只使用Cpp io流 *
#define dbgnb(a) std::cout << #a << " = " << a << '\n';
#define dbgtt cout<<" !!!test!!! "<<'\n';
#define rep(i,x,n) for(int i = x; i <= n; i++)

#define all(x) (x).begin(),(x).end()
#define pb push_back
#define vf first
#define vs second

typedef long long LL;
#ifdef int_to_long_long
#define int long long
#endif
typedef pair<int,int> PII;

const int INF = 0x3f3f3f3f;
const int N = 2e5 + 21;
vector<int> v(1200, INF);
void inpfile();
void solve() {
	int n,k; cin>>n>>k;
	k = min(12000, k);
	vector<int> f(k + 1);
	vector<int> a(n + 1), w(n + 1);
	for(int i = 1; i <= n; ++i) {
		cin>>a[i];
		// 操作次数当作01背包的体积
		a[i] = v[ a[i]];
	}
	// ci作为01背包的价值
	for(int i = 1; i <= n; ++i) cin>>w[i];
	for(int i = 1; i <= n; ++i) {
		for(int j = k; j >= a[i]; --j) f[j] = max(f[j], f[j - a[i]] + w[i]);
	}
	cout<<f[k]<<'\n';
}
#ifdef int_to_long_long
signed main()
#else
int main()
#endif

{
	// 预处理出从1到u需要的最少次数
	v[1] = 0;
	for(int i = 1; i <= 1000; ++i) {
		for(int j = 1; j <= i; ++j) {
			int u = i + i / j;
			if(u <= 1000) v[u] = min(v[u], v[i] + 1);
		}
	}
	#ifdef Multiple_groups_of_examples
	int T; cin>>T;
	while(T--)
	#endif
	solve();
	return 0;
}
void inpfile() {
	#define mytest
	#ifdef mytest
	freopen("ANSWER.txt", "w",stdout);
	#endif
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1212704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12-使用vue2实现todolist待办事项

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章…

【Java】若依的使用代码生成及字典的使用

一、导言 1、介绍 若依管理系统是一款基于Java语言开发的开源管理系统。它采用了Spring Boot框架&#xff0c;使得开发更加快速和高效。同时&#xff0c;它还集成了MyBatis Plus&#xff0c;进一步简化了数据库操作。若依管理系统的界面简洁美观&#xff0c;且支持多语言&#…

M系列 Mac使用Homebrew下载配置git和连接GitHub

一、首先我们需要安装Homebrew M系列 Mac安装配置Homebrewhttps://blog.csdn.net/W_Fe5/article/details/134428377?spm1001.2014.3001.5501 二、下载git 1、终端输入一下命令 brew install git 2、这时下载完成 二、配置git 1、创建用户名和邮箱 这里以我自己的邮箱举例…

Unity中Shader矩阵的行列式

文章目录 前言一、什么是矩阵的行列式&#xff1f;1、只有方阵才有行列式&#xff08;即 n X n 的矩阵&#xff09;2、数学上表示为 det(A) 或者 |A|3、行列式可以看做有向面积 或 体积 在空间中的变化影响 二、2 x 2矩阵的行列式三、3 x 3矩阵的行列式四、行列式计算总结五、使…

【电路笔记】-快速了解无源器件

快速了解无源器件 文章目录 快速了解无源器件1、概述2、电阻器作为无源器件3、电感器作为无源器件4、电容器作为无源器件5、总结 无源器件是电子电路的主要构建模块&#xff0c;没有它们&#xff0c;这些电路要么根本无法工作&#xff0c;要么变得不稳定。 1、概述 那么什么是…

word批量图片导出wps office word 图片批量导出

word批量导出图片教程 背景 今天遇到了一个场景&#xff0c;因为word里的图片打开看太模糊了&#xff0c;如果一个一个导出来太麻烦。想批量将word中的图片全部导出 但是&#xff0c;wps导出的时候需要会员 教程开始&#xff1a; 将word保存为 .docx 格式&#xff0c;可以按F1…

JAVA G1垃圾收集器介绍

为解决CMS算法产生空间碎片和其它一系列的问题缺陷&#xff0c;HotSpot提供了另外一种垃圾回收策略&#xff0c;G1&#xff08;Garbage First&#xff09;算法&#xff0c;通过参数-XX:UseG1GC来启用&#xff0c;该算法在JDK 7u4版本被正式推出&#xff0c;官网对此描述如下&am…

C语言判断闰年(ZZULIOJ1028: I love 闰年!)

题目描述 根据一个年份&#xff0c;判断是否是闰年。 输入&#xff1a;输入为一个整数&#xff0c;表示一个年份。 输出&#xff1a;如果是闰年&#xff0c;输出"Yes"&#xff0c;否则输出"No"。输出单独占一行。 样例输入 Copy 2012 样例输出 Copy Yes 分…

二维码智慧门牌管理系统升级技术解决方案

文章目录 前言一、系统升级背景二、系统升级目标 本次系统升级的主要目标包括三、系统升级方案 为实现上述目标&#xff0c;我们提出了以下升级方案&#xff1a;四、系统升级效果 通过本次升级&#xff0c;二维码智慧门牌管理系统将实现个人待办消息提醒和重要通知消息管理等新…

【数据结构】单链表 | 详细讲解

线性表顺序存储结构的优缺点 顺序表优点 无须为了表示中间的元素之间的逻辑关系而增加额外的存储空间&#xff1b;因为以数组形式存储&#xff0c;可以快速地存取表中任一位置的元素。 顺序表缺点 插入和删除操作需要移动大量元素&#xff0c;时间复杂度为O(N)&#xff1b;…

人均年薪70万!华为项目经理具备了哪些能力

大家好&#xff0c;我是老原。 最近在逛脉脉的时候&#xff0c;看到了一位华为项目经理晒出的月收入&#xff1a;5W&#xff0c;这还是不包含每年分红奖励前的到手薪资。 按他现在的19级别&#xff0c;再加上分红奖励&#xff0c;年薪至少在70W&#xff0c;留言区羡慕声一片。…

高科技电子行业采购供应链管理

随着新一代信息技术的发展&#xff0c;我们迈入了数智化时代&#xff0c;各行各业借助技术的升级&#xff0c;加快自身数字化转型的步伐。高科技电子行业作为技术创新的前沿地带&#xff0c;在智能化的道路上也走在传统行业的前面&#xff0c;这其中包括生产研发的技术创新&…

目标检测—Yolo系列(YOLOv1/2/v3/4/5/x/6/7/8)

目标检测概述 什么是目标检测&#xff1f; 滑动窗口&#xff08;Sliding Window&#xff09; 滑动窗口的效率问题和改进 滑动窗口的效率问题&#xff1a;计算成本很大 改进思路 1&#xff1a;使用启发式算法替换暴力遍历 例如 R-CNN&#xff0c;Fast R-CNN 中使用 Selectiv…

IDEA没有Add Framework Support解决办法

点击File—>Settings 点击第一个设置快捷键 点击apply和ok即可 我们要点击一下项目&#xff0c;再按快捷键ctrlk 即可

数据分析 - 分散性与变异的量度

全距 - 极差 处理变异性 方差度量 数值与均值的距离&#xff0c;也就是数据的差异性 标准差描述&#xff1a;典型值 和 均值的距离的方法&#xff0c;数据与均值的分散情况

Datawhale智能汽车AI挑战赛

1.赛题解析 赛题地址&#xff1a;https://tianchi.aliyun.com/competition/entrance/532155 任务&#xff1a; 输入&#xff1a;元宇宙仿真平台生成的前视摄像头虚拟视频数据&#xff08;8-10秒左右&#xff09;&#xff1b;输出&#xff1a;对视频中的信息进行综合理解&…

计算属性传参的写法,在vue3项目中,

计算属性 | Vue.js 在vue3项目中&#xff0c;使用计算属性&#xff0c;在使用这个计算属性时&#xff0c;要传入参数写法有点怪 computed(函数&#xff09; 函数里面再返回一个函数&#xff0c;这个函数接收参数 注意&#xff1a;最后的结果是&#xff0c;这个计算属性函数并…

2023.11.14 hivesql的容器,数组与映射

目录 https://blog.csdn.net/m0_49956154/article/details/134365327?spm1001.2014.3001.5501https://blog.csdn.net/m0_49956154/article/details/134365327?spm1001.2014.3001.5501 8.hive的复杂类型 9.array类型: 又叫数组类型,存储同类型的单数据的集合 10.struct类型…

Maven介绍及仓库配置

目录 一.Maven 1.介绍 坐标 仓库 1&#xff09;中央仓库 2&#xff09;本地仓库 3&#xff09;私服 配置国内源 配置过程 二.Maven功能 2.项目构建 3.依赖管理 Maven Help插件 安装 ​使用 一.Maven 1.介绍 坐标 唯一的&#xff0c;通过以下代码的三个键值对确…

JWT登录认证(2认证)

备注说明&#xff1a; 用户登录成功后&#xff0c;系统会自动下发JWT令牌&#xff0c;然后在后续的每次请求中&#xff0c;浏览器都需要在请求头header中携带到服务器&#xff0c;请求头的名称为Authorization&#xff0c;值为登录时下发的JWT令牌。 如果检测到用户未登录&…