hdu 1059 Dividing

2023-10-27

Problem

acm.hdu.edu.cn/showproblem.php?pid=1059

题意

6 种宝石,价值分别是 1 到 6。分别给出 6 种宝石的数量,问能不能分成等价值的两堆。

分析

多重背包。主要是记录下多重背包的写法。

对每一种宝石,如果这种宝石的总价值超过所有宝石总价值的一半(因为要对半分),就对它跑一遍完全背包;否则,将这种宝石的数量拆开成:

num = 1 + 2 + 2^2 + 2^3 + …+2^n + rest

这种形式,用 数量*单价 组成若干个大宝石,然后对每个大宝石跑一遍 0/1 背包。(二进制优化,跟快速幂差不多)

Source code

#include <stdio.h>
#include <string.h>
#define N 20000

int num[7], dp[N*3+1];

int max(int a, int b)
{
	return a > b ? a : b;
}

void zero_one(int sum, int v)
{
	int j;
	for(j=sum; j>=v; --j)
		dp[j] = max(dp[j], dp[j-v] + v);
}

void complete(int sum, int v)
{
	int j;
	for(j=v; j<=sum; ++j)
		dp[j] = max(dp[j], dp[j-v] + v);
}

void multiple(int sum, int i)
{
	int k;
	if(i * num[i] > sum)
		complete(sum, i);
	else
	{
		// 拆成:连续的二进制幂的和 + 剩下的
		for(k=1; k<=num[i]; num[i]-=k, k<<=1)
			zero_one(sum, k * i);
		if(num[i])
			zero_one(sum, num[i] * i);
	}
}

