HDU 5289 Assignment (尺取+Set)
来源:互联网 发布:如何还房贷最划算知乎 编辑:程序博客网 时间:2024/04/28 19:45
题意:n个数字中取出连续的一组数字使得任意两个差小于k,求方案数。
解析:two points,用multiset维护一下区间差值即可。
[code]:
#include<cstdio>#include<cstring>#include<set>using namespace std;typedef long long LL;const int maxn = 1e5+5;int n,m;LL a[maxn];multiset<LL> ms;multiset<LL>::iterator it;void init(){ ms.clear();}void add(LL x){ ms.insert(x);}void del(LL x){ ms.erase(ms.find(x));}bool ok(){ LL val; if(ms.size()<2) return true; it = ms.end(); --it; return *it-*ms.begin()<m;}int main(){ int i,j,cas; scanf("%d",&cas); while(cas--){ scanf("%d%d",&n,&m); init(); for(i = 1;i <= n;i++) scanf("%lld",&a[i]); LL ans= 0; for(i = j = 1;i <= n;i++){ for(;j <= n;j++){ add(a[j]); if(!ok()){ del(a[j]); break; } }//printf("%d %d\n",i,j); ans += ms.size(); del(a[i]); } printf("%lld\n",ans); } return 0;}
0 0
- HDU 5289 Assignment (尺取+Set)
- hdu 5289 Assignment(尺取)
- HDU 5289 - Assignment(multiset + 尺取法)
- HDU 5289 Assignment(尺取法)
- HDU 5289 - Assignment(multiset + 尺取法)
- hdu 5289 Assignment
- HDU 5289 Assignment
- hdu 5289 Assignment
- HDU 5289 Assignment
- hdu 5289 Assignment
- HDU 5289 Assignment
- hdu 5289 Assignment(RMQ)
- hdu 5289 Assignment
- HDU 5289 Assignment
- HDU 5289 Assignment
- HDU 5289 Assignment
- hdu 5289 Assignment
- HDU 5289 Assignment
- [Cloud Computing]Mechanisms: Certificate Revocation List
- 点击按钮,打开文件上传窗口
- 30条Android开发建议
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
- SQLServer 请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接 解决方法
- HDU 5289 Assignment (尺取+Set)
- JavaWeb开发入门(二)
- 关于jqGrid表格重新加载的问题
- ReactiveX-入门篇
- Sublime Text3 快捷键汇总
- 第11期《ON THE WAY》2016年7月刊
- 【2006】求N!的精确值
- plsql 实现表的创建以及增删改查。
- [Cloud Computing]Mechanisms: Certificate Trust Store