2020牛客暑期多校训练营(第二场)Fake Maxpooling
传送门:Fake Maxpooling
题意:给出矩阵的行数n和列数m,矩阵 Aij = lcm( i , j ) ,求每个大小为k*k的子矩阵的最大值的和。
题解:如果暴力求解肯定会t,所以要智取。前几天刷蓝书的时候看到这种求区间最值的可以用单调队列,这个题就是用单调队列求解。先横着算一下每个长度为k的区间的最大值记录下来,然后再把记录下来的数组竖着同样算一下,最后求和。求最小公倍数的时候,不能用__gcd(),会 t 的。这个题的矩阵不会超long long ,所以用 int 就好了,不然会超内存。(血泪史
至于单调队列是什么,可以看看这个,在acwing写题的时候看到的。https://www.acwing.com/blog/content/150/
代码:
1 #include<bits/stdc++.h>
2 #define ll long long
3 using namespace std;
4 int a[5100][5100],b[5100][5100];
5 deque<int>q;
6 inline int gcd(int a,int b){
7 return b==0?a:gcd(b,a%b);
8 }
9 int main()
10 {
11 ios::sync_with_stdio(false);
12 cin.tie(0);
13 cout.tie(0);
14 int n,m,k;
15 cin>>n>>m>>k;
16 for(int i=1;i<=n;i++){
17 for(int j=1;j<=m;j++){
18 a[i][j]=i*j/gcd(i,j);
19 }
20 }
21 for(int i=1;i<=n;i++){
22 while(!q.empty()) q.pop_back();
23 q.push_back(0);
24 for(int j=1;j<k;j++){
25 while(q.size()&&a[i][q.back()]<=a[i][j]) q.pop_back();
26 q.push_back(j);
27 }
28 for(int j=k;j<=m;j++){
29 while(q.size()&&q.front()<=j-k) q.pop_front(); //因为下边是先插入j再记录,所以一定要是<= 不然会多一个数,wa死了
30 while(q.size()&&a[i][q.back()]<=a[i][j]) q.pop_back();
31 q.push_back(j);
32 b[i][j]=max(b[i][j],a[i][q.front()]);
33 }
34 }
35 ll ans=0;
36 for(int j=k;j<=m;j++){
37 while(!q.empty()) q.pop_back();
38 q.push_back(0);
39 for(int i=1;i<k;i++){
40 while(q.size()&&b[q.back()][j]<=b[i][j]) q.pop_back();
41 q.push_back(i);
42 }
43 for(int i=k;i<=n;i++){
44 while(q.size()&&q.front()<=i-k) q.pop_front();
45 while(q.size()&&b[q.back()][j]<=b[i][j]) q.pop_back();
46 q.push_back(i);
47 ans+=b[q.front()][j];
48 }
49 }
50 cout<<ans<<endl;
51 return 0;
52 }
2020牛客暑期多校训练营(第二场)Fake Maxpooling的更多相关文章
- 2020牛客暑期多校训练营 第二场 K Keyboard Free 积分 期望 数学
LINK:Keyboard Free 我要是会正经的做法 就有鬼了. 我的数学水平没那么高. 三个同心圆 三个动点 求围成三角形面积的期望. 不会告辞. 其实可以\(n^2\)枚举角度然后算出面积 近 ...
- 2020牛客暑期多校训练营 第二场 J Just Shuffle 置换 群论
LINK:Just Shuffle 比较怂群论 因为没怎么学过 置换也是刚理解. 这道题是 已知一个置换\(A\)求一个置换P 两个置换的关键为\(P^k=A\) 且k是一个大质数. 做法是李指导教我 ...
- 2020牛客暑期多校训练营 第二场 I Interval 最大流 最小割 平面图对偶图转最短路
LINK:Interval 赛时连题目都没看. 观察n的范围不大不小 而且建图明显 考虑跑最大流最小割. 图有点稠密dinic不太行. 一个常见的trick就是对偶图转最短路. 建图有点复杂 不过建完 ...
- 2020牛客暑期多校训练营 第二场 C Cover the Tree 构造 贪心
LINK:Cover the Tree 最受挫的是这道题,以为很简单 当时什么都想不清楚. 先胡了一个树的直径乱搞的贪心 一直过不去.后来意识到这类似于最经典长链剖分优化贪心的做法 然后那个是求最大值 ...
- 2020牛客暑期多校训练营 第二场 B Boundary 计算几何 圆 已知三点求圆心
LINK:Boundary 计算几何确实是弱项 因为好多东西都不太会求 没有到很精通的地步. 做法很多,先说官方题解 其实就是枚举一个点 P 然后可以发现 再枚举一个点 然后再判断有多少个点在圆上显然 ...
- 2020牛客暑期多校训练营 第二场 A All with Pairs 字符串hash KMP
LINK:All with Pairs 那天下午打这个东西的时候状态极差 推这个东西都推了1个多小时 (比赛是中午考试的我很困 没睡觉直接开肝果然不爽 一开始看错匹配的位置了 以为是\(1-l\)和\ ...
- 2019牛客暑期多校训练营(第二场) H-Second Large Rectangle(单调栈)
题意:给出由01组成的矩阵,求求全是1的次大子矩阵. 思路: 单调栈 全是1的最大子矩阵的变形,不能直接把所有的面积存起来然后排序取第二大的,因为次大子矩阵可能在最大子矩阵里面,比如: 1 0 0 1 ...
- 2020牛客暑假多校训练营 第二场 H Happy Triangle set 线段树 分类讨论
LINK:Happy Triangle 这道题很容易. 容易想到 a+b<x a<x<b x<a<b 其中等于的情况在第一个和第三个之中判一下即可. 前面两个容易想到se ...
- 2020牛客暑假多校训练营 第二场 G Greater and Greater bitset
LINK:Greater and Greater 确实没能想到做法. 考虑利用bitset解决问题. 做法是:逐位判断每一位是否合法 第一位 就是 bitset上所有大于\(b_1\)的位置 置为1. ...
- 2020牛客暑假多校训练营 第二场 E Exclusive OR FWT
LINK:Exclusive OR 没做出 原因前面几篇说过了. 根据线性基的知识容易推出 不超过\(w=log Mx\)个数字即可拼出最大值 其中Mx为值域. 那么考虑w+2个数字显然也为最大值.. ...
随机推荐
- 攻防世界_MISC进阶区_Get-the-key.txt(详细)
攻防世界MISC进阶之Get-the-key.txt 啥话也不说,咱们直接看题吧! 首先下载附件看到一个压缩包: 我们直接解压,看到一个文件,也没有后缀名,先用 file 看一下文件属性: 发现是是L ...
- Laya 踩坑日记-BitmapFont 不显示空格
项目中有用到艺术字,美术通过 bmfont64 将字体导给我了,结果发现在应用上 空格不显示 如图: 今天去深究了一下这个问题,发现是底层没封装好,然后自己改了一下下面是改过的 BitmapFont ...
- Python模块化编程与装饰器
Python的模块化编程 我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不同的顺序来打印一个字符串: # r ...
- SWPU2019
一.题目打开介绍 这是题目本身打开的样子,继续进入题目 二.做题 简单的登陆界面和注册界面,没有sql注入已经尝试 申请发布广告 习惯性的测试 然后开始尝试注入,抓包, 两个都要,经过union注入判 ...
- Java-Servlet知识总结
目录 Servlet概述 为什么要学习Servlet 什么是 Servlet 工作流程 生命周期 处理请求的方法 HttpServletRequest 和 HttpServletResponse Ht ...
- websocket的应用---Django
websocket的应用---Django 1.长轮询 轮询:在前端通过写js实现.缺点:有延迟.服务器压力大. 就是客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,来保持客户端和服务器端的 ...
- scrapy框架基于管道的持久化存储
scrapy框架的使用 基于管道的持久化存储的编码流程 在爬虫文件中数据解析 将解析到的数据封装到一个叫做Item类型的对象 将item类型的对象提交给管道 管道负责调用process_item的方法 ...
- Python hashlib的简单使用
hashlib模块针对不同的安全哈希和消息摘要算法实现了一个通用的接口,其中包括SHA1, SHA224, SHA256, SHA384, SHA512算法以及RSA的MD5算法. 使用方法 第一步 ...
- JavaScript中函数的this指向!
JavaScript的this的指向问题! 这是我自己敲的, 报错! <button>点击查看绑定事件的this指向!</button> <script> // 函 ...
- vue的nuxt框架中使用vue-video-player
一.基本需求:使用nuxt框架,需要在移动端网页中播放视频. 二.文中解决的基本问题: 1.vue-video-player在nuxt中怎么使用. 2.由于为了适配移动端,使用了 ...