int main()
{
	int kase;
	for(kase=1; ; ++kase)
	{
		int i, sum;
		for(sum=0,i=1; i<7; ++i)
		{
			scanf("%d", num + i);
			sum += num[i] * i;
		}
		if(!sum) break;
		printf("Collection #%d:\n", kase);
		if(sum & 1)
		{
			puts("Can't be divided.\n");
			continue;
		}
		sum >>= 1;
		memset(dp, 0, sizeof dp);
		for(i=1; i<7; ++i)
			multiple(sum, i);
		if(dp[sum] == sum)
			puts("Can be divided.\n");
		else
			puts("Can't be divided.\n");
	}
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hdu 1059 Dividing 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK

随机推荐

  • Hadoop实现KNN算法

    本人java基础较弱 有什么需要改进的欢迎大家评论 Hadoop实现KNN算法 一 环境 二 数据说明 三 MapReduce设计 1 KNN算法的基本思想即传统KNN算法的的性能瓶颈 2 并行化KNN设计思想 3 map函数设计 4 re
  • 【C语言学习】C语言函数

    C语言学习 C语言函数 函数的概念 函数的定义方法 函数的分类 从定义角度分类 即函数是谁实现的 从参数角度分类 函数的声明 什么时候需要声明 怎么声明呢 声明的方法 函数的调用 函数的调用方法 使用函数的好处 小总结 变量的存储类别 内存
  • Ubuntu创建Eclipse桌面快捷方式

    Ubuntu1404LTS创建Eclipse桌面快捷方式 cd usr share applications sudo gedit eclipse desktop 填写以下内容 注意每行后面不能有空格 Desktop Entry Encod
  • Python语言学习实战-内置函数all()和any()的使用(附源码和实现效果)

    实现功能 all 和any 函数都是Python的内置函数 用于对布尔值进行操作 all 函数接受一个可迭代对象作为参数 如果可迭代对象中所有元素都为真值 即非零 非空 非None等 则返回True 否则返回False any 函数接受一个
  • 【成电860考研】经验贴汇总(专业课部分)-扒遍所有网站:信软群、王道、知乎、csdn等,截止21年7月整理出的所有帖子-共15篇

    1 单词哥 专业课一共两本书 然而软工那本书也不大需要看 对应试帮助 不大 重点还是看学校老师的 PPT 而计算机网络那本黑书就是非常 重要了 尤其是课后的习题简直是要多刷 毕竟保不准就有原题 计算机网络从 8 月开始 首先自己啃书 确实有
  • Unity小游戏之闯关小游戏

    游戏场景预设图 玩法 使蓝色的小球触碰到黄色的开关让门降下去 并且不触碰任何东西进入下一关 介绍 蓝色的小球是玩家 黄色的是开关用来开绿色点前面的门 红色的是障碍物 黑色的是墙 创建场景以及绑定代码 首先搭建一个场景把地板的Plane命名为
  • 微内核操作系统综述

    一 文章介绍 二 内核与操作系统的关系 三 微内核核心思想 四 各种内核的优缺特点以及上下代之间演变的过程 一 文章介绍 文章主要介绍各种微内核以及它在操作系统中的演变 二 内核与操作系统的关系 内核 是一个操作系统的核心 是基于硬件的第一
  • etcd常用命令与备份恢复-Day03

    1 etcd简介 官方网站 etcd io 官方文档 etcd io docs v3 5 op guide maintenance 官方硬件推荐 etcd io docs v3 5 op guide hardware github地址 gi
  • 设置浏览器兼容

    浏览器兼容 css兼容 cursor定义手型 Firefox不支持hand IE支持pointer 解决方法 统一使用pointer css透明 IE filter progid DXImageTransform Microsoft Alp
  • STM32异常与中断

    一 中断的基本概念 中断的定义及中断工作方式 中断 即CPU在正常执行程序的过程中 遇到外部 例如常见的按键中断 内部 例如定时器中断 的紧急事件需要处理 暂时中断 中止 当前程序的执行 而转去为事件服务 待服务完毕 再返回到暂停处 断点
  • iffDetector-目标检测新优化算法

    想法直接 提升有限 论文地址 https arxiv org pdf 2006 12708 pdf Github地址 https github com anonymous2020new iffDetector Abstract 基于现代CN
  • C++数据结构——杨辉三角

    杨辉三角 杨辉 字谦光 汉族 钱塘 今浙江省杭州 人 南宋杰出的数学家 他曾担任过南宋地方行政官员 为政清廉 足迹遍及苏杭一带 他在总结民间乘除捷算法 垛积术 纵横图 幻方 以及数学教育方面 均做出了重大的贡献 他是世界上第一个排出丰富的纵
  • Android:JNI调用 出错java.lang.UnsatisfiedLinkError: No implementation found for解决办法

    在项目中使用第三方so库 调用JNI时发现了这个错误 java lang UnsatisfiedLinkError No implementation found for 仔细查看了代码 没发现有出错的地方 然后上网查资料 发现这个问题答案
  • three.js设置物体的缩放和旋转

    一 缩放物体介绍 1 如何缩放 使用three js设置物体的缩放可以通过对象的scale属性来实现 例如 将一个立方体对象缩小一半的代码如下 var cube new THREE Mesh new THREE BoxGeometry 1
  • Linux 之 利用Google Authenticator实现用户双因素认证

    一 介绍 什么是双因素认证 双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统 双因素认证是一种采用时间同步技术的系统 采用了基于时间 事件和密钥三变量而产生的一次性密码来代替传统的静态密码 每个
  • Python函数中的实参和形参

    文章目录 一 形参和实参的概念 二 四大参数 4 1位置参数 4 2默认参数 4 3 可变参数 4 4 关键字参数 一 形参和实参的概念 函数的参数分为形参 形式参数 和实参 实际参数 形参又分为 位置参数 默认参数 可变参数 关键字参数
  • c语言旧键盘打字,PAT 乙级 1033. 旧键盘打字 C语言

    1033 旧键盘打字 20 题目 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在2行中分别给出坏掉的那些键 以及应该输入的文字 其中对
  • HTML5 canvas标签-5 浮雕算法

    浮雕算法 顾名思义 就是将图像变成类似石头雕塑的算法 来源于百度 这就是一个浮雕 我们看看它的特点 首先颜色整体 偏灰 上一篇博客中说过 在RGB中 R G B时便是灰色 其次就是层次分明 所以根据上述这两点 我们代码首先需要找出图片边界
  • 设计模式(笔记)优先使用对象组合而不是类继承

    优先使用对象组合而不是类继承 文章内容参考自 http www hautelooktech com 2013 02 05 design principle favor composition over inheritance agilede
  • hdu 1059 Dividing

    Problem acm hdu edu cn showproblem php pid 1059 题意 6 种宝石 价值分别是 1 到 6 分别给出 6 种宝石的数量 问能不能分成等价值的两堆 分析 多重背包 主要是记录下多重背包的写法 对每