博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU - 4417 Super Mario(分块+二分)
阅读量:4701 次
发布时间:2019-06-09

本文共 815 字,大约阅读时间需要 2 分钟。

将给定区间分块,将每个块从小到大排序,二分查询每个块,

#include
#define mem(a,b) memset(a,b,sizeof(a))#define sc(x) scanf("%d",&(x))using namespace std;const int maxn=1e5+10;int block,mub,l[maxn],r[maxn],belong[maxn];int arr[maxn],n,m,tt[maxn];void built(){ block=sqrt(n); mub=n/block;if(n%mub) mub++; for(int i=1;i<=mub;i++) l[i]=(i-1)*block+1,r[i]=i*block; r[mub]=n; for(int i=1;i<=n;i++) belong[i]=(i-1)/block+1; for(int i=1;i<=n;i++) sort(tt+l[belong[i]],tt+1+r[belong[i]]);}int query(int a,int b,int c){ int ans=0; if(belong[a]==belong[b]) { for(int i=a;i<=b;i++) if(arr[i]<=c) ans++; } else { for(int i=a;i<=r[belong[a]];i++) if(arr[i]<=c) ans++; for(int i=belong[a]+1;i

 

转载于:https://www.cnblogs.com/minun/p/11266540.html

你可能感兴趣的文章
每天CookBook之JavaScript-022
查看>>
hdu 过山车(匈牙利算法求最大匹配)
查看>>
跟我做WinForm开发(1)-自定义UI
查看>>
C#:GridView导出Excel,以及runat=server错误处理方法
查看>>
cat 命令(转)
查看>>
ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法
查看>>
插件机制
查看>>
浅析依赖注入
查看>>
pdf.js加载动态pdf文件
查看>>
在远程机器上跑PowerShell脚本
查看>>
Viewpager+Fragment出现空白页面的问题
查看>>
html中实现数据的显示和隐藏
查看>>
小甲鱼Python第十二讲课后习题---013元组
查看>>
系统启动时,BIOS与影子内存_5
查看>>
Linux系统配置双网卡绑定bond0
查看>>
Hanoi(栈实现)
查看>>
Jmeter (二十六)逻辑控制器 之 Module Controller and Include Controller
查看>>
我的Java设计模式-策略模式
查看>>
C# 报表接口样例,简单实用
查看>>
C++常见内存错误及解决方案
查看>>