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

(补题)小塔的饭

题目描述

小塔是一位热爱美食的算法研究员,她正在研究如何为朋友们安排美食派对以获得最大的幸福感。她邀请了N位朋友来品尝M种不同的食物,并记录了每位朋友对每种食物的好感度ai,j 。

现在,小塔想要设计一个美食分配方案,使得总好感度最高,同时保证至少有一种食物被超过一半的朋友品尝过。你能帮助她解决这个问题吗?

给定N个人和M种食物,每个人对每种食物有一个好感度ai,j 。你需要找到一个分配方案,使得:

  • A. 每个人恰好选择一种食物
  • B. 至少有一种食物被超过⌊N/2⌋个人选择
  • C. 所有选择的总好感度最大
输入

输入包含多组测试数据。第一行包含一个整数T,表示测试数据的组数。

对于每组测试数据:

第一行包含两个整数N和M,表示人数和食物种类数
接下来N行,每行包含M个整数ai,1,ai,2,...,ai,M ,表示第i个人对第j种食物的好感度
数据范围:
1≤T≤10
1≤n≤100
1≤m≤1000
1≤ai,j≤109

输出

对于每组测试数据,输出一个整数,表示满足条件的最大总好感度。

样例输入
2
5 3
1 2 3
4 5 6
7 8 9
10 11 12
13 14 15
3 2
200 100
400 300
500 600
样例输出
45
1200

贪心解法(O(nmlogn)):最小损失替换,直接满足约束

  • 枚举 “热门食物”:同样假设最终被超过半数人选择的食物是 x(遍历所有食物)。
  • 计算 “损失”:如果一个人选 x 而非他原本最喜欢的食物,好感度会减少多少(loss[i] = 原最高好感 - a[i][x])。
  • 最小化损失:为了让 x 被至少 ⌊N/2⌋+1 人选择,需要选损失最小的 ⌊N/2⌋+1 个人来 “替换”(选 x),这样总损失最小,总好感度最大。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,n,m;
ll a[109][1009];
int main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);ll total=0,like[109]{0},ans=0;for(int i=0;i<n;++i){for(int j=0;j<m;++j){scanf("%lld",&a[i][j]);like[i]=max(like[i],a[i][j]);}total+=like[i];}ll loss[109]{0};for(int i=0;i<m;++i){for(int j=0;j<n;++j){loss[j]=like[j]-a[j][i];}sort(loss,loss+n);ll bug=0;for(int j=0;j<n/2+1;++j){bug+=loss[j];}ans=max(ans,total-bug);}printf("%lld\n",ans);}return 0;
}

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

相关文章:

  • 算法-CodeTop(三)
  • PyTorch生成式人工智能(21)——归一化流模型(Normalizing Flow Model)
  • 【机器学习11】“分类算法“评估矩阵:从对数损失、AUC和ROC、混淆矩阵与分类报告等角度来评估算法
  • 第十九周-文档数据库MongoDB、消息队列和微服务
  • C++代码题部分(1)
  • 双功能预测模型开发:基于预训练模块与迁移学习的天然肽序列与SAFP修饰信息融合
  • 基于uni-app的血糖血压刻度滑动控件
  • uniApp实战六:Echart图表集成
  • uniapp-vue3来实现一个金额千分位展示效果
  • 《CLIP改进工作串讲》论文精读笔记
  • uniapp使用谷歌地图获取位置
  • uniapp实现微信小程序导航功能
  • 从单机到分布式:Redis如何成为架构升级的胜负手
  • 问题1:uniapp在pages样式穿刺没有问题,在components组件中样式穿刺小程序不起效果
  • Oracle迁移PostgreSQL隐式类型转换配置指南
  • FPGA实现CameraLink视频解码转SRIO与DSP交互,FPGA+DSP多核异构图像处理架构,提供2套工程源码和技术支持
  • Windows Server 2019 查询最近7天远程登录源 IP 地址(含 RDP 和网络登录)
  • 【OD机试题解法笔记】符号运算
  • AWS Blockchain Templates:快速部署企业级区块链网络的终极解决方案
  • Keil-C51 与 Keil -ARM 项目工程兼容的方法
  • leetcode热题——搜索二维矩阵Ⅱ
  • Syzkaller实战教程2:运行环境配置+实例运行
  • 多模通信·数据采集:AORO P9000U三防平板带来定制化解决方案
  • Rust × Elasticsearch官方 `elasticsearch` crate 上手指南
  • Hyperchain 的分级权限体系如何应对潜在的安全威胁和攻击?
  • 龙虎榜——20250730
  • 2018 年 NOI 最后一题题解
  • 学会使用golang zap日志库
  • 【MATLAB】(一)简介
  • 字节跳动“扣子”(Coze)开源:AI智能体生态的技术革命