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

上一篇的优化思路

include<bits/stdc++.h>

using namespace std;

int main()
{
int n,m,k;
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n>>m>>k;

// 存储原始地图
vector<vector<long long>> v(n,vector<long long>(m));
// 预处理:每行的最大值 + 对应列索引
vector<pair<long long, int>> row_max(n, {LLONG_MIN, -1});
// 预处理:每列的最大值 + 对应行索引
vector<pair<long long, int>> col_max(m, {LLONG_MIN, -1});for(int i=0;i<n;i++)
{for(int j=0;j<m;j++){cin>>v[i][j];// 更新该行最大值if(v[i][j] > row_max[i].first){row_max[i] = {v[i][j], j};}// 更新该列最大值if(v[i][j] > col_max[j].first){col_max[j] = {v[i][j], i};}}
}vector<bool> hang_destoryed(n,false);
vector<bool> lie_destoryed(m,false);
long long xpmclzjkln = 0;
int bomb_count = 0;// 轰炸循环:仅遍历未被炸的行,找全局最大值
while(bomb_count < k)
{long long cur_max_val = LLONG_MIN;int max_hang = -1, max_lie = -1;// 遍历所有未被炸的行,找该行最大值(仅O(n)时间)for(int i=0;i<n;i++){if(hang_destoryed[i]) continue;// 该行最大值的列已被炸 → 重新找该行剩余最大值(仅本次需要)if(lie_destoryed[row_max[i].second]){long long tmp_max = LLONG_MIN;int tmp_col = -1;for(int j=0;j<m;j++){if(lie_destoryed[j]) continue;if(v[i][j] > tmp_max){tmp_max = v[i][j];tmp_col = j;}}row_max[i] = {tmp_max, tmp_col}; // 更新该行最大值}// 对比找到全局最大值if(row_max[i].first > cur_max_val){cur_max_val = row_max[i].first;max_hang = i;max_lie = row_max[i].second;}}if(max_hang == -1) break; // 无剩余建筑xpmclzjkln = cur_max_val;hang_destoryed[max_hang] = true;lie_destoryed[max_lie] = true;bomb_count++;
}// 输出逻辑(同之前修复版)
bool first_row = true;
for(int i=0;i<n;i++)
{if(hang_destoryed[i]) continue;if(!first_row) cout << endl;first_row = false;bool first_col = true;for(int j=0;j<m;j++){if(lie_destoryed[j]) continue;if(!first_col) cout << " ";first_col = false;cout<<v[i][j];}
}
return 0;

}

以上是优化后的代码,原方法找最大值时需要遍历整个数组,这就导致时间复杂度很大,优化的方法则是直接将每行和列的最大值以键值对的方式直接储存,这样就可以将原来的O(m*n)的时间复杂度转化成O(1),大大提高效率

http://www.jsqmd.com/news/465429/

相关文章:

  • Hugging Face 亚太生态负责人王铁震:OpenClaw、开源生态与个人主权
  • 我被降薪 10%,主管让我别着急,降薪总比被裁员好。结果 2 个月后,主管被降薪 25%,他不接受,说自己每个月房贷要 5000 多
  • 重庆短视频运营公司哪家更靠谱?2026年Q1实测榜单和避坑建议都给你讲透了 - 精选优质企业推荐榜
  • Tesla-Menu:Nintendo Switch叠加菜单系统的技术解析与实践指南
  • mathtype无法安装,这个什么原因?——关闭了wps也无法安装,这是为何?
  • Sentaurus网格划分实战解析:从基础参数到材料界面优化
  • ChatTTS女性声音合成实战:从模型选型到生产环境部署
  • 4步让Windows 11性能提升70%:Win11Debloat全方位系统优化指南
  • 3步掌握猫抓cat-catch:实用媒体资源嗅探工具终极指南
  • DW1000超宽带驱动开发实战:从低功耗配置到精准测距实现
  • AI搜索推广2026年TOP5排行榜:性价比避坑全指南,实测口碑深度调研评测 - 精选优质企业推荐榜
  • 数据分析实战指南 零代码专题
  • SpringBoot+Vue 果蔬作物疾病防治系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 跨平台虚拟化解决方案:在Windows Hyper-V环境中构建高效macOS虚拟机
  • 如何优雅处理HTTP 429状态码:前端递归请求的节流策略
  • 【读论文】小模型Agent调用工具能力如何增强--微软研究院的ATLAS架构
  • 【ICO制作指南】利用icofx3高效生成专业级ICO图标
  • Vue 3 Composition API 路由控制:useRouter 与 useRoute 实战指南
  • 基于NyaDeskPet的二次开发 软件开发与创新日志#1
  • ESP32S3实现摄像头实时监控:从GC0308到ST7789 LCD屏的完整指南
  • Synplify与DesignWare跨平台联调的实战避坑指南
  • 2026年口碑好的武汉钻井工厂推荐:武汉钻井公司选择指南 - 品牌宣传支持者
  • 突破职场定位困境:XposedRimetHelper全方位技术指南
  • 2025年实测|GEO优化品牌推广服务TOP3深度横评,踩坑3个月后的真心话 - 精选优质企业推荐榜
  • 3步完成ExoPlayer到Media3迁移:从兼容评估到生产验证
  • 黑苹果配置全攻略:从硬件兼容性到EFI生成的自动化解决方案
  • MobaXterm 会话上限导致新建Session无法保存的排查与解决
  • 重庆豆包AI广告GEO优化公司2026实测排行榜TOP5,避坑选择指南 - 精选优质企业推荐榜
  • SpringBoot Web项目实战:从零构建到生产部署全流程解析
  • IFEval评测集:如何通过可验证指令提升LLM的指令跟随能力