HDU 3448 Bag Problem
这是一道搜索的背包题目
题意:
有n件物品从中最多选m件,使其总重量不超过v,求能获得的最大重量
有一个很重要的剪枝(是数据的问题还是这个剪枝本身很高效?):
如果重量最大m件物品都不超过v,则答案就是该m件物品之和;或者最轻的物品的重量大于v则答案为0
中间TLE了几次,又WA了几次,好辛苦啊,Orz
//#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; typedef long long LL;
LL ans, n, m, v, a[];
bool vis[]; void DFS(LL x, LL cnt, LL w)
{
if(x > n || cnt > m) return;
if(w > ans) ans = w;
for(int i = x + ; i <= n; ++i)
{
if(!vis[i] && a[i] + w <= v)
{
vis[i] = true;
DFS(x + , cnt + , w + a[i]);
vis[i] = false;
}
}
} int main(void)
{
#ifdef LOCAL
freopen("3448in.txt", "r", stdin);
#endif while(scanf("%lld%lld", &m, &v) == )
{
scanf("%lld", &n);
ans = ;
for(int i = ; i <= n; ++i) scanf("%lld", &a[i]); //剪枝
sort(a + , a + + n);
for(int i = n; i > n - m; --i)
ans += a[i];
if(a[] > v) ans = ;
if(ans <= v)
{
printf("%lld\n", ans);
continue;
} ans = ;
memset(vis, false, sizeof(vis));
DFS(, , );
printf("%d\n", ans);
}
return ;
}
代码君
HDU 3448 Bag Problem的更多相关文章
- Bag Problem
Bag Problem Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/131072 K (Java/Others) Total ...
- HDU 3549 Flow Problem(最大流)
HDU 3549 Flow Problem(最大流) Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- hdu 5106 Bits Problem(数位dp)
题目链接:hdu 5106 Bits Problem 题目大意:给定n和r,要求算出[0,r)之间全部n-onebit数的和. 解题思路:数位dp,一个ct表示个数,dp表示和,然后就剩下普通的数位d ...
- HDU 3374 String Problem (KMP+最大最小表示)
HDU 3374 String Problem (KMP+最大最小表示) String Problem Time Limit: 2000/1000 MS (Java/Others) Memory ...
- hdu 5105 Math Problem(数学)
pid=5105" target="_blank" style="">题目链接:hdu 5105 Math Problem 题目大意:给定a.b ...
- Hdu 5445 Food Problem (2015长春网络赛 ACM/ICPC Asia Regional Changchun Online)
题目链接: Hdu 5445 Food Problem 题目描述: 有n种甜点,每种都有三个属性(能量,空间,数目),有m辆卡车,每种都有是三个属性(空间,花费,数目).问至少运输p能量的甜点,花费 ...
- 网络流 HDU 3549 Flow Problem
网络流 HDU 3549 Flow Problem 题目:pid=3549">http://acm.hdu.edu.cn/showproblem.php?pid=3549 用增广路算法 ...
- HDU 1022 Train Problem I
A - Train Problem I Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- HDU 3374 String Problem(KMP+最大/最小表示)
String Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
随机推荐
- Asp.net 自定义控件开发相关的几种嵌入资源解决方案
前提: 如下将要介绍的几种类型资源都要在其属性页窗口, 将 <生成操作> 属性, 设置为[嵌入的资源], 如图: ► 给自定义控件添加自定义图标的几种方案 方法一: 直接在自定义控 ...
- asp.net word ecxel类型文件在线预览
asp.net word ecxel类型文件在线预览 首先得引用COM: Microsoft Excel 10 Object Library Microsoft Word 10 Object Libr ...
- AESEncrypter加密算法代码示例
package testJava.java; import java.security.SecureRandom; import java.util.Base64; import javax.cryp ...
- CodeSite使用小结 转载
一.要使用Codesite,需要引用csintf单元二.CodeSite的基本方法(一)AddCheckPoint方法codesite.AddCheckPoint 加入监测点(二)AddSeperat ...
- awk处理之案例四:sort加awk来过滤文本
编译环境 本系列文章所提供的算法均在以下环境下编译通过. [脚本编译环境]Federa 8,linux 2.6.35.6-45.fc14.i686 [处理器] Intel(R) Core(TM)2 Q ...
- jvm 之 国际酒店 8 月 19 一次full GC 导致的事故
事故经过: 1 15:18收到短信报警:国际酒店调用OMS queryGorderOrderList方法失败:成单接口调用OMS获取token失败. 2 查看checkList发现15:18开始发 ...
- hdu 4664 Triangulation(题意已在讨论版中说明)
题意: 给定n个平面(平面之间相互独立),每个平面上有一些点,并且构成凸集,C和D轮流选一个平面连接两个点画线段,并保证线段之间除了端点之外没有其它交点,当平面上出现一个完整的三角形之后此平面就不能继 ...
- Android 核心分析 之七Service深入分析
Service深入分析 上一章我们分析了Android IPC架构,知道了Android服务构建的一些基本理念和原理,本章我们将深入分析Android的服务.Android体系架构中三种意义上服务: ...
- AcmeAir安装AI探针--SaaS版
一.安装SaaS版AI探针准备工作: 1.准备好可用的docker版AcmeAir应用 2.在SaaS官网tpm.oneapm.com上已注册可用的账号 3.登录tpm.oneapm.com,点击选择 ...
- Delphi对于控件的SuperClassing(封装并扩展Button,使之变成TButton)
写博客写了这么久,但是一直不知道应该怎么样写函数之间的调用关系和执行顺序,因为不停的跳来跳去的,但是写的时候却只能顺序写调用关系,直到今天发现这种写法很不错: TButton创建窗口是在CreateW ...