题意:

给出我们n种物品,每种物品都有五个值,分别是a、b、c、d、e,我们要在这n个物品中选出k个,使得这k个物品中的max{a}+max{b}+max{c}+max{d}+max{e}最大,输出最大值。

思路:

n的范围有10000,而每个人只有五个值,我们不能从n入手,可以从这五个值入手。

五个值,我们可以用二进制进行压缩,对于一个物品,我们用00000~11111来表示所有情况,如果某一位是1代表我们最后要取走这个物品的那个值,如10000代表我们取走a,

我们把所有物品的这32个值(00000~11111)预处理出来,然后跑dfs就可以了。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<stack>
#include<cmath>
#include<cstdlib>
#include<climits>
#include<sstream>using namespace std;int n,k;
int num[1050][10];
int state_max[50];int dfs(int state,int num)
{if(num==0)return 0;int ans=0;for(int i=state;i>0;i=(i-1)&state){
//      printf("s0=%d\n",i);int tmp=dfs((i^state),num-1)+state_max[i];ans=max(ans,tmp);}return ans;
}int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&k);for(int i=0;i<n;i++)for(int j=0;j<5;j++)scanf("%d",&num[i][j]);memset(state_max,0,sizeof state_max);for(int i=0;i<n;i++)for(int j=0;j<=31;j++){int tmp=0;for(int k=0;k<5;k++){if((1<<k)&j)tmp+=num[i][k];}state_max[j]=max(state_max[j],tmp);}int ans=dfs(31,k);printf("%d\n",ans);}return 0;
}

uva1507(状态压缩+dfs)相关推荐

  1. 状态压缩+dfs+背包

    状态压缩dp 状态压缩dp就是用二进制数字来表示状态,通过遍历所有状态确定答案,时间复杂度为o(nn2^n),通常只能用来解数据范围小于等于21的. P1433 吃奶酪 #include <bi ...

  2. OpenJudge - 海贼王之伟大航路(状态压缩+DFS)

    题目链接:http://bailian.openjudge.cn/practice/4124?lang=en_US 总时间限制: 1000ms 内存限制: 65536kB 描述 "我是要成为 ...

  3. POJ2688状态压缩(可以+DFS剪枝)

    题意:       给你一个n*m的格子,然后给你一个起点,让你遍历所有的垃圾,就是终点不唯一,问你最小路径是多少? 思路:       水题,方法比较多,最省事的就是直接就一个BFS状态压缩暴搜就行 ...

  4. 《算法竞赛进阶指南》打卡-基本算法-AcWing 94. 递归实现排列型枚举:dfs、二进制状态压缩

    文章目录 题目解答 题目来源 题目解答 分析: dfs求全排列,这里是用二进制状态压缩进行优化,二进制状态压缩,顾名思义,每个状态是用二进制的某一位表示.这里的体现是state这个状态,它的每一位代表 ...

  5. 《算法竞赛进阶指南》打卡-基本算法-AcWing 93. 递归实现组合型枚举:递归与递推、dfs、状态压缩

    文章目录 题目解答 题目链接 题目解答 分析: 此题和笔者另一篇博文很像,只不过是限定了个数.<算法竞赛进阶指南>打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归.二进 ...

  6. 《算法竞赛进阶指南》打卡-基本算法-AcWing 92. 递归实现指数型枚举:递推与递归、二进制状态压缩、dfs

    文章目录 题目解答 题目链接 题目解答 分析: 优化:用二进制状态压缩,也就是用二进制上的位来记录数有没有被用过. ac代码 #include<bits/stdc++.h> using n ...

  7. hdu 3681(bfs+dfs+状态压缩)

    解题思路:这道题属于图上来回走的问题,可以把重复走的过程弱化,即只强调从u->v的结果,中间经过的节点都不考虑.这道题里面'G','F','Y'是重要的节点,其余的点我们是可以忽略的,也就是说, ...

  8. CodeForces - 620E New Year Tree(线段树+dfs序+状态压缩)

    题目链接:点击查看 题目大意:给出一棵无向树,每个节点都有一种颜色,接下来时m次操作: 1 x y:将x及其子树染成y的颜色 2 x:查询x及其子树上共有多少种不同的颜色 题目分析:看完这个题的第一反 ...

  9. uva10160(dfs+状态压缩)

    题意:给出n个点,以及m条边,这些边代表着这些点相连,修一个电力站,若在某一点修一个站,那么与这个点相连的点都可以通电,问所有的点都通电的话至少要修多少个电力站........ 思路:最多给出的是35 ...

最新文章

  1. 德勤2018TMT八大预测:移动互联网迎来二次革命
  2. 微型计算机2013年10月下,微型计算机及接口技术2013年10月真题试题(04732)
  3. 常用的webpack 配置
  4. 【python图像处理】彩色映射
  5. oracle ORA-00911 问题 解决
  6. Java+Selenium Web UI自动化测试的一些总结
  7. DROP TABLE、TRUNCATE TABLE和DELETE的区别
  8. nginx主模块指令
  9. eclipse环境lsp4e --- org.eclipse.lsp4e
  10. centos7安装telnet后/etc/xinetd.d/telnet下没有telnet
  11. Python list合并(列表合并),dict合并(字典合并)
  12. glusterfs java_GlusterFS分布式文件系统使用简介
  13. Android 获得view的宽和高
  14. python-《Python发展前景》
  15. PR开场片头视频模板 多帧城市闪点社交媒体短视频pr模板
  16. 百度文库复制文字(一个按钮,关闭JS功能即可,浏览器100%有效)2021年
  17. 软件需求分析——非功能性需求
  18. 自定义view之无限滚动的刻度尺
  19. pycharm IDEA专业版2016.3.2版本和 python3.5.0 win7 64位安装包 百度云资源共享 及安装和编辑器注册图录
  20. endnote没有加载项_word中手动添加endnote的加载项

热门文章

  1. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170411
  2. 七、“待到秋风起,桃李遍九州”
  3. 3Dslicer2:数据与帮助
  4. Linux常用命令全名
  5. 上传文件时路径总是C:\fakepath\的问题
  6. SQL匹配多字段进行排序,搜索
  7. python基础——注释、字符串、输出换行
  8. 操作系统(十三)处理机调度的概念、层次
  9. 记录一次socket编程:String的trim函数
  10. 你不知道的gRPC反向代理