【51Nod】1275 连续子段的差异 单调队列
来源:互联网 发布:打不开网络共享文件夹 编辑:程序博客网 时间:2024/06/06 20:42
看见宇峰dalao在做这道题
就勉强凑了一波
一次AC
爽 : )
C++
15 ms
2048 KB
Accepted
2017/10/27
19:39:13
80
#10 ms 2024 KB Accepted
#20 ms 2024 KB Accepted
#30 ms 2024 KB Accepted
#415 ms 2024 KB Accepted
#50 ms 2024 KB Accepted
#615 ms 2024 KB Accepted
#715 ms 2024 KB Accepted
#815 ms 2024 KB Accepted
#90 ms 2024 KB Accepted
#100 ms 2024 KB Accepted
#110 ms 2024 KB Accepted
#1215 ms 2040 KB Accepted
#130 ms 2036 KB Accepted
#1415 ms 2048 KB Accepted
#150 ms 2040 KB Accepted
#1615 ms 2040 KB Accepted
#170 ms 2048 KB Accepted
#1815 ms 2024 KB Accepted
#1915 ms 2024 KB Accepted
#200 ms 2048 KB Accepted
#include <cstdio>#include <deque>#include <cstdlib>#include <algorithm>#define C (c=nc())using namespace std;typedef pair<long long,long long> pii;deque<pii>plus,minus;long long n,k,ans,q,l;inline char nc(void){static char ch[100010],*p1=ch,*p2=ch;return p1==p2&&(p2=(p1=ch)+fread(ch,1,100010,stdin),p1==p2)?EOF:*p1++;}inline void read(long long &n){static char c;long long f=1;n=0;C;while (c<'0'||c>'9') c=='-'?f=-1,C:C;while (c>='0'&&c<='9') n=(n<<3)+(n<<1)+c-48,C;return (void)(n*=f);}int main(void){read(n),read(k);read(q);plus.push_back(make_pair(q,1)),minus.push_back(make_pair(q,1));ans=l=1;register long long i;for (i=2;i<=n;++i){read(q);while (!plus.empty()&&plus.back().first>q) plus.pop_back();while (!minus.empty()&&minus.back().first<q) minus.pop_back();plus.push_back(make_pair(q,i)),minus.push_back(make_pair(q,i));while (abs(plus.front().first-minus.front().first)>k){long long del=min(plus.front().second,minus.front().second);if (plus.front().second==del) plus.pop_front();if (minus.front().second==del) minus.pop_front();l=del+1;}ans+=i-l+1;}printf("%d\n",ans);return 0;}
阅读全文
0 0
- 51nod 1275:连续子段的差异 单调队列
- 51nod-1275 连续子段的差异(单调队列)
- [单调队列] 51Nod 1275 连续子段的差异
- 【单调队列】51nod 1275 连续子段的差异
- 51 nod 1275 连续子段的差异(单调队列)
- 【51Nod】1275 连续子段的差异 单调队列
- 51Nod-1275-连续子段的差异
- 51nod 1275 连续子段的差异
- 连续子段的差异
- 51 nod 合法括号子段 (单调栈)
- 长度不超过k的最大连续子序列(单调队列)
- 51nod 1050 循环数组最大子段和(最大连续子段问题)
- hdu3530(最长连续子串+单调队列)
- 51nod 1791 合法括号子段 (队列)
- 51Nod - 1050 单调队列
- 长度不超过m的最大连续子序列(dp + 单调队列)
- 51nod 1478 括号序列的最长合法子段【思维+前缀和+优先队列】好题!
- 51Nod - 1272 单调队列 + 二分
- 易到辟谣称融资顺利,不会把用户资金转为乐视会员
- 百度前“太子”李明远离职后首谈李彦宏:亦师亦父
- 微软:用户手动安装Windows 10创作者更新有风险!
- 海信家用中央空调 聚惠五一“嗨享日”
- Google发布数字助理Assistant SDK,让更多硬件变得智能
- 【51Nod】1275 连续子段的差异 单调队列
- 华为余承东反思P10闪存门:急于表达造成不合适的回应
- mysql导出脚本自动生成word 数据字段perl工具
- 【loli的胡策】联校10.27(数学期望)
- Hibernate主键注解
- java二分查找
- Python爬虫简单常用方法
- 锂电池到底怎么才能又安全又强续航?这次研究人员用上了“冰”
- 亚马逊的机海战术?下个月或推出智能音箱新品对抗Google Home