【三月专题】Dp专练
我太菜了
如果您可以吊打我 勿喷!!!
单调队列优化Dp
P1440 求m区间内的最小值
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
//#include <windows.h>
#define ll long long
#define rg register
#define ull unsigned long long using namespace std;int n,m;
int k,tot,head=1,tail=0;
int a[2000009],q[2000009];inline int read()
{int x=0,f=1;char ch;while (ch < '0' || ch > '9') {if (ch=='-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9'){x = x*10+ch-'0';ch = getchar();}return f*x;
}int main()
{n=read(),m=read();for(rg int i=1;i<=n;i++)a[i]=read();for(rg int i=1;i<=n;i++){printf("%d\n",a[q[head]]);while(i-q[head]+1>m&&head<=tail) head++;while(a[i]<a[q[tail]]&&head<=tail)tail--;q[++tail]=i;}//system("pause");return 0;
}
P1886 滑动窗口
代码:
#include<bits/stdc++.h> using namespace std; #define re register int #define ll long long #define maxn 1000009 #define maxm inline ll read() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ll)(ch-'0');ch=getchar();}return x*f; } int q[maxn],a[maxn]; int n,m,k,ans,tot,head,tail; void Ask_MIN() {head=1,tail=0;for(int i=1;i<=n;i++){while(head<=tail&&i-q[head]+1>m)head++;while(head<=tail&&a[q[tail]]>=a[i])tail--;q[++tail]=i;if(i>=m)printf("%d ",a[q[head]]); } }void Ask_MAX() {head=1,tail=0;for(int i=1;i<=n;i++){while(head<=tail&&i-q[head]+1>m)head++;while(head<=tail&&a[q[tail]]<=a[i])tail--;q[++tail]=i;if(i>=m)printf("%d ",a[q[head]]);} } int main() {n=read(),m=read();for(int i=1;i<=n;i++)a[i]=read();Ask_MIN();Ask_MAX();return 0; }
P2629 好消息,坏消息
代码:
#include<bits/stdc++.h> using namespace std; #define re register int #define ll long long #define maxn 1000009 #define maxm inline ll read() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ll)(ch-'0');ch=getchar();}return x*f; } int sum[maxn<<1],q[maxn<<1],a[maxn<<1]; int n,m,k,ans,tot,head,tail; int main() {n=read();for(int i=1;i<=n;i++)a[i]=read(),a[i+n]=a[i];for(int i=1;i<=2*n;i++)sum[i]=sum[i-1]+a[i];head=1,tail=0;for(int i=1;i<=n*2-1;i++){while(head<=tail&&i-q[head]+1>n)head++;while(head<=tail&&sum[i]<=sum[q[tail]])tail--;q[++tail]=i;if(i>=n&&sum[q[head]]-sum[i-n]>=0)ans++;} printf("%d\n",ans);return 0; }
P1714 切蛋糕
代码:
#include<bits/stdc++.h> using namespace std; #define re register int #define ll long long #define maxn 500009 #define maxm inline ll read() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ll)(ch-'0');ch=getchar();}return x*f; } int sum[maxn],q[maxn]; int n,m,k,ans,tot,mx,head,tail; int main() {n=read(),m=read();for(int i=1;i<=n;i++){int x=read();sum[i]=sum[i-1]+x;}head=1,tail=0;for(int i=1;i<=n;i++){while(head<=tail&&i-q[head]>m)head++; ans=max(ans,sum[i]-sum[q[head]]);while(head<=tail&&sum[q[tail]]>=sum[i])tail--;q[++tail]=i; }printf("%d\n",ans); }
转载于:https://www.cnblogs.com/_Yrh/p/10511917.html
【三月专题】Dp专练相关推荐
- [SOCI2005]最大子矩阵(DP) + [JXOI2018]守卫(DP) + [CQOI2016]手机号码(数位DP)[各种DP专练]
DP专练博客 DP专练 T1:最大子矩阵 题目 题解 代码实现 T2:守卫 题目 题解 代码实现 T3:手机号码 题目 题解 代码实现 T1:最大子矩阵 题目 这里有一个n*m的矩阵,请你选出其中k个 ...
- DP专练2 (大理石 + [ZJOI 2010]数字计数)
你肯定以为DP专练会有很多题, 但是请考虑一下本仙女的DP码力,一次性能更几个题... 来吧,别害怕呀~~ 文章目录 大理石 题目 题解 代码实现 数字计数 题目 题解 代码实现 大理石 题目 林老师 ...
- DP专练1( [NOIP 2003]加分二叉树 + 太空梯 )
我们先慢慢来 加分二叉树 题目 题解 简单讲解前序//中序//后序遍历 代码实现 太空梯 题目 题解 代码实现 加分二叉树 题目 题解 简单讲解前序//中序//后序遍历 其实说白了,这个*序就是根ro ...
- DP专练4:[SCOI 2010]股票交易(单调队列优化dp)
昨天晚上,初见它时,月黑风高,一个电脑,一支笔,一个人 今天秋高气爽,再一瞥,回眸间 我又来了,honey 题目 题解 代码实现 题目 题解 首先这种 iii 天与前面 jjj 天有关联,而且让你求最 ...
- 4.28dp专练总结
a 颓废了一会决定写博客 这是一篇DP专练考试总结 我真的快累死了. 时间:大概4h 6道题(丧心病狂):) T1: 数字三角形的基础上,加了若干次询问,每次废掉一个点,然后在求最优值. T2: FJ ...
- 四年级用计算机算出本月合计,期末专练:四年级下册数学各单元练习题汇总,电子打印版!...
原标题:期末专练:四年级下册数学各单元练习题汇总,电子打印版! 四年级下册数学各单元练习题 第一单元测试题 1.填空 (1)180×650-320÷80,如果要改变运算顺序,先算减法( ) (2)根据 ...
- 用计算机算出你喜欢吃你喜欢的人,Go for it七年级下学期1-12单元(期末复习)句子翻译专练...
Go for it七年级下学期1-12单元(期末复习)句子翻译专练 Unit1 1.你的笔友是哪里人? Where is your _________ _______ _________? ( pe ...
- 【网络流专练一】UVA五题(UVA12125,UVA11082,UVA10983,UVA1306,UVA10735)
网络流专练 March of the Penguins 矩阵解压 Matrix Decompressing Buy one, get the rest free The K-League 混合图的欧拉 ...
- 2022年证券从业资格投资顾问考试多选题专练及答案
题库来源:优题宝公众号 2022年证券从业资格投资顾问考试多选题专练及答案,由优题宝公众号根据最新证券从业资格投资顾问考试大纲与历年证券从业资格投资顾问考试真题汇总编写,包含证券从业资格投资顾问考试常 ...
- 2022年证券从业资格证券市场基本法律法规考试多选题专练及答案
题库来源:优题宝公众号 2022年证券从业资格证券市场基本法律法规考试多选题专练及答案,由优题宝公众号根据最新证券从业资格证券市场基本法律法规考试大纲与历年证券从业资格证券市场基本法律法规考试真题汇总 ...
最新文章
- 青少年蓝桥杯_2020_steam考试_中级组_第一题
- Microsoft Windows Workflow Foundation 入门:开发人员演练
- EIGRP MD5认证实例
- 一个简单的基于 DirectShow 的播放器 1(封装类)
- 重构之以委托取代继承
- ASCII、 Unicode 和 UTF8
- np.c_和np.r_
- 几句话就能让你明白:热备份路由选择协议(HSRP)
- PDMS二次开发(八)——向PDMS12.1版本迁移
- 人脉网中应该具备的10种人
- Python数据分析与挖掘实战第三章笔记之贡献度分析代码
- 笔记本电脑硬盘坏了怎么办?笔记本硬盘坏了修复技巧
- c语言switch购物折扣,SWITCH国际版ESHOP史低来袭推荐(64):精彩在继续,折扣在进行,捡漏的机会到啦!...
- ESP32设备驱动-BMP180气压温度传感器驱动
- Installshield 安装包安装过程中遇到的报错(一)
- 微信小程序摄像头监控_微信小程序读取摄像头 微信调用摄像头
- 时间序列平稳性的统计检验
- 职业生涯自我规划五步
- PyGame|给程序插入背景音乐
- 数据结构实验课:实验五、二叉树操作及应用
热门文章
- 7.MongoDB之读策略readPreference
- getdate() java_JAVA获得当前时间的几种方法
- 路由器和交换机的区别,太经典了
- Redis主从复制知识点
- linux 查看系统位数命令,怎么用命令行查看Linux系统位数
- php 配置文件类,PHP配置文件类
- 如何制作通讯录vcf_【教程】刷机或更换手机后快速导入通讯录的方法
- parallel(parallelStream)并发问题
- 【渝粤教育】国家开放大学2018年秋季 0313-22T促销策划与实战 参考试题
- JD_Source Code for problem 1581