Accepted Necklace
Accepted Necklace
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 53 Accepted Submission(s) : 11
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Input
For each case, the first line contains two integers N (N <= 20), the total number of stones, and K (K <= N), the exact number of stones to make a necklace.
Then N lines follow, each containing two integers: a (a<=1000), representing the value of each precious stone, and b (b<=1000), its weight.
The last line of each case contains an integer W, the maximum weight my mother will accept, W <= 1000.
Output
Sample Input
1 2 1 1 1 1 1 3
先超时杭电上提交,后加了个判重,修改前:
#include <stdio.h> #include <iostream> #include <string.h> using namespace std;int val[1002],wei[1002]; int sum; int case1,n,k,w; int best; bool vis[1002];void dfs(int v,int we,int sum) { int i; if(sum>k) return ; if(we>w) return ; if(sum==k&&we<=w&&best<v) best=v; for(i=1;i<=n;i++) { if(!vis[i]&&we<w&&sum<k) { vis[i]=1; v+=val[i]; we+=wei[i]; sum++; dfs(v,we,sum); v-=val[i]; we-=wei[i]; sum--; vis[i]=0; } } }int main() { int i;scanf("%d",&case1); while(case1--) { cin>>n>>k; for(i=1;i<=n;i++) { cin>>val[i]>>wei[i]; } cin>>w; memset(vis,0,sizeof(vis)); best=0; dfs(0,0,0); printf("%d\n",best); } return 0; }
修改后:
#include <stdio.h> #include <iostream> #include <string.h> using namespace std;int val[1002],wei[1002]; int sum; int case1,n,k,w; int best; bool vis[1002];void dfs(int v,int we,int sum,int first) { int i; if(sum>k) return ; if(we>w) return ; if(sum==k&&we<=w&&best<v) best=v; for(i=first;i<=n;i++) { if(!vis[i]&&we<w&&sum<k) { vis[i]=1; v+=val[i]; we+=wei[i]; sum++; dfs(v,we,sum,i+1); v-=val[i]; we-=wei[i]; sum--; vis[i]=0; } } }int main() { int i;scanf("%d",&case1); while(case1--) { cin>>n>>k; for(i=1;i<=n;i++) { cin>>val[i]>>wei[i]; } cin>>w; memset(vis,0,sizeof(vis)); best=0; dfs(0,0,0,1); printf("%d\n",best); } return 0; }
参考网上的代码:
这道题目是DFS题目,但又参杂了多重背包问题。开始我了3次都是Time limited。。
后来才知道又有多重背包问题,多重背包即要考虑重复问题,
即加个参数考虑下重复的情况就O了AC啦。
关键点: DFS考虑第1是否用时,然后递归用后面的2--N个,组合起来看是否组成最大价值的
项链,将其保存;接下来循环就从第2个开始,不需要在管第1个背包了,否则重复;
举例: 3 4 5 6 == 4 3 5 6 == 5 3 6 4这个道理,所以下面代码中的DFS中FOR循环是
START开始的。
Accepted Necklace相关推荐
- Accepted Necklace HDU - 2660
Accepted Necklace HDU - 2660 WA wa了两发又双叒叕是因为没读清楚题我裂开 AC代码 好家伙一手最low的dp竟然过了,我还一直不敢交hhhh #include < ...
- HDU-2660 Accepted Necklace
GDUT 2020寒假训练 专题一 D 原题链接 HDU-2660 Accepted Necklace GDUT-专题1-D BFS/DFS 题目大意 有N个石头想要从中选出K个做成项链,每颗石头有自 ...
- HDU 2660 Accepted Necklace
编辑器加载中... 转载于:https://www.cnblogs.com/bo-tao/archive/2012/02/29/2374602.html
- Hdu2660 Accepted Necklace【简单dfs】
http://acm.hdu.edu.cn/showproblem.php?pid=2660 题目大意:n个珠子里面找k个珠子,使得价值最大但重量不超过某一限定值. 直接对要不要第i颗珠子进行dfs, ...
- (step4.3.6)hdu 2660(Accepted Necklace)
题目大意:输入三个整数t,n,k,分别表示测试用例数.宝石的种类数以及母亲所能接受的最大的重量.接下来的n行,每行有2个整数,分别表示每种宝石的价值及重量. 最后一行为母亲所能接受的保湿的最大重量 解 ...
- 杭电oj题目题型分类(转)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
- HDOJ题目分类大全
版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...
- HDU题目分类大全【大集合】
基础题: 1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.105 ...
- 杭电OJ题目分类(转载)
1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...
最新文章
- Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理
- Delphi2010使用TImage打开jpeg图片错误的处理
- python百度百科api-python使用API
- 基于socket的线上聊天框
- JavaScript tips and tricks - 4
- [洛谷P4705]玩游戏
- python继承实现原理封装property
- 日均互动50万次 微信的营销的成功之道
- PHP实现的服务器端,PHP实现服务器端允许客户端ajax跨域
- python强行终止程序_python终止程序的方法
- SVN提交时出现remains in conflict错误
- 第十五周 项目三 归并排序算法的改进
- win10修改系统字体(替换OneNote中Calibri字体)
- 【AAD Connect】03:使用AAD Connect同步到Office365时的同步规则(AD账号同步到O365)
- css手机触摸屏媒体查询
- warning C4996的分析
- 优化器optimizer,BGD、SGD、MBGD、NAG、AdaGrad、Adadelta、RMSProp、Adam
- 为别人撑伞(深度好文)
- 宋鸿兵 《货币战争》风暴制造者
- stagefright框架(四)-Video Buffer傳輸流程 .
热门文章
- 报表导出HTML格式怎么转换为EXCEL,使用html导出excel时的格式问题
- linux fuser主机关闭,linux 下强制umount+Fuser命令详解
- 计算机网络fmd是什么意思,不用就亏大了!酷炫又不用花钱的Win10“黑科技”
- Python爬虫(一):简单小说爬取实例
- 1、新建基于标准固件库MDK5工程模板(STM32F103ZET6)
- AI回合制游戏,过程比较简单。程序中的f变量和条件语句用的很经典。
- hardware - cortex-A15, cortex-A35,cortex-A53,cortex-A72
- 看不懂Offer上的岗位?这一篇统统给你说明白!
- fock join 列子
- 软考各级别各科目考试分析