当前位置: 首页 > news >正文

牛客:矩阵消除游戏

思路:由于规模在15左右,所以我们可以选择枚举(二进制枚举法(1<<n)-1).
先选行再选列,例如:如果k=5,表示我们可以选择行列一共5次,我们可以枚举0到5行的所有选择方案,假如我们选择了3行,那么我们就把在剩下的列里面选择两个最大的,每选完5次就和之前的做比较,最后取最大的一次即可。

代码核心思路

  1. 二进制枚举所有可能的选行方案:用二进制数表示选中的行(例如 101 表示选中第 1 行和第 3 行)。

  2. 计算选行后的剩余可选列数:若选了 num 行,则还能选 k - num 列(需保证非负)。

  3. 贪心选择最优列:对未被选中的行,计算每列的元素和,选择最大的 k - num 列,累加其和。

  4. 记录最大值:遍历所有选行方案,保留总和最大的结果。

#include<bits/stdc++.h>
using namespace std; 
int n,m,k;
int num=0;
int arr[16][16]={0};
int lie[16]={0};
long long scale(int st){long long sum=0;for(int i=1;i<=n;i++){if(((st>>(i-1))&1)==1){for(int j=1;j<=m;j++){sum+=arr[i][j];}num++;}else{for(int j=1;j<=m;j++){lie[j]+=arr[i][j];}}}return sum;
}int main(){cin>>n>>m>>k;int sum=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>arr[i][j];sum+=arr[i][j];}}if(k>=n||k>=m){cout<<sum;return 0;}long long ans=0;for(int i=0;i<=(1<<n)-1;i++){memset(lie,0,sizeof(lie));num=0;long long sum1=scale(i);if(num>k||num<0){continue;}else{sort(lie+1,lie+m+1);int x=k-num;for(int i=1,j=m;i<=x;i++,j--){sum1+=lie[j];}ans=max(ans,sum1);}}cout<<ans;    return 0;
}

http://www.dtcms.com/a/512827.html

相关文章:

  • 管理咨询网站建设免费咨询法律服务
  • 哪些网站动效做的不错网站开发中网页之间的链接形式有什么
  • 网站开发中要做哪些东西北京网站建设著名公司
  • 五子棋小游戏
  • 如何让自己的网站被百度收录cms系统干什么的
  • 用wordpress做购物网站网络设计报告书
  • 自然语言处理(NLP)——自然语言处理原理、发展历程、核心技术
  • 人大金仓数据库 导入 命令
  • 栈与队列:从底层原理到实际应用
  • 法人变更在哪个网站做公示wordpress扒主题代码
  • 【Qt】定时器--滚动相册
  • Qt 与 VS Studio 结合使用
  • 咸宁做网站的公司那家便宜闵行网站制作哪里有
  • 高压输电线背景下无人机检测输电线和周围树木以及计算两者之间的距离
  • MySQL锁机制详解
  • 用户网站模板厦门唯一官方网站
  • 介绍化工项目建设和招聘的网站做网站app要注册哪类商标
  • milvus容器restart不成功,但docker仍在running问题排查
  • 女的和男的做那个视频网站广西网站建设公司电话
  • 织梦网站首页模板更换重要新闻头条
  • ABAP 静态代码分析 - 语法分析
  • 【VPX315】基于 3U VPX 总线架构的 JFMQL100TAI + FT-M6678 智能信号处理平台
  • 建个什么网站赚钱大连发布: 大连发布
  • 南京网站建设工作室企业网站推广是不是必要的
  • 网站制作html代码网站开发工作量
  • Sprintf Boot 之 Nacos 配置中心实践(spring.config.import=optional:nacos:)
  • 东莞行业网站建设中国电子商务中心官网
  • 山东住房和城乡建设厅网站登陆怎么打广告宣传自己的产品
  • 网站建设公司营业执照图片免费图片在线制作
  • 参加科学大会(dijkstra(堆优化版))