大意:和背包的问题相似,第 i 个箱子有 i 颗钻石。钻石的重量,价值给出。然后再M的重量下背尽量多价值的钻石。

思路:直接暴搜然后剪枝。因为数据范围的原因无法用DP。

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
long long maxa(long long a,long long b)
{
return a>b?a:b;
} struct node
{
long long w;
long long v;
double vbw;
int id;
}Q[20]; int n,m;
long long ans;
long long sumv[20];
long long tot; bool cmp(node a,node b)
{
return a.vbw>b.vbw;
} void dfs(int pos,long long sum,int left)//分别是 搜到的当前位置 当前的总价值 当前还剩多少重量
{
ans=maxa(ans,sum);
if(pos>n)return; //越界 if(sum + sumv[pos-1] <=ans)return;//如果剩下的全背上都不比当前最优解好。就剪掉 if(sum + left * Q[pos].vbw <=ans)return; //在性价比排序的基础上,如果剩下的重量全部背这种性价比最高的还不能比最优解好。就剪掉 for(int k=Q[pos].id;k>=0;k--)
{
if(left - k*Q[pos].w <0)continue;
dfs(pos+1,sum+k*Q[pos].v,left-k*Q[pos].w);
}
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
ans=0;
scanf("%lld%lld",&n,&m);
tot=0;
for(int i=1;i<=n;i++)
{
scanf("%lld",&Q[i].w);
Q[i].id = i;
}
for(int i=1;i<=n;i++)
{
scanf("%lld",&Q[i].v);
tot+=i*Q[i].v;
} for(int i=1;i<=n;i++)
Q[i].vbw=1.0 * Q[i].v/Q[i].w; sort(Q+1,Q+n+1,cmp);
sumv[n]=0; for(int i=n;i>=1;i--)
{
//printf("i = %d Q[i].id = %d\n",i,Q[i].id);
sumv[i-1] = sumv[i] + Q[i].id*Q[i].v; //求出后缀和 不包括自身
}
/*for(int i=0;i<=n;i++)
printf("%lld ",sumv[i]);*/ dfs(1,0,m); printf("%lld\n",ans);
}
return 0;
}

POJ 3900 The Robbery的更多相关文章

  1. DFS(四):剪枝策略

    顾名思义,剪枝就是通过一些判断,剪掉搜索树上不必要的子树.在采用DFS算法搜索时,有时候我们会发现某个结点对应的子树的状态都不是我们要的结果,这时候我们没必要对这个分支进行搜索,砍掉这个子树,就是剪枝 ...

  2. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  3. [POJ] 1511 Invitation Cards

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 18198   Accepted: 596 ...

  4. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  5. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  6. POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra)

    Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Total Submissions: 16178   Accepted: 526 ...

  7. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  8. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  9. POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22286 ...

随机推荐

  1. itext之pdf导出添加水印Java工具类

    import java.io.IOException; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentExce ...

  2. .Net在线付款---Paydollar在线付款开发过程

    原文:.Net在线付款---Paydollar在线付款开发过程 最近在做一个Web订单项目,项目有一个需求就是集成Paypal与Paydollar在线付款,一开始看到这个需求也是傻了眼,因为以前从来没 ...

  3. 关于SQL Server 2005 的自动远程数据库备份

    原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需 ...

  4. Windows在结构objective C开发环境

    对于近期打算iPhone.iPod touch和iPad开发一些应用程序,所以.需要开始学习Objective C(苹果推出的类似C语言的开发语言).因为苹果的自我封闭的产业链发展模式(从芯片.机器. ...

  5. C++ - 模板类模板成员函数(member function template)隐式处理(implicit)变化

    模板类模板成员函数(member function template)隐式处理(implicit)变化 本文地址: http://blog.csdn.net/caroline_wendy/articl ...

  6. Fedora21无法播放MP4[已解决]

    首先,安装安装rpmfusion源 http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-21.noarch.rpm ht ...

  7. Visual Studio 单元测试之五---数据库测试

    原文:Visual Studio 单元测试之五---数据库测试 数据库的单元测试主要是测试数据库中的数据是否符合特定的条件,Visual Studio 2010支持下面几种数据的单元测试类型(Visu ...

  8. ubuntu安装nVidia驱动,遇到终端闪砾问题并解决

    安装nvidia的官方驱动之后,比起nouvean来说感觉速度快了不少. 安装该驱动很简单,但选择哪个驱动是要注意的.因为今天我试了nvidia的多个驱动后都在ubuntu下用起来并不好. 我现在的环 ...

  9. 在OpenWrt上编写自己的硬件操作程序

    上一篇文章中有写到如何使用OPENWRT的SDK,这里继续,写怎么在上面开发自己的应用程序. 我欲在OpenWrt上编写一个软件,它能够去读取某个AD芯片的多通道采样值. 在看这篇文章之前请看这官方的 ...

  10. 打开VMware的系统出错

    打开VMware系统时,出现错误 “Invalid configuration file. File "I:/My Virtual Machines/Windows XP english P ...