题目:http://poj.org/problem?id=1014 题意:有6个物品,价值分别为1、2、3、4、5、6,输入6个数,代表相应的物品的个数,问的是 能不能物品分成两份,每份的价值总和相同。 思路:深搜或多重背包~~~ 好久没写了 生啊~~~ //深搜#include <stdio.h> #include <string.h> int array[10]; int a, b, c, d, e, f; int sum; int cnt, flag; void dfs(int s, int x) { if (flag==1) return; if (s==sum) {flag=1; return;} for (int i=x; i>=1; i--) { if (array[i]==0) continue; if (s+i<=sum) { array[i]--; dfs(s+i, i); if (flag==1) return; } } } int main() { // freopen("in.txt", "r", stdin); cnt=1; while (scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f)==6) { if (a==0&&b==0&&c==0&&d==0&&e==0&&f==0) break; printf("Collection #%d:\n", cnt++); memset(array, 0, sizeof(array)); array[1]=a, array[2]=b, array[3]=c; array[4]=d, array[5]=e, array[6]=f; sum=1*a+2*b+3*c+4*d+5*e+6*f; if (sum%2) {printf("Can't be divided.\n\n"); continue;} sum/=2; flag=0; dfs(0, 6); if (flag==1) printf("Can be divided.\n\n"); else printf("Can't be divided.\n\n"); } return 0; }
//多重背包#include <stdio.h> #include <string.h> const int maxn=200000; int dp[maxn+10], num[10]; int value; void CompletePacket(int c, int v) { for (int i=c; i<=v; i++) { if (dp[i]<dp[i-c]+c&&dp[i-c]+c<=v) dp[i]=dp[i-c]+c; } } void ZeroOnePacket(int c, int v) { for (int i=v; i>=c; i--) { if (dp[i]<dp[i-c]+c&&dp[i-c]+c<=v) dp[i]=dp[i-c]+c; } } void MulityPacket(int c, int v) { for (int i=1; i<=c; i++) { if (num[i]==0) continue; if (num[i]*i>v) CompletePacket(i, v); else { int k=1; while (k<num[i]) { ZeroOnePacket(k*i, v); num[i]=num[i]-k; k*=2; } ZeroOnePacket(num[i]*i, v); } } } int main() { // freopen("in.txt", "r", stdin); int cnt=1; while (1) { value=0; for (int i=1; i<=6; i++) scanf("%d", &num[i]), value+=i*num[i]; if (value==0) break; memset(dp, 0, sizeof(dp)); printf("Collection #%d:\n", cnt++); if (value%2==1) {printf("Can't be divided.\n\n"); continue;} value=value/2; MulityPacket(6, value); if (dp[value]==value) printf("Can be divided.\n\n"); else printf("Can't be divided.\n\n"); } return 0; }
相关推荐
手把手教你用开源EtherCAT协议栈SOEM开发从站设备(附避坑指南)
本文详细介绍了如何使用开源EtherCAT从站协议栈SOES进行嵌入式设备开发。内容涵盖从环境搭建、硬件准备到核心的对象字典与PDO映射配置,并重点分享了主循环集成、状态机处理以及实战调试中的常见问题与避坑指南,旨在帮助开发者高效实现设备接入工业现场总线网络。
蓝桥杯-背包问题
#include<cstdio> #include<iostream> using namespace std; const int maxn = 30; int n,V,maxValue=0; int w[maxn], c[maxn]; void DFS(int index, int sumw,int sumc){ /* //死胡同 if(index==n){ i...
【实战】——零代码玩转Supervisely人像分割:从标注到模型训练的数据流水线搭建
本文详细介绍了如何零代码使用Supervisely平台搭建人像分割数据流水线,从智能标注到数据集格式转换,再到模型训练与优化。Supervisely的智能标注工具和协作功能大幅提升了人像分割项目的效率,特别适合视频会议背景虚化、虚拟试衣等应用场景。
hdu1171(DP求两份物品的价值相差最小)
题目信息: 给出一些物品的价值和个数。分成两份,是这两份的价值相差最小(DP方法) http://acm.hdu.edu.cn/showproblem.php?pid=1171 AC代码: /** *0-1背包问题 *使得总背包的一半空间装尽可能多的价值 */ #include<iostream> #include<cstri...
【Unity】Spine动态换装进阶:SkeletonGraphic插槽级皮肤切换与内存优化
本文深入探讨了Unity中Spine动态换装的进阶技术,重点解析了SkeletonGraphic插槽级皮肤切换的实现原理与内存优化策略。通过代码示例展示了如何高效管理皮肤实例、避免内存泄漏,并提供了对象池、纹理合并等性能优化方案,帮助开发者提升2D角色换装系统的运行效率与稳定性。
LLC谐振电路增益公式推导
LLC谐振电路增益公式理解
Poj 1014 Dividing(多重背包)
一、题目大意 有价值为1,2,3,4,5,6的六种大理石,它的数量不一。要在不破坏大理石的情况下,使两人能分到总价值相等的大理石。数量由标准输入给出,问给定数据能否平分。 二、题解 首先,我们要的是平分总价值为两份,这里有一个很明显的剪枝,即如果总价值为奇数则直接输出不可分。如果总价值为偶数,则要把它分为两份,也就是意味着我们要能从给定数量的大理...
从零搭建宝兰德BES单机版:分离式安装、环境变量配置到控制台访问的避坑指南
本文详细介绍了从零搭建宝兰德BES单机版的完整流程,包括分离式安装、环境变量配置和控制台访问的避坑指南。针对中间件安装部署中的常见问题,提供了账号规划、JDK配置、实例创建和防火墙设置等实用解决方案,帮助开发者和运维人员高效完成BES中间件的部署工作。
POJ 1014 Dividing(多重背包, 倍增优化)
Q: 倍增优化后, 还是有重复的元素, 怎么办 A: 假定重复的元素比较少, 不用考虑 Description Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the...
微信自动化必备软件:inspect(获取微信界面元素)
SaveButton10015.2:1 ✅(合格)Passed ✅说明这个控件完全符合无障碍标准。
【车载以太网】【架构】整体架构与协议标准
车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx
POJ 1014 Dividing ( 多重背包)
题意:玛莎和比尔有一批大理石(或弹珠)。他们想要将这批大理石分成价值和相等的两批。如果所有的大理石有同样的价值,那很简单,因为只要按数目分一半就行了。但是很可惜,一些大理石大一点,或者更漂亮一点。所以玛莎和比尔对每一个大理石分配一定的价值分从1到6。现在他们要分离这些大理石使得分别能获得相同总值。很可惜,他们意识到有时不可能平分大理石(即使总值是偶数)。例如,如果有1个价值为1,1个价值为3,两个
RK3588部署YOLOv11与RKNN全流程教程
本文详细介绍了在RK3588开发板上部署YOLOv11目标检测模型的全流程。主要内容包括:PC端CUDA/cuDNN环境配置、Anaconda虚拟环境搭建、RKNN Toolkit2安装;YOLOv11模型从PyTorch到ONNX再到RKNN的格式转换;以及RK3588开发板的系统配置、RKNPU驱动安装和最终推理实现。教程提供了完整的代码示例,帮助开发者快速在边缘设备上实现高效的AI推理应用,涵盖从环境准备到实时检测的全套解决方案。
dividing zoj 1149, PKU 1014
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=149这道题目真是打击人的自信心啊,在题目分类中被分为dp(动态规划),但是又不是随便dp的出来的。Google了好久,发现一般有以下几种解法:基本的动态规划双向dp居然还有人直接迭代搞定的。他的代码中优先考虑了sum/2为奇数而1,3,5的数量同时为偶数的情况,然后迭代。我没有验证,当然也没必要验证,因为这显然很投机。就像完全不懂的人买了一只股票,然后涨了,第二天还在那里沾沾自喜,表明自己
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
pku_Dividing_1014
/* Name: Dividing - PKU 1014 Author: Mars Description: DP Result: 2231562 bestzsx 1014 Accepted 520K 421MS C++ 1617B 2007-05-29 21:30:22*/ #include #include using namespace std;const int N
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
pku1014 Dividing (DP)
动态规划,和pku1276的算法是基本一样的显然,如果总价值为奇数,则均分是不可能的,如果总价值为偶数,则看各种marble的线性组合值能否为总价值的一半,如果可能,则可均分#include using namespace std;/*#include ifstream fin("data.txt");#define cin fin*/int mar
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
pku 1014 Dividing dp 多重背包
还是比较简单的一题,只是将num[j]=num[j-i]+1;写成了num[i]=num[j-i]+1;WA了无数次,终于发现错误了 #include #include #define max 60010 int dp[max]; int num[max]; int n[7]; int main(){ int i,j; int sum,cas=0; wh
PKU ACM 1014 Dividing 平分 (DFS)
题目链接:Dividing 问题描述: 两个人平分物品,每件物品的价值不同(1 ~ 6),但多件物体可以有相同的价值。问是否可以平分。 主要思路: 1. 递归求解; 2. 两个重要的剪枝: (1) 若总价值为奇数,则必不可分; (2) 在
PKU-1014 Dividing (多重背包)
原题链接 http://poj.org/problem?id=1014 Dividing Description Marsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the
动态规划(acm pku 1014 Dividing)
http://162.105.81.212/JudgeOnline/problem?id=1014哎,好久不做题。。犯傻了。。题目意思是两个人有一些大理石,价值分别为1~6若干块,问能不能两个人平均分配。当然大理石不能切开。不算太难的题目,转化成求一个人能不能拿出总价值一半的大理石就可以做了。思路就是在现有可以达到的价值基础上加上一块额外的石头,得到一个新的可以达到的值,不断循环下去,看是否可以达到sum/2即可。#include using namespace std; int num[10];
【pku 1014】Dividing (多重背包 套模板)
Dividing Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 12 Accepted Submission(s) : 9 Problem Description Marsha and Bill own a collectio
Pku acm 1014 Dividing 动态规划题目解题报告(十七)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1014刚AC了,趁热打铁,写下解题报告,这道题很早就在joj上做过,当时不知道dp,只会用很菜的方法,结果即使joj这道题仅要求10s还是会超时!思想:本题是找按价值均分大理石的方案是否存在,由于分配时不能破坏大理石,所以有个显而易见的剪枝:当所有的大理石的总价值为奇数时肯定不能被均分。把问题转化一
(pku 1014) (hdu 1059) (zoj 1049) Dividing muhanshu
(pku 1014) (hdu 1059) (zoj 1049) Dividing 前几天看了刘老师关于母函数的课件,顺便找几个题目来热热身.看了1059的题目以后,很快我就把他和母函数联系起来了,于是就动手写了程序,没想到提交就wa掉了,后来发现是在多项式计算的地方出现了问题.后来一个师姐看我做这个题目,她也去动手做了起来.她用的是贪
pku1014----dividing(平分钻石,动态规划--剪枝)
352K 0MS G++ 1077B 2009-01-15 12:35:04 判断给定的钻石价值能否均分。 给一个bool数组它表示能分出的价值数<总价值的一半(如:总价值为8,且可分成3和5两份,那么f[3...
poj1014 Dividing题解
<br />原题:http://acm.pku.edu.cn/JudgeOnline/problem?id=1014<br />网上很多人说直接采用dp就可以了,但是我觉得不用那么复杂,用贪心算法+回溯+剪枝就可以了,而且特快,运行时间为0.<br />1.首先,将所有石子价值先加,如果sum为奇数,则返回false.<br />2.然后,采用贪心策略在石子中选择价值和为sum/2的组合,如果组合成功,返回true,否则false.<br /> a).既然贪心,那当然首先选价值为6的石子,在不大于sum
625



被折叠的 条评论
为什么被折叠?



