牛客网 七夕祭题解分析
发布时间
阅读量:
阅读量
原题链接:https://ac.nowcoder.com/acm/contest/1001/C
这道题目思路较为复杂,花费了数个小时的时间,查阅了多篇解析才大致理解(或许仍然存在一些模糊之处),也许是我个人能力不足吧…
思路如下:
第一步 :首先判断每一行(列)是否能够恰好完全分配评分摊位,若可行,则先计算出每一行(列)应配置的摊位数量,并借助前缀和方法统计每一行(列)及其之前摊位达到平均值所需的操作次数(通过前缀和数组进行存储),完成记录后对前缀数组实施排序(由于这一排序过程,《算法指南》将本题归类于排序章节的做法显得有些牵强)
第二步 :此时行(列)可视为环状结构(假设任意两行之间均可交换摊位),但实际上并非环形问题,因此需要将环状结构拆解。从第k处断开相当于每个数组位置均减去temp[k],所需操作次数为(temp[i] - temp[k])(i=1~n)。当k为何值时总操作次数最小?此问题等价于货仓选址问题(题解链接:(temp[i] - temp[k]),即货仓抵达商店的距离,目标是使总距离最小。根据货仓选址的解题策略确定k的取值
第三步 :汇总所有操作次数,并输出结果
(解析可能存在不清晰之处,如有疑问欢迎私信交流)
#include<iostream>
#include<algorithm>
全部评论 (0)
还没有任何评论哟~
