题意

给定一个整数 \(T\),代表共有\(T\)组测试用例,对于每组测试用例:

给定四个整数 \(n,m,k和w(1 \leq n,m \leq 2 * 10^5, 1 \leq w \leq n * m \leq 2 * 10^5, 1 \leq k \leq min(n, m))\),随后输入 \(w\) 个整数 \(a_i\) 代表大猩猩的高度。

你需要从 \(n * m\) 的网格中,选出所有 \(k * k\) 的子网格,并且累计所有的子网格获取到的观赏价值。一个 \(k * k\) 的子网格获取到的观赏价值定义为:该网格内全部大猩猩的高度之和。

你要做的是将 \(w\) 只大猩猩按某个方式放入 \(n * m\) 的网格中,并且每个格子至多只能放置一只大猩猩,然后获取最大的观赏价值。

题解

\(\because\) 每个各自至多只能放置一只大猩猩

\(\therefore\) 将高度较高的大猩猩优先放置在所有子网格中出现频率最高的格子,可以获取到最大的观赏价值

对于格子 \((i, j)\),在所有的子网格中出现的频率为:$$freq = (min(k, (ll)n - i) + min(0LL, i + 1 - k)) * (min(k, (ll)m - j) + min(0LL, j + 1 - k))$$

那么,总体的代码思路就是对所有各自的频率排序,并对猩猩高度排序,从大到小依次配对即可。

参考代码

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);
using namespace std; typedef long long ll;
constexpr int N = 2e5 + 7;
int T = 1, n, m, w;
ll k, ans;
int a1[N];
ll a2[N]; void solve() {
ans = 0;
cin >> n >> m >> k >> w;
for (int i = 0; i < w; ++ i) cin >> a1[i];
sort(a1, a1 + w, [](int &a, int &b) {
return a > b;
});
for (int i = 0; i < n; ++ i) {
for (int j = 0; j < m; ++ j) {
a2[i * m + j] = (min(k, (ll)n - i) + min(0LL, i + 1 - k)) * (min(k, (ll)m - j) + min(0LL, j + 1 - k));
}
}
sort(a2, a2 + n * m, [](ll &a, ll &b) {
return a > b;
});
for (int i = 0; i < w; ++ i) {
ans += a1[i] * a2[i];
}
cout << ans << '\n';
} int main() {
IOS
cin >> T;
while (T --) {
solve();
}
return 0;
}

E. Photoshoot for Gorillas的更多相关文章

  1. iOS Developer Libray (中文版)-- Defining Classes 定义类

    该篇是我自己学习iOS开发时阅读文档时随手记下的翻译,有些地方不是很准确,但是意思还是对的,毕竟我英语也不是很好,很多句子无法做到准确的字词翻译,大家可以当做参考,有错误欢迎指出,以后我会尽力翻译的更 ...

  2. English trip V2 - 4. Really Wild Teacher:Maple Key:Adjectives of feeling

    In this lesson you will learn how to recognize animals and describe feeling. 课上内容(Lesson) 词汇(Key Wor ...

  3. gym101350 c h m

    C. Cheap Kangaroo time limit per test 1.0 s memory limit per test 256 MB input standard input output ...

  4. css中attribute selector及pseudo class

    https://developer.mozilla.org/en-US/docs/Web/CSS/Reference#Selectors 在css3规范中,定义了以下几种类型的selector: Ba ...

  5. iOS平台iPhone和iPad免费开放源代码游戏案例列表

    此页面列表收集的是一些iPhone和iPad等iOS操作系统的开放源代码(Open Source)游戏.这些iOS开源游戏都是曾经或正发布在App Store.列表中的这些iOS开源游戏都是使用主流的 ...

  6. 最长回文子串(Mirrored String II)

    Note: this is a harder version of Mirrored string I. The gorillas have recently discovered that the ...

  7. App Store中的开源游戏汇总

    这是国外达人收集的曾经在app store上出现过,或者还在app store上卖的iOS开源游戏的列表,其中代码大部分人你托管在google code或者github上,其中有很多使用Cocos2D ...

  8. App Store上的开源应用汇总

    以下是互联网上主要的开源iOS应用的列表,在学习的时候,多看看完成的功能代码可以给我们带来很多经验,但是除了Apple官方提供的Sample Code之外,我们很难找到优质的开源项目代码,所以我搜集了 ...

  9. jQuery和CSS的拍摄效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Manacher(最长镜面回文串)

    I - O'My! Gym - 101350I Note: this is a harder version of Mirrored string I. The gorillas have recen ...

随机推荐

  1. C# + WPF 音频播放器 界面优雅,体验良好

    前言 本文介绍一款使用 C# 与 WPF 开发的音频播放器,其界面简洁大方,操作体验流畅.该播放器支持多种音频格式(如 MP4.WMA.OGG.FLAC 等),并具备标记.实时歌词显示等功能. 另外, ...

  2. MaterialDesignInXamlToolkit 5.0 发布

    5.0.0 发布 这是一个重大版本更新,又许多破坏性变化 升级到5.0.0版本,请参考:https://www.cnblogs.com/sesametech-dotnet/p/18028565 变化 ...

  3. 3. 无重复字符的最长子串 Golang实现

    题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度. 注意区分子串和子序列. 示例 3: 输入: s = "pwwkew" 输出: 3 解释: 因为无重复 ...

  4. ftrace irqs跟踪器

    当中断被关闭(俗称关中断)了,CPU就不能响应其他的事件,如果这时有一个鼠标中断,要在下一次开中断时才能响应这个鼠标中断,这段延迟称为中断延迟.向current_tracer 文件写入 irqsoff ...

  5. Diffusion系列 - DDIM 公式推导 + 代码 -(三)

    DENOISING DIFFUSION IMPLICIT MODELS (DDIM) 从DDPM中我们知道,其扩散过程(前向过程.或加噪过程)被定义为一个马尔可夫过程,其去噪过程(也有叫逆向过程)也是 ...

  6. 2022年3月中国数据库排行榜:TiDB “三连降”仍霸榜首,“常胜四将军”得分集体下跌

    春暖花开好时光,三月一号迎榜来.2022年3月的 中国数据库流行度排行榜 已在墨天轮社区发布,本月共有 199个 数据库参与排名,相比上月新增四个数据库.排名前十的数据库得分均有所波动,整体排名变动略 ...

  7. apisix~按域名进行请求转发

    路由route 路由(Route)是请求的入口点,它定义了客户端请求与服务之间的匹配规则.路由可以与服务(Service).上游(Upstream)关联,一个服务可对应一组路由,一个路由可以对应一个上 ...

  8. Android复习(三)清单文件中的元素——>uses-sdk

    <uses-sdk> Google Play 会利用在应用清单中声明的 <uses-sdk> 属性,从不符合其平台版本要求的设备上滤除您的应用.在设置这些属性前,请确保您了解  ...

  9. 云原生周刊:Kubernetes 十周年 | 2024.6.11

    开源项目推荐 Kubernetes Goat Kubernetes Goat 是一个故意设计成有漏洞的 Kubernetes 集群环境,旨在通过交互式实践场地来学习并练习 Kubernetes 安全性 ...

  10. web端ant-design-vue-Anchor锚点组件使用小节(1)

    web端ant-design-vue-Anchor锚点组件使用小节.项目开发中如果要实现前端页面平滑滚动到指定的位置,Anchor组件是一个好的选择,灵活且平滑,能满足常见的项目需求.最近开发中幸运的 ...