hdu-1823 Luck and Love
题目链接:hdu1823二维线段树单点更新区间查询
题意
向一个100*1000的二维空间中插入点,每次查询时,查询区间最大值.
题解
身高既然是100~200,那就相当于100;活泼度相当于1000.所以建立100*1000的二维线段树.
大坑有如下几个
输出-1,而不是-1.0
输入的h1,h2,a1,a2,大小不一定,需要加上一个判断
代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<string>
using namespace std;
typedef long long ll;
#define re(i,n) for(int i=0;i<n;i++)
const int maxn = 4;
const int xsz = 107, ysz = 1007;
double h,a, l;
double hf, ht, af, at;
double tr[(xsz+1)<<2][(ysz+1)<<2];
#define lson(id) id<<1,f,mid
#define rson(id) id<<1|1,mid+1,t
void yinsert(int x, int y, int f, int t){
tr[x][y] = max(tr[x][y], l);
if (f == t)return;
int mid = (f + t) >> 1;
if (a <= mid)yinsert(x, lson(y));
else yinsert(x, rson(y));
}
void xinsert(int id,int f,int t){
yinsert(id, 1, 0, ysz);
if (f == t)return;
int mid = (f + t) >> 1;
if (h <= mid)xinsert(lson(id));
else xinsert(rson(id));
}
void yquery(int x, int y, int f, int t){
if (af <= f&&at >= t){
l = max(l, tr[x][y]);
return;
}
int mid = (f + t) >> 1;
if (af <= mid)yquery(x, lson(y));
if (at > mid)yquery(x, rson(y));
}
void xquery(int x, int f, int t){
if (hf <= f&&ht >= t){
yquery(x, 1, 0, ysz);
return;
}
int mid = (f + t) >> 1;
if (ht > mid)xquery(rson(x));
if(hf<=mid) xquery(lson(x));
}
void yclear(int x, int y, int f, int t){
tr[x][y] = -1;
if (f == t)return;
int mid = (f + t) >> 1;
yclear(x, lson(y)), yclear(x, rson(y));
}
void xclear(int x, int f, int t){
yclear(x, 1, 0, ysz);
if (f == t)return;
int mid = (f + t) >> 1;
xclear(lson(x)), xclear(rson(x));
}
int main(){
freopen("in.txt", "r", stdin);
int Q;
while (scanf("%d", &Q) && Q){
xclear(1, 0, xsz);
while (Q--){
char op[2]; scanf("%s", op);
if (op[0] == 'I'){
scanf("%lf%lf%lf", &h, &a, &l);
h -= 100, a *= 10;
xinsert(1,0,xsz);
}
else{
scanf("%lf%lf%lf%lf", &hf, &ht, &af, &at);
hf -= 100, ht -= 100, af *= 10, at *= 10;
if (hf > ht)swap(hf, ht); if (af > at)swap(af, at);
l= -1;
xquery(1,0,xsz);
if (l == -1)puts("-1");
else printf("%.1lf\n", l);
}
}
}
return 0;
}
hdu-1823 Luck and Love的更多相关文章
- hdu - 1823 - Luck and Love(线段树)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/SCNU_Jiechao/article/details/24406391 题意:Wiskey招女友, ...
- HDU 1823 Luck and Love 二维线段树(树套树)
点击打开链接 Luck and Love Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU 1823 Luck and Love(二维线段树)
之前只知道这个东西的大概概念,没具体去写,最近呵呵,今补上. 二维线段树 -- 点更段查 #include <cstdio> #include <cstring> #inclu ...
- hdu 1823 Luck and Love 二维线段树
题目链接 很裸的题, 唯一需要注意的就是询问时给出的区间并不是l<r, 需要判断然后交换一下, WA了好多发... #include<bits/stdc++.h> using nam ...
- HDU 1823 Luck and Love (二维线段树&区间最值)题解
思路: 树套树,先维护x树,再维护y树,多练练应该就能懂了 代码: #include<cstdio> #include<cmath> #include<cstring&g ...
- HDU 1847-Good Luck in CET-4 Everybody!-博弈SG函数模板
Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载 ...
- HDU 5074 Luck Competition (暴力,概率)
题意:有 n 个人参加比赛,给出n-1个人的成绩,然后要选出一个幸运的人,先把所有的分数求平均数,然后再*2/3,那个不大于这个数,且最接近的数,就是最幸运的, 让你设置最后一个人的分,使他是最幸运的 ...
- 二维线段树 HDU 1823最简单的入门题
xiaoz 征婚,首先输入M,表示有M个操作. 借下来M行,对每一行 Ih a l I 表示有一个MM报名,H是高度, a是活泼度,L是缘分. 或 Q h1 h2 a1 a2 求 ...
- 【HDOJ】1823 Luck and Love
二维线段树.wa了几次,不存在输出-1,而不再是一位小数. #include <cstdio> #include <cstring> #define MAXN 105 #def ...
- HDU1823 Luck ans Love 二维线段树
Luck and Love HDU - 1823 世界上上最远的距离不是相隔天涯海角 而是我在你面前 可你却不知道我爱你 ―― 张小娴 前段日子,枫冰叶子给Wiskey ...
随机推荐
- gvim的菜单乱码解决方法
gvim的菜单乱码解决方法: (乱码是由于系统内码不兼容导致,系统内码包括gb2312 gb18030 utf-8 utf-16[unicode]等) 生成文件 ~/.gvimrc 并添加如下语句:s ...
- python中strip,lstrip,rstrip简介
一.起因 今天在做角色控制中,有一个地方用到rstrip,判断用户请求的url是否与数据库对应可用权限中url相符. if request.path == x.url or request.path. ...
- [转]AngularJS fixed header scrollable table directive
本文转自:http://pointblankdevelopment.com.au/blog/angularjs-fixed-header-scrollable-table-directive This ...
- Java实现点击一个Jlabel增加一个Jlabel的小功能
当界面生成以后,自己想做一个点击一个Jlabel增加一个Jlabel,即类似于QQ的添加好友以后可以及时的加进一个好友.自己做了好久,发现不能及时刷新.在网上查了一下,然后自己研究了一小会.发现需要v ...
- django csrf 处理简介
CSRF 是什么 CSRF 即跨站请求伪造,在用户不知情的情况下向有漏洞的网站发送请求.例如有正常网站A,恶意网站B, 用户若对A B 两个网站都有访问,B 可能伪造请求到 A,比如提交表单.至于具体 ...
- POJ 1696 Space Ant 【极角排序】
题意:平面上有n个点,一只蚂蚁从最左下角的点出发,只能往逆时针方向走,走过的路线不能交叉,问最多能经过多少个点. 思路:每次都尽量往最外边走,每选取一个点后对剩余的点进行极角排序.(n个点必定能走完, ...
- UVa11549计算器谜题[floyd判圈]
题意: 有个老式计算器,每次只能记住一个数字的前n位.现在输入一个整数k,然后反复平方,一直做下去,能得到的最大数是多少.例如,n=1,k=6,那么一次显示:6,3,9,1... 白书上的题 set, ...
- JAVA中遇到 UTF-八 序列的字节 1 无效
UTF-8 序列的字节 1 无效用dom4j操作xml文件, 出现了这个错误.原因是xml文件被创建的时候是ansi码格式. ( UTF-8 序列的字节 1 无效用dom4j操作xml文件, 出现 ...
- Android M新的运行时权限开发者需要知道的一切
android M 的名字官方刚发布不久,最终正式版即将来临!android在不断发展,最近的更新 M 非常不同,一些主要的变化例如运行时权限将有颠覆性影响.惊讶的是android社区鲜有谈论这事儿, ...
- 全球首发免费的MySql for Entity Framework Core
from:http://www.1234.sh/post/pomelo-data-mysql?utm_source=tuicool&utm_medium=referral Source 源代码 ...