桐桐的运输方案(transp)
【问题描述】
桐桐有 N 件货物需要运送到目的地,它们的重量和价值分别记为:
重量:W1,W2,…,Wn;
价值:V1,V2,…,Vn;
已知某辆货车的最大载货量为 X,并且当天只能运送一趟货物。这辆货车应
该运送哪些货物,才能在不超载的前提下使运送的价值最大?
【输入格式】transp.in
第一行是一个实数,表示货车的最大载货量 x(1<x≤100)。
第二行是一个正整数,表示待运送的货物数 n(1<n≤20)。
后面 n 行每行两个用空格隔开的实数,分别表示第 1 至第 n 件货物的重量 W
和价值 V。
【输出格式】transp.out
第一行为被运送货物的总价值(只输出整数部分);
第二行为按编号大小顺序输出所有被运送货物的编号(当一件都不能运送
时,不输出)。
【输入样例】
20
4
3.5 4
4 5
5 6.8
6.9 7
【输出样例】
22
1 2 3 4
【解题思路】
首先这题有实数运算,排除DP,再看数据范围,可以看出用二进制枚举可解,当然回溯也是可行的。
运用二进制枚举需要掌握基本的位运算
左移符号<< 相当于*2
右移符号>> 相当于/2
&是位运算中的符号,和熟悉的逻辑运算符&&基本相符
100&110=100
即只有两者为1时才返回1
表示一组物品选或不选的状态可以用一个0至2^n-1的整数表示,化成二进制后只要是1就代表着选这个物品。
【参考程序】

#include<iostream>
#include<cstdio>
using namespace std;
int n,record;
double x,ansv,answ,w[21],v[21],maxans;
int main()
{
freopen("transp.in","r",stdin);
freopen("transp.out","w",stdout);
cin>>x>>n;
for (int i=1;i<=n;i++) cin>>w[i]>>v[i];
int num=1<<n;//计算枚举的范围
for (int i=0;i<num;i++)//从全不选到全选,依次枚举
{
int tmp=1;
ansv=answ=0;
for (int j=0;j<n;j++)
{
if (((tmp<<j)&i)>0) //判断当前物品是否被选
{
ansv+=v[j+1];
answ+=w[j+1];
//装车
}
if (answ>x) break;//超载,此情况不可选
}
if (answ>x) continue;
if (ansv>maxans)
{
maxans=ansv;//记录答案
record=i;
}
}
cout<<int(maxans)<<endl;
int tmp=1;
for (int j=0;j<n;j++)
{
if (((tmp<<j)&record)>0) cout<<j+1<<" ";//判断当前物品是否被选
}
return 0;
}

【2018寒假集训 Day1】【位运算】桐桐的运输方案的更多相关文章

  1. 【2018寒假集训 Day1】【位运算】翻转游戏

    翻转游戏(flip) [问题描述] 翻转游戏是在一个 4 格×4 格的长方形上进行的,在长方形的 16 个格上每 个格子都放着一个双面的物件.每个物件的两个面,一面是白色,另一面是黑色, 每个物件要么 ...

  2. 牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并)

    牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \ ...

  3. 【2018寒假集训Day 1】【位运算】生成字符串

    生成字符串(strs) [问题描述] 假设字符串只由字符“0”,“1”,“”组成,其中字符“”表示该字符可由 字符“0”或“1”替代. 现有一些字符串,根据这些字符串生成所有可生成的字符串.如: {1 ...

  4. 【2018寒假集训 Day2】【2019.5.11更新】【动态规划】花店橱窗布置(FLOWER)

    花店橱窗布置(FLOWER) 提交文件名:flower 问题描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号, ...

  5. 【2018寒假集训 Day2】【动态规划】维修栅栏

    维修栅栏 问题描述: 小z最近当上了农场主!不过,还没有来得及庆祝,一件棘手的问题就摆在了小z的面前.农场的栅栏,由于年久失修,出现了多处破损.栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损 ...

  6. 【2018寒假集训 Day2】【动态规划】钱币兑换(exchange)(自己翻译的2333)

    钱币兑换(exchange) 问题描述: Dave偶然获得了未来几天的美元(dollars)与马克(marks)之间的兑换率.例如Dave开始有100marks,请编写个程序帮助Dave找出最好的买卖 ...

  7. 【集训Day4 动态规划】【2018寒假集训 Day4 更新】蛙人

    蛙人 (ple) 蛙人使用特殊设备潜水.设备中有一个气瓶,分两格:一格装氧气,另一格装氮气.留在水中有时间的限制,在深水中需要大量的氧气与氮气.为完成任务,蛙人必须安排好气瓶.每个气瓶可以用它的重量和 ...

  8. 清北学堂寒假集训DAY1

    第一天,上午讲了些基本的技巧和简单算法,主要就是适应这里. 中午跑到食堂吃了顿“饭”(我并没有挖苦233333),然后回宿舍休息休息 因为 迎接我们的是模拟啊啊啊啊啊阿 下午题一发下来,并没有想象中的 ...

  9. 洛谷2018寒假集训tg第二次比赛第二题Princess Principal题解

    这算不算泄题啊...被kkk发现会咕咕咕吧. 题目大意:给定一个数列a,与常数n,m,k然后有m个询问,每个询问给定l,r.问在a[l]到a[r]中最少分成几段,使每段的和不超过k,如果无解,输出Ch ...

随机推荐

  1. python中的列表list练习

    列表: 1.增 1.1 append,在列表的末尾追加元素,使用方法:list.append('元素') li = ['alex', 'wusir', 'eric', 'rain', 'alex'] ...

  2. Android自定义控件:自适应大小的文本控件

    需求 自适应大小的文本: 效果图: 项目开发中,开发人员根据UI人员提供的一套尺寸,布局了一些带文本的页面, 往往会少考虑一些数据极限的问题,造成机型屏幕适配问题. 例如: 文本(或数值)长度可变,如 ...

  3. ProvisionedAppxPackage VS AppxPackage

    正文 先来说说问题的由来. 在 Preinstall 的 component 中,有一支 component 叫做 MS_StartApp,这个 component 的行为是在预安装时为目标机器装入一 ...

  4. 跳跳棋——二分+建模LCA

    题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动 ...

  5. 11、pytest -- 测试的参数化

    目录 1. @pytest.mark.parametrize标记 1.1. empty_parameter_set_mark选项 1.2. 多个标记组合 1.3. 标记测试模块 2. pytest_g ...

  6. CSP-S 94 (sb lsc gc赛)

    不要问我为什么题解倒着写,因为在填坑! 关于这场比赛就是我sb的再现 考完试旁边_LH叱的一声说道:“lsc真**垃圾”; lsc:........确实很垃圾! ------------------- ...

  7. Spring-Mybatis-SpringMVC三大框架整合

    我们直接切人正题,不多逼逼赖赖 第一步:依赖,一下的这些基本上是SSM整合的全部依赖 <!-- https://mvnrepository.com/artifact/org.springfram ...

  8. php [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers)错误解决方法

    php [poolwww] seemsbusy (youmayneedto increasepm.start_servers, or pm.min/max_spare_servers)错误解决方法修改 ...

  9. .NET单例模式快速学习应用

    单例模式属于设计模式中最简单的一个模式,在实际应用中也非常广泛,但可能是受到各类教程的影响,看到很多实现方式仍然沿用Java的那一套,其实在.NET中可以用更简洁的实现方式. 一.知识点介绍 核心目标 ...

  10. 提交代码到github托管

    廖雪峰官网:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,感觉初学很棒的一个地 ...