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

蓝桥杯备考:贪心算法之矩阵消除游戏

这道题是牛客上的一道题,它呢和我们之前的排座位游戏非常之相似,但是,排座位问题选择行和列是不会改变元素的值的,这道题呢每每选一行都会把这行或者这列清零,所以我们的策略就是先用二进制把选择所有行的情况全部枚举出来,接着再选择列,找出和最大的情况即可

怎么用二进制列举情况,比如一共有3行,我们的选择是 000 001 010 011 100 110 111,也就是说到1000结束,也就是把1左移动3就行了

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 20;
int a[N][N];
int n, m, k;
int col[N];
int calc(int x)
{
    int cnt = 0;
    while (x)
    {
        x = x & (x-1);
        cnt++;
    }
    return cnt;
    
}
bool cmp1(int x1, int x2)
{
    return x1 > x2;
}
int main()
{
    cin >> n >> m >> k;

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cin >> a[i][j];
        }
    }

    int ret = 0;
    for (int i = 0; i < (1<<n); i++)
    {
        int c = calc(i);
        if(c > k) continue;
        int sum = 0;
        int tmp = i;
        memset(col, 0, sizeof(col));
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                if ((tmp >> i) & 1) sum += a[i][j];
                else
                    col[j] += a[i][j];
            }
        }
        sort(col, col + m, cmp1);
        int tmp2 = calc(tmp);
        for (int i = 0; i < k-tmp2; i++)
        {
            sum += col[i];
        }
      ret = max(ret, sum);
    }
    cout << ret << endl;


    return 0;
}

相关文章:

  • 工程实践中常见的几种设计模式解析及 C++ 实现
  • AI工具集合
  • redis检测大key
  • 谈谈 ES 6.8 到 7.10 的功能变迁(2)- 字段类型篇
  • QSNCTF-WEB做题记录(2)
  • [021-22].Redis的线程模型原理分析
  • Dockerfile 中的 COPY 语句:作用与使用详解
  • 在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
  • 基于javaweb的SSM+Maven疫情物业系统设计和实现(源码+文档+部署讲解)
  • 【Java 基础】-- Java 接口中的 @Public 和 @FunctionalInterface 注解详解
  • 以下是自定义针对 Vite + TypeScript 项目的完整路径别名配置流程:
  • 父组件用的是原生监听,子组件用的是onClick,子组件添加了stopPropagation还是没有阻止传播
  • 安宝特科技 | Vuzix Z100智能眼镜+AugmentOS:重新定义AI可穿戴设备的未来——从操作系统到硬件生态,如何掀起无感智能革命?
  • ai-2、机器学习之线性回归
  • [RH342]tcpdump
  • 2025届开发岗秋招经验教训总结
  • 毕业项目推荐:基于yolov8/yolo11的苹果叶片病害检测识别系统(python+卷积神经网络)
  • Metal 学习笔记四:顶点函数
  • IP离线库助力破解网络反诈难题
  • Oracle:什么是存储过程
  • 复旦兼职教授高纪凡首秀,勉励学子“看三十年才能看见使命”
  • 石家庄桥西区通报“中药液”添加安眠药问题:对医院立案调查
  • 广东信宜一座在建桥梁暴雨中垮塌,镇政府:未造成人员伤亡
  • 《缶翁的世界》首发:看吴昌硕王一亭等湖州籍书画家的影响
  • 英国知名歌手批政府:让AI公司免费使用艺术家作品是盗窃
  • 私家车跑“顺风”出事故,意外险赔不赔?