acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1316题目链接

Interval

时间限制:2000 ms  |  内存限制:65535 KB
难度:3
描述
才发现编故事背景那么难,原谅当初语文考满分的我。
对于区间[L, R](L <= R)而言,它的长度是R - L + 1,区间和则是a[L] + ... + a[R]。
区间元素的下标是从1开始的。
如:序列{5 2 1 1 3 1 4}
区间[2 4]的长度是3,区间[2, 5]的区间和 = 2 + 1 + 1 + 3 = 7。 
现在Ocean用程序随机生成了一个序列,该序列一共有N个整数。
对于这个序列,他想知道区间长度 >= L且满足区间和 >= M的不同区间有多少个?
对于两个区间[x1, y1]和[x2, y2],若x1 != x2 或者 y1 != y2则可以认为两个区间是不同的。
输入
第一行输入一个整数T,代表有T组测试数据。
每组数据占两行,第一行依次输入三个整数N,L,M分别代表上面提到的信息。
下面一行输入N个整数ai。

注:1 <= T <= 100,1 <= L <= N <= 10000,-100000 <= M,ai <= 100000。

输出
对每组测试数据,输出一个整数代表最后的结果。
样例输入
3
1 1 1
1
4 2 3
1 2 3 4
6 3 -7
-1 -2 -3 4 -5 6
样例输出
1
6
10
来源
第七届河南理工大学程序设计大赛
上传者
liuyuqiang
  一开始的思路是先将[1,L],[1,L+1]......[1,N]这几个区间push进容器中,然后每次固定一个起点,从1开始,显然我们可以让M每次加上起点之前的前缀和,抵消之后就等价于区间和变为了以当前起点为左边界的区间。然后二分查找满足条件的区间个数,同时每次都要把区间长度最小的那个区间pop出去,因为每次
区间长度都等价于自动减一(由于左边界的右移)。
  但是在一个连续的有序序列中删除节点的复杂度是O(N),可以逆向来想,我们从左边界的最大值开始枚举,慢慢的减小到1,这样前面满足的区间在后面依旧满足我们要做的是每次添加进去一个区间即可,添加时用了insert函数,复杂度按理说也是O(N),但stl还是比自己写的快把。
 #include<bits/stdc++.h>
using namespace std;
int a[],pre[];
int main()
{
int T,L,M,N,i,j,k;
cin>>T;
while(T--){
vector<int>q;
cin>>N>>L>>M;
for(i=;i<=N;++i){
scanf("%d",a+i);
pre[i]=pre[i-]+a[i];
}
int ans=;
for(i=N;i>=L;i--){
int p=lower_bound(q.begin(),q.end(),pre[i])-q.begin();
q.insert(q.begin()+p,pre[i]);
vector<int>::iterator x=lower_bound(q.begin(),q.end(),M+pre[i-L]);
ans+=q.end()-x;
}
cout<<ans<<endl;
}
return ;
}

nyoj-1316-二分的更多相关文章

  1. nyoj 310二分+dinic

    #include<stdio.h> #include<queue> #include<string.h> using namespace std; #define ...

  2. nyoj 306 二分+dfs

    #include<stdio.h> #include<string.h> #define N 200 int Min(int a,int b) { return a>b? ...

  3. poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分

    poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分 题目链接: nyoj : http://acm.nyist.net/JudgeOnline/ ...

  4. nyoj 237 游戏高手的烦恼 二分匹配--最小点覆盖

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=237 二分匹配--最小点覆盖模板题 Tips:用邻接矩阵超时,用数组模拟邻接表WA,暂时只 ...

  5. NYOJ 720 DP+二分

    项目安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个 ...

  6. NYOJ 914 Yougth的最大化【二分/最大化平均值模板/01分数规划】

    914-Yougth的最大化 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:4 难度:4 题目描述: Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从 ...

  7. nyoj 214——单调递增子序列(二)——————【二分搜索加dp】

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长 ...

  8. nyoj 214

    //nyoj 214 这个题目和字符串的问题类似,都是给出一组数据,寻找最长的单调递增字符 这一题一开始我用dp做,发现超时,看了下时间,n*n的复杂度,换过一种思路 用类似于栈的方式,来存储每次更新 ...

  9. POJ 2728 Desert King(最优比例生成树 二分 | Dinkelbach迭代法)

    Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 25310   Accepted: 7022 Desc ...

  10. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

随机推荐

  1. OVN实战---《A Primer on OVN》翻译

    overview 在本文中,我们将在三个host之间创建一个简单的二层overlay network.首先,我们来简单看一下,整个系统是怎么工作的.OVN基于分布式的control plane,其中各 ...

  2. 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

    前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密 ...

  3. 通过文件对照工具Merge数据库

    项目分成线下开发版.线上測试版.线上生产版,因此相应有三个数据库. 对于一些静态数据.经常须要同步.改动了线下的开发版本号,同一时候也须要更新线上的測试版和线上生产版数据库,有时候线上的一些数据库改动 ...

  4. 思考在伟大的互联网世界中,我是谁?——By Me in 2016

    互联网伟大在哪里? 互联网的发明是不是伟大的,这个问题就如同这个世界上许许多多的问题一样,很大程度上取决于人们不同的经历.不同的见识,乃至不同的信念.不同的人生态度. 摘录网上的一段表述:“互联网(产 ...

  5. Myeclipse中文乱码解决方式

    我们刚刚安装的Myeclipse有可能使用的是GBK的编码方式,而通常我们的程序都是使用的是UTF-8的编码方式,所以当我们导入一个项目的时候,会产生乱码,解决方式如下: 一.将整个project设置 ...

  6. Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用

    Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用 //准备: 我们先写一个搜索所有英文单词的表达式 var   reg: TPerlRegEx; begin   reg := TP ...

  7. Java基础知识陷阱(一)

    本文发表于本人博客. 事隔好多年了,重新拿起来Java这门语言,看似熟悉其实还很陌生,想想应该梳理下顺便提高下自己.这次先来看看Java里面的String这个对象. 经典的先看下面一段代码,请问最终创 ...

  8. LightOJ - 1236 (唯一分解定理)

    题意:求有多少对数对(i,j)满足lcm(i,j) = n,1<=i<=j, 1<=n<=1e14. 分析:根据整数的唯一分解定理,n可以分解为(p1^e1)*(p2^e2)* ...

  9. 解决Webpack 安装sass时出现的错误

    webpack环境下,加载css需要 css-loader 和 style-loader. css-loader:使用类似@import和url(...)的方法实现 require的功能: style ...

  10. c#中的控件01

    1.常用控件: 只读文本:TextBlock.文本框:TextBox.按钮:Button 事件:鼠标移到按钮上的时候显示“大爷您来了”,离开 显示“大爷常来”,Click(点击).Loaded(控件加 ...