POJ 3145 线段树 分块?+暴力
思路:
线段树 (分类讨论)
此题数据很水 数据很水 数据很水
但是卡个暴力还是没问题的……
//By SiriusRen
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 1500000
#define inf 1061109567
int n,tot,jy,xx,yy,tree[maxn*6],vis[maxn],cases,q[maxn];
inline int min(int x,int y){return x<y?x:y;}
void insert(int l,int r,int pos){
if(l==r){tree[pos]=l;return;}
int mid=(l+r)>>1;
if(mid>=jy)insert(l,mid,pos<<1);
else insert(mid+1,r,pos<<1|1);
tree[pos]=min(tree[pos<<1],tree[pos<<1|1]);
}
int query(int l,int r,int pos){
if(l>=xx&&r<=yy)return tree[pos];
int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
if(mid<xx)return query(mid+1,r,rson);
else if(mid>=yy)return query(l,mid,lson);
else return min(query(l,mid,lson),query(mid+1,r,rson));
}
int main(){
while(scanf("%d",&n)&&n){
memset(tree,0x3f,sizeof(tree));
memset(vis,0,sizeof(vis)),tot=0;
printf("Case %d:\n",++cases);
for(int ii=1;ii<=n;ii++){
register char p=getchar(),ch;
while(p!='A'&&p!='B')p=getchar();
scanf("%d",&jy);
if(p=='B'){
insert(0,maxn,1);
vis[jy]=++tot;
q[tot]=jy;
}
else if(p=='A'){
int ans=inf,rec=-1;
if(jy<=5000){
for(int i=tot;i;i--){
if(q[i]%jy<ans)
ans=q[i]%jy,rec=i;
if(!ans)goto end;
}goto end;
}
for(int i=0;i<=1000000;i+=jy){
xx=i,yy=i+jy-1;
int temp=query(0,maxn,1);
if(temp<inf){
if(ans>temp-i)
ans=temp-i,rec=vis[temp];
else if(ans==temp-i&&rec<vis[temp])rec=vis[temp];
}
}
end:printf("%d\n",rec);
}
}
puts("");
}
}
POJ 3145 线段树 分块?+暴力的更多相关文章
- 洛谷 P5897 - [IOI2013]wombats(决策单调性优化 dp+线段树分块)
题面传送门 首先注意到这次行数与列数不同阶,列数只有 \(200\),而行数高达 \(5000\),因此可以考虑以行为下标建线段树,线段树上每个区间 \([l,r]\) 开一个 \(200\times ...
- poj 2886 线段树+反素数
Who Gets the Most Candies? Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 12744 Acc ...
- 计蒜客16492 building(二分线段树/分块)
题解: 考虑用线段树维护楼的最大值,然后这个问题就很简单了. 每次可以向左二分出比x高的第一个楼a,同理也可以向右二分出另一个楼b,如果a,b都存在,答案就是b-a-1. 注意到二分是可以直接在线段树 ...
- IOI 2013 袋熊(线段树+分块+决策单调性)
题意 http://www.ioi2013.org/wp-content/uploads/tasks/day1/wombats/Wombats%20zh%20(CHN).pdf 思路 我们设矩形的 ...
- bzoj 3585 mex - 线段树 - 分块 - 莫队算法
Description 有一个长度为n的数组{a1,a2,...,an}.m次询问,每次询问一个区间内最小没有出现过的自然数. Input 第一行n,m. 第二行为n个数. 从第三行开始,每行一个询问 ...
- poj 3468(线段树)
http://poj.org/problem?id=3468 题意:给n个数字,从A1 …………An m次命令,Q是查询,查询a到b的区间和,c是更新,从a到b每个值都增加x.思路:这是一个很明显的线 ...
- POJ——3264线段树
题目: 输入两个数(m,n),m表示牛的头数,n表示查询的个数.查询时输入两个数(x,y),表示查询范围的起始值和终止值,查询结果是,这个区间内牛重量的最大值减去牛重量的最小值,数量级为1000,00 ...
- POJ 2828 线段树(想法)
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 15422 Accepted: 7684 Desc ...
- BZOJ 1798 (线段树||分块)的标记合并
我原来准备做方差的.. 结果发现不会维护两个标记.. 就是操作变成一个 a*x+b ,每次维护a , b 即可 加的时候a=1 ,b=v 乘的时候a=v ,b=0 #include <cstdi ...
随机推荐
- Go语言核心之美 1.1-命名篇
命名篇 1.Go的函数.变量.常量.自己定义类型.包(Package)的命名方式遵循以下规则: 1)首字符能够是随意的Unicode字符或者下划线 2)剩余字符能够是Unicode字符.下划线.数字 ...
- OC的动态继承编译机制
[问]为什么OC不能sizeof一个对象的大小或一个类的大小?和类结构相近的结构体却能够. [再问]为什么OC不能将对象声明到静态空间,如栈中?和类结构相近的结构体却能够. [答]由于OC的动态继承编 ...
- Android应用内加载pdf的方法?
[可行] 最直接的方式下载到本地, 然后调用相关应用打开 [可行,有局限] 使用 webview 加载, 需要在 原url 前面加上 http://docs.google.com/gview?url= ...
- 前后端分离跨域 关于前后端分离开发环境下的跨域访问问题(angular proxy=>nginx )
前后端分离后遇到了跨域访问的问题: angular1中使用proxy很麻烦,最后还是失败结束:最后总结3种方法如下: 本人使用的第一种方法,只是开发环境下使用很方便! 1:禁掉谷歌的安全策略(Turn ...
- 寻找两个有序数组的中位数 C++实现leetcode系列(四)
给定两个大小为 m 和 n 的有序数组 nums1和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 不 ...
- spring boot integrated mybatis three ways!--转
https://github.com/spring-projects/spring-boot/issues/5400 一.使用mybatis-spring-boot-starter1.添加依赖 org ...
- jQuery EasyUI 右键菜单--关闭标签/选项卡
目录结构: noContextMenu.js 文件内容如下: $(function(){ //屏蔽右键菜单 $(document).bind("contextmenu", func ...
- windows py-faster-rcnn配置
[原创帖!转载请注明] windows faster-rcnn安装一直会出现各种错误,本人在实验室电脑成功安装后,在自己电脑上同样的安装步骤也成功.所以做个总结,希望对大家有帮助. 一:安装环境 1. ...
- js&jQ判断checkbox表单是否被选中
js判断: if(document.getElementById("checkboxID").checked){ alert("checkbox is checked&q ...
- Map和WeakMap的区别
个人总结:在一个变量作用域中,如果结束到作用域结尾 } 的话,map中的引用会被垃圾回收机制回收的是weakmap ,map中的引用不会被垃圾回收机制回收的是map. 强引用:只要引用存在,垃圾回收器 ...