题意:
牛妹在玩一个名为矩阵消除的游戏,矩阵的大小是n行m列,第i行第j列的单元格的权值为ai,j,a_{i,j},ai,j​,,牛妹可以进行k个回合的游戏,在每个回合,牛妹可以选择一行或者选择一列,然后将这一行或者这一列的所有单元格中的权值变为0,同时牛妹的分数会加上这一行或者这一列中的所有单元格的权值的和。
牛妹想最大化她的得分,球球你帮帮她吧!
题解:
如果这个题想直接暴力对所有行和列进行dfs的话,这样应该是会超时的,试了好几种方法,都T了,很遗憾。
这题无论是dfs或者是二进制枚举,核心都是,枚举行或者枚举列,再去贪心,也就是说,如果你枚举的是行,那么你就去贪心列,如果你枚举的是列,那你就去贪心行。
假设我们枚举的是列,那么我们求所枚举的列时,顺带将去除所枚举的列后,每行的值都存在一个数组里,然后对数组进行排序。如果挑选次数还有剩余,有限挑选大的。
代码:

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include<iostream>
#include<cstdio>
#include <string.h>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<cmath>
#include <math.h>
#include<algorithm>#define int long long
using namespace std;
const int maxn = 110;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;ll a[maxn][maxn];
ll rem[maxn];
signed main()
{int n,m,k;cin>>n>>m>>k;ll ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];ans+=a[i][j];}}if(k>=min(n,m)){cout<<ans<<endl;return 0;}ans=0;for(int t=0;t<(1<<m);t++){int cnt=__builtin_popcountll(t);if(cnt>k) continue;int temp=0;for(int i=1;i<=n;i++){for(int j=0;j<m;j++){if(1<<j & t) temp+=a[i][j+1];else rem[i]+=a[i][j+1];}}sort(rem+1,rem+n+1,greater<int>());for(int i=1;i<=k-cnt;i++){temp+=rem[i];}ans=max(ans,temp);memset(rem,0,sizeof rem);}cout<<ans<<endl;return 0;
}

矩阵消除游戏--牛客练习赛58相关推荐

  1. 牛客练习赛58 C.矩阵消除游戏

    牛客练习赛58 C.矩阵消除游戏 题目链接 题目描述 牛妹在玩一个名为矩阵消除的游戏,矩阵的大小是n行m列,第i行第j列的单元格的权值为ai,ja_{i,j}ai,j​ ,牛妹可以进行k个回合的游戏, ...

  2. 牛客练习赛 58——树链剖分

    A - 牛能和宝石 签到题 #define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0) #pragma GCC optimize(2) # ...

  3. 牛客练习赛75 D 减数游戏(队列优化(需要取模的)堆)

    牛客练习赛75 D 减数游戏 思路:写一下式子可以发每次选择最小的两个数进行操作,最后得到的答案会是最大的,那我们可以将它放进一个最小堆中来维护,但是里面的数是需要取模的,当它取模的时候,将会变小.那 ...

  4. [NC200190]矩阵消除游戏

    题目: [NC200190]矩阵消除游戏 ,哈哈,我们今天来看一道稍微复杂一点的贪心题嘛,这是选自牛客上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显示不对,我就把题目链接放下 ...

  5. 踩不出足迹(牛客练习赛88 )

    踩不出足迹(牛客练习赛88 ) 题意: 长度为n的数组a,每个数是一个k位二进制 定义一下操作: 令第一次得到的结果为 a1a_1a1​.你需要从第二个数开始,每次可以选择与上一次得到的结果异或或者同 ...

  6. 牛客练习赛#105(A-D)

    牛客练习赛#105 文章目录 牛客练习赛#105 A.切蛋糕的贝贝 B.抱歉,这没有集美 C.打牌的贝贝 D.点分治分点 A.切蛋糕的贝贝 题意 有一个正n边形,想通过下列的切法切成面积比为1:1:4 ...

  7. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  8. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  9. 牛客练习赛34 E little w and Digital Root(数位dp)

    title: 牛客练习赛34 E little w and Digital Root(数位dp) date: 2018-12-17 22:38:37 tags: 数位dp categories:ACM ...

最新文章

  1. MySQL------Navicat安装与激活
  2. Xamarin Essentials应用教程文件系统FileSystem
  3. 网络编程学习笔记(TCP套接口选项)
  4. myeclipse安装svn插件
  5. Spring框架中IoC(控制反转)的原理
  6. python从入门到实践课后题第三章_《python从入门到实践》--第三章基本数据类型之列表 课后练习...
  7. 计算机处理信息的过程按先后顺序可表述为,信息加工理论按照信息处理的先后顺序将记忆区分为三个阶段系统;感觉记忆、()长时记忆。...
  8. VS2013 启用 angularjs 智能提示 Intelligence
  9. [Spark]Spark常用的优化方法
  10. 使用Spring Session实现Spring Boot水平扩展
  11. 电商购物网站 - 需求与设计
  12. 使用windows system backup 裸机恢复域控-windows2008
  13. 淘宝用户行为分析——用户画像
  14. 宽带多拨-路由器设置
  15. java网络编程--网络的要素--ip地址
  16. Teambition X 2019 校招
  17. 全局修改样式(全局颜色更改)
  18. 超长浮点数据到科学计数法的转换
  19. java下拉框怎么做_java下拉框怎么做?
  20. 使用excel打开文件,修正长度过长的数字后几位变为0的问题

热门文章

  1. Numpy的基本操作
  2. MySQL数据库将查询结果插入到其它表中
  3. ospf路由协议中,DR和BDR是什么意思?
  4. linux硬链接与软链接
  5. ACMNO.40 C语言-子串 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串
  6. OpenCV卡尔曼滤波介绍与代码演示
  7. 2020薪资排名第一的专业公布,除了计算机还有这些!
  8. 巨杉数据库通过“Mpp数据库基础能力认证”,权威技术认证金融级数据库
  9. CentOS下编译安装python包管理安装工具pip教程
  10. Net设计模式之抽象工厂模式(Abstract Factory Pattern)(1)