【ST表】【单调队列】Window(jzoj 1326)

Window

jzoj 1326

题目大意

给你一个序列a和一个数k,让你求a中所有长为k的子序列的最大值和最小值

输入样例

8 3
1 3 -1 -3 5 3 6 7

输出样例

-1 -3 -3 -3 3 3
3 3 5 5 6 7

数据范围
2020%: n\leqslant 500; 50%: n\leqslant 100000;20
100100%: n\leqslant 1000000;100

解题思路

方法一:
滚动ST表(不多做解释)

代码1:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long 
using namespace std;
int n, k, m, r, f[2][1000010], mf[2][1000010];
int main()
{memset(mf, 127/3, sizeof(mf));memset(f, -127/3, sizeof(f));scanf("%d %d", &n, &k);for (int i = 1; i <= n; ++i){scanf("%d", &f[0][i]);mf[0][i] = f[0][i];}m = log2(k);for (int j = 1; j <= m; ++j){memset(mf[j&1], 127/3, sizeof(mf[j&1]));//滚动memset(f[j&1], -127/3, sizeof(f[j&1]));for (int i = 1; i <= n - (1<<j) + 1; ++i){f[j&1][i] = max(f[(j + 1)&1][i], f[(j + 1)&1][i + (1<<(j - 1))]);//st表mf[j&1][i] = min(mf[(j + 1)&1][i], mf[(j + 1)&1][i + (1<<(j - 1))]);} }for (int i = 1; i <= n - k + 1; ++i){r = i + k - 1;printf("%d ", min(mf[m&1][i], mf[m&1][r - (1<<m) + 1]));//求解}putchar(10);for (int i = 1; i <= n - k + 1; ++i){r = i + k - 1;printf("%d ", max(f[m&1][i], f[m&1][r - (1<<m) + 1]));}return 0;
} 

方法二:
我们用单调队列来存最大/小值,如果不是更优的就丢掉,如果超过了也丢掉

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
int n, m, tail, head, h[1000100], a[1000100];
int main()
{scanf("%d %d", &n, &m);tail = 0;head = 1;for (int i = 1; i <= n; ++i){scanf("%d", &a[i]);if (head <= tail && h[head] < i - m + 1) head++;//如果过了那就丢掉while(head <= tail && a[h[tail]] > a[i]) tail--;//如果比前面的小,那前面的丢掉h[++tail] = i;//存进去if (i >= m) printf("%d ", a[h[head]]);//这样下来最前面的就是最小的}tail = 0;head = 1;putchar(10);for (int i = 1; i <= n; ++i)//同上{if (head <= tail && h[head] < i - m + 1) head++;while(head <= tail && a[h[tail]] < a[i]) tail--;h[++tail] = i;if (i >= m) printf("%d ", a[h[head]]);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网 【每日一题】4月23日题目精讲 边的染色

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 小团有一张n个点&#xff0c;m条边的无向图G&#xff0c;有些边上已经被标记了0或1&#xff0c;表示它的边权…

ASP.NET Core 中的 ORM 之 Dapper

Dapper简介Dapper是.NET的一款轻量级ORM工具&#xff08;GitHub&#xff09;&#xff0c;也可称为简单对象映射器。在速度方面拥有微型ORM之王的称号。它是半自动的&#xff0c;也就是说实体类和SQL语句都要自己写&#xff0c;但它提供自动对象映射。是通过对IDbConnection接口…

P1446-[HNOI2008]Cards【Burnside引理,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P1446 题目大意 三个颜色的一些东西排在一起&#xff0c;给mmm种置换&#xff0c;求本质不同的染色方案数。 解题思路 BurnsideBurnsideBurnside引理&#xff1a;置换集合GGG时本质不同的序列方案等于∑x∈Gc(x)∣G∣\frac{\…

传送门(最短路树+可并堆)

Description 有一张n个点m条边的无向图&#xff0c;求删去任意一条边后&#xff0c;从S到T的最短距离的最大值 n, m ≤ 21052 \times 10^52105 Solution 这道题是[USACO09JAN]Safe Travel的变形&#xff0c;然后这是题解 Safe Travel这道题的普遍做法是并查集或树剖&#…

【DP】Mobile Service(jzoj 1327)

Mobile Service jzoj 1327 题目大意 某公司有三个员工&#xff0c;现在有n个时刻&#xff0c;某一时刻要一个员工到一个位置&#xff08;别的员工不能动&#xff09;&#xff0c;代价为ci,jc_{i,j}ci,j​&#xff0c;一个位置一个时刻最多有一个人&#xff0c;问最小代价是多…

用WinForm/WPF代码来为.NET Core 3.0功能投票

我们在5月报道过微软希望在.NET Core 3.0上运行WinForms和WPF。为了实现这个目标&#xff0c;他们正在构建一个新工具&#xff0c;该工具将允许你投票以决定他们需要把哪些API移植到.NET Core。但是&#xff0c;这不是一次直接进行的投票&#xff0c;而是基于你的应用程序正在使…

病毒扩散

链接&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200429210705568.png?x-oss-processimage/waterm…

P3200-[HNOI2009]有趣的数列【卡特兰数】

正题 题目链接:https://www.luogu.com.cn/problem/P3200 题目大意 求一个长度为2∗n2*n2∗n的排列要求 奇数位和偶数位分别递增相邻的偶数位大于奇数位 解题思路 可以看做是一个2∗n2*n2∗n的序列按顺序填进奇数和偶数位&#xff0c;然后因为第二个要求所以奇数位在任何时候…

【SPFA】Party(jzoj 1328)

Party jzoj 1328 题目大意 有一个有向图&#xff0c;给你一个x&#xff0c;让你求每一个点到x再回去的最短路径&#xff0c;输出所有最短路径的最大值 输入样例 4 8 2 1 2 4 1 3 2 1 4 7 2 1 1 2 3 5 3 1 2 3 4 4 4 2 3输出样例 10 样例解释 数据范围 1⩽x⩽N⩽10001\le…

【每日一题】4月27日题目精讲 Removal

链接&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 524288K&#xff0c;其他语言1048576K 64bit IO Format: %lld题目描述 Bobo has a sequence of integers s1, s2, …, sn where 1 ≤ si ≤ k. Find out the number of distinc…

[CF966E] May Holidays(树上数据结构问题、分块+虚树)

Description 一个 n 个结点的有根树&#xff0c;每个结点 x 有一个值 txt_xtx​&#xff0c;和一个颜色 (黑/白)。 m 次操作&#xff1a; 翻转某点颜色。询问有多少点 x 满足&#xff1a;x 为黑色&#xff0c;x 的白色后代数 > tx。 n, m ≤ 10510^5105 Solution 令 wi …

Asp.Net Core 2.2.0-preview1已经发布

原文地址 ASP.NET Core 2.2.0-preview1 now available今天我们很高兴地宣布,现在可以试用ASP.NET Core和.NET Core的下一个次要版本的第一个预览。在过去的几个月里&#xff0c;我们和社区里的许多人一起为这个版本进行开发&#xff0c;现在它已经准备好让更广泛的受众尝试它并…

YbtOJ#20089-[NOIP2020模拟赛B组Day10]平衡的树【贪心】

正题 题目链接:https://www.ybtoj.com.cn/contest/70/problem/3 题目大意 一棵树nnn个节点&#xff0c;每条边(x,y,a,b)(x,y,a,b)(x,y,a,b)&#xff0c;可以花费111的代价让一条边的a,ba,ba,b都减去111&#xff0c;但是不能小于000&#xff0c;要求最少代价使得每条边满足yyy…

纪中B组模拟赛总结(2020.2.13)

成绩 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4141414lyflyflyf200200200100100100000000100100100 总结 今天真改“滚”QAQ T1一开始不会&#xff0c;最后才来做&#xff0c;发现了题目的精髓&#xff0c;才切掉 T2打了个ST表&#xff0c;MLE&#x…

牛客网【每日一题】4月28日题目精讲 美味菜肴

链接&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld题目描述 小明是个大厨&#xff0c;早上起来他开始一天的工作。他所在的餐厅每天早上都会买好n件食材&#xff08;每种…

UOJ284 快乐游戏鸡(树上动态规划问题、长链剖分+单调栈)

Description 一棵 n 个点的有根树&#xff0c;带点权 wi。 从 s 出发&#xff0c;希望达到 t&#xff0c;每秒可以从当前点移动到某一个儿子。 有一个死亡次数&#xff0c;初始为 0。若在某个点 i(i ! s, t) 时&#xff0c;死亡次数 ≤ wi&#xff0c;那么死亡次数自增 1&…

C#系列之聊聊.Net Core的InMemoryCache

这两天在看.net core的in memory cache&#xff0c;这里记录一下用法&#xff0c;主要涉及MemoryCache的Get&#xff0f;Set&#xff0f;Expire&#xff0f;Flush。首先我们先用dotnet命令创建一个mvc的项目&#xff0c;这里我们将使用postman来请求server&#xff0c;1dotnet …

P1412-经营与开发【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P1412 题目大意 nnn个地点&#xff0c;有一个能力值为www的稿子 如果地点iii是资源型的&#xff0c;那么可以选择获得ai∗wa_i*wai​∗w的价值&#xff0c;且ww∗(1−k100)ww*(1-\frac{k}{100})ww∗(1−100k​)如果地点iii是…

纪中在家培训总结(2020.2.1~2020.2.24)

前言 因为新型冠状病毒&#xff08;疫情情况&#xff09;的原因&#xff0c;纪中培训改为在家培训&#xff0c;一天的进度变成了两天甚至三天的进度QAQ&#xff0c;但我还是想说&#xff1a;武汉加油&#xff01;中国加油&#xff01; 这次培训总结没啥好写&#xff0c;请勿嘲…

CF1137F Matches Are Not a Child‘s Play(树上数据结构问题、树链剖分+ODT)

Description 一棵 n 个点的树&#xff0c;点权最初为 1 ∼ n 的排列。 定义一个删点过程&#xff1a;每次找到权值最小的叶子&#xff0c;删去它以及连接的边&#xff0c;重复这个过程直到剩下一个点&#xff0c;然后删去最后的点。 处理 q 个询问&#xff1a; 将一个点 x 的…