hdu 5806 二分
来源:互联网 发布:淘宝绫致时装官方店 编辑:程序博客网 时间:2024/06/15 05:16
链接:戳这里
NanoApe Loves Sequence Ⅱ
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others)
Problem Description
NanoApe, the Retired Dog, has returned back to prepare for for the National Higher Education Entrance Examination!
In math class, NanoApe picked up sequences once again. He wrote down a sequence with n numbers and a number m on the paper.
Now he wants to know the number of continous subsequences of the sequence in such a manner that the k-th largest number in the subsequence is no less than m.
Note : The length of the subsequence must be no less than k.
Input
The first line of the input contains an integer T, denoting the number of test cases.
In each test case, the first line of the input contains three integers n,m,k.
The second line of the input contains n integers A1,A2,...,An, denoting the elements of the sequence.
1≤T≤10, 2≤n≤200000, 1≤k≤n/2, 1≤m,Ai≤109
Output
For each test case, print a line with one integer, denoting the answer.
Sample Input
1
7 4 2
4 2 7 7 6 5 1
Sample Output
18
思路:
前缀和算出当前位置i前面有多少个数比m大,然后二分区间有多少个数算贡献
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include <ctime>#include<queue>#include<set>#include<map>#include<stack>#include<iomanip>#include<cmath>#include<bitset>#define mst(ss,b) memset((ss),(b),sizeof(ss))///#pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;#define INF (1ll<<60)-1#define Max 1e9using namespace std;int n,k;ll m;ll a[200100];int sum[200100];int main(){ int T; scanf("%d",&T); while(T--){ scanf("%d%I64d%d",&n,&m,&k); for(int i=1;i<=n;i++) scanf("%I64d",&a[i]); sum[0]=0; for(int i=1;i<=n;i++){ if(a[i]>=m) sum[i]=sum[i-1]+1; else sum[i]=sum[i-1]; } ll ans=0; for(int i=1;i+k-1<=n;i++){ int l=i+k-1,r=n,mid,f=-1; while(l<=r){ mid=(l+r)/2; if(sum[mid]-sum[i-1]>=k) { r=mid-1; f=mid; } else l=mid+1; } if(f==-1) continue; else ans+=1LL*(n-f+1); //printf("%d %d\n",i+k-1,n-f+1); } printf("%I64d\n",ans); } return 0;}
0 0
- hdu 5806 二分
- HDU 5806 二分
- hdu pie(二分+贪心)
- HDU 2899 求导+二分
- 【二分】hdu 4004
- 【二分】hdu 4022
- 【二分】hdu 4033
- hdu 2899 二分
- HDU 2141 二分
- hdu 4004 二分 过河
- hdu 4190 二分答案
- hdu 4190 #二分答案
- hdu 1150 二分匹配
- hdu 1281 二分匹配
- hdu 3081 二分匹配
- HDU 1045 二分匹配
- HDU 1083 二分匹配
- HDU 3646 DP + 二分
- 如何删除电脑中使用过的COM端口
- leetcode:Palindrome Number [9]
- Lightoj 1068 数位dp
- Android中关于Application类的粗略见解
- SGU 114 Telecasting station(二分)
- hdu 5806 二分
- Scala implicits编程彻底实战及Spark源码鉴赏
- JavaScript 方向键值的获取
- leetcode:Regular Expression Matching [10]
- github release 功能的使用及问题解决
- 从Unix 到 Linux
- 发奖金----搜狐2016研发工程师编程题
- 递归为什么效率不高
- 树状数组例题(poj2299)