hdu contest day1 1002 Assignment
来源:互联网 发布:mac 新建文件夹 编辑:程序博客网 时间:2024/05/29 04:49
传送门:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1002&cid=589
思路:对于每个人,向右二分判断能组成group最远的人,用ST表维护最大最小值,判断时只要看最大最小只差是否小于k即可
CYY的代码
#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long int64;const double eps=1e-7;const int maxn=100015,maxk=20;int n,m,k,a[maxn];int64 ans;int bin[maxk],fmx[maxk][maxn],fmn[maxk][maxn];void read(int &x){ char ch; for (ch=getchar();!isdigit(ch);ch=getchar()); for (x=0;isdigit(ch);ch=getchar()) x=x*10+ch-'0';}void init(){ read(n);read(m); for (int i=1;i<=n;++i) read(a[i]);}void prepare(){ k=floor(log2(n)+eps); for (int i=1;i<=n;++i) fmx[0][i]=fmn[0][i]=a[i]; for (int i=1;i<=k;++i) for (int j=bin[i];j<=n;++j){ fmx[i][j]=max(fmx[i-1][j],fmx[i-1][j-bin[i-1]]); fmn[i][j]=min(fmn[i-1][j],fmn[i-1][j-bin[i-1]]); }}int qmax(int l,int r){ int q=floor(log2(r-l+1)+eps); return max(fmx[q][r],fmx[q][l+bin[q]-1]);}int qmin(int l,int r){ int q=floor(log2(r-l+1)+eps); return min(fmn[q][r],fmn[q][l+bin[q]-1]);}int query(int a,int b){ int l=a,r=b,res; while (l<=r){ int mid=(l+r)>>1; if (qmax(mid,b)-qmin(mid,b)<m) r=(res=mid)-1; else l=mid+1; } return res;}void work(){ prepare(); ans=0;for (int i=1;i<=n;++i) ans+=(i-query(1,i)+1); printf("%I64d\n",ans);}int main(){ int cases;scanf("%d",&cases); bin[0]=1;for (int i=1;i<maxk;++i) bin[i]=bin[i-1]<<1; while (cases--){init();work();} return 0;}
0 0
- hdu contest day1 1002 Assignment
- hdu contest day1 1001 OO’s Sequence
- hdu contest day1 1007 Tricks Device
- hdu 5289 Assignment 2015 Multi-University Training Contest 1
- 2015 Multi-University Training Contest 1 Hdu 5289 Assignment
- HDU 5289 Assignment (2015 Multi-University Training Contest 1)
- hdu 5289 Assignment(2015 Multi-University Training Contest 1)
- hdu 5291 Assignment 2015 Multi-University Training Contest 1
- hdu 5289 Assignment 2015 Multi-University Training Contest 1
- HDU 5289 Assignment(2015 Multi-University Training Contest 1)
- Assignment HDU
- hdu 4781 Assignment For Princess && 2013 Asia Chengdu Regional Contest && YY
- hdu 5289 - Assignment(2015 Multi-University Training Contest 1 )单调队列+RMQ+树状数组
- 2015 Multi-University Training Contest 1 /hdu 5289 Assignment -树状数组
- hdu 5289 Assignment 二分+RMQ 2015 Multi-University Training Contest 1 02
- [Contest] IOI2011 day1 题目汇总
- HDU 2853 Assignment KM
- hdu 5289 Assignment
- sqlite 数据库 相关知识
- OFBiz + Opentaps 目录管理 四. 产品(一)定义产品 - Jason的个人空间 - 开源中国社区
- ubuntu14.04-64位机配置android开发环境,ADT,sdk,eclipsea
- Maven实战(插件管理)
- VBox搭建oracle 11g rac网络问题
- hdu contest day1 1002 Assignment
- 黑马66期android学习笔记 day1_快速入门笔记
- PHP 获取文件上传进度
- OC 中self. 与 下划线的区别
- jsp的onclick事件跳转js时,被省去位数前面的0
- php中mysql语句中如果有变量,该如何连接字符串
- 简单的天气预报信息获取
- Hadoop学习笔记(准备与安装)
- eclipse 经常loading descriptor for XXX ,然后卡死