codeforces 12D Ball

codeforces 12D Ball

这道题有两种做法 一种用树状数组/线段树维护区间最值,一种用map维护折线,昨天我刚遇见了一道类似的用STL维护折线的题目:

392D Three Arrays

参考题解:http://blog.csdn.net/rzo_kqp_orz/article/details/70666174

参考代码:http://codeforces.com/contest/392/submission/8930531

现在来谈谈这道题:

(借一下另一题题解的图)

假设现在图中有一些点,那么对于每个点,它会使在它左下角的点自杀。显然,如果有点出现在折线左下角都会自杀。所以这道题本质就是要判断当前点在折线的哪一侧,以及更新折线。

参考代码:http://codeforces.com/contest/12/submission/36426874

原文地址:https://www.cnblogs.com/wuyuanyuan/p/8609971.html

时间: 2024-10-04 12:10:00

codeforces 12D Ball的相关文章

Codeforces 12D Ball 树状数组模拟3个元素的排序

题目链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<set> #include<vector> #include<map> #include<math.h> #include<queue> #include<string> #include<stdlib.h> #include<a

树状数组模拟3个元素的排序 Codeforces 12D Ball

http://codeforces.com/problemset/problem/12/d Ball time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output N ladies attend the ball in the King's palace. Every lady can be described with three val

CodeForces 12D Ball 多级排序 + 离散 + 线段树

给出B,I,R,对于Pi,若存在Pj满足 Bi < Bj && Ii < Ij && Ri < Rj ,则称Pi为 probable self-murderers.问存在多少个Pi. 首先对其升序排序,优先级为B > I > R. 然后发现对于i < j ,必有Bi <= Bj,所以这一层基本可以忽略. 然后由于数据范围较大,对 I 进行离散,建立线段树记录大于I的区间内最大的R是多少,当然此时要从后往前扫描,边更新边计数. #in

Codeforces 12D Ball 树形阵列模拟3排序元素

主题链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<set> #include<vector> #include<map> #include<math.h> #include<queue> #include<string> #include<stdlib.h> #include<a

Ball CodeForces - 12D

传送门 N ladies attend the ball in the King's palace. Every lady can be described with three values: beauty, intellect and richness. King's Master of Ceremonies knows that ladies are very special creatures. If some lady understands that there is other l

线段树详解 (原理,实现与应用)

线段树详解 By 岩之痕 目录: 一:综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点. 线段树的用处就是,对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)). 线段树的原理,就是,将[1,n]分解成若干特定的子区间(数量不超过4*n),然后,将每个区间[L,R]都分解为 少量特定的子区

Codeforces Beta Round #12 (Div 2 Only) D. Ball sort/map

D. Ball Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/12/D Description N ladies attend the ball in the King's palace. Every lady can be described with three values: beauty, intellect and richness. King's Master

Codeforces Beta Round #12 D. Ball (线段树)

题目大意: n个女性中,如果有一个女性的三维比这个女性的三维都大,这个女性就要自杀.问要自杀多少个. 思路分析: 先按照第一维排序. 然后离散化第二维,用第二维的下标建树,树上的值是第三维,更新的时候取最大值. 注意是按照第一维度从大到小进入线段树. 而且还要严格递增. 所以处理第一维度比较大小的时候要分开处理,要把相同的先判断,再更新入树. 那么如何判断这个女性是否自杀. 首先,你知道第一维度是从大到小的,所以先进树了的节点的第一维度一定更大. 再次,我们考虑第二维度,我们去树上第二维度下标大

Codeforces Beta Round #12 (Div 2 Only) D. Ball 树状数组查询后缀、最值

http://codeforces.com/problemset/problem/12/D 这里的BIT查询,指的是查询[1, R]或者[R, maxn]之间的最值,这样就够用了. 设三个权值分别是b[1], b[2], b[2]; 首先,先把b[1]值离散化,离散成一个个id,那么只能是在id比较大的地方找了.然后把b[2]排序,倒序查询,也就是先查询最大的,当然它是没可能自杀的,因为它已经最大了,然后查询完后,把它压进bit后,以后在bit查询,就不需要管b[2]了,因为在bit里面的b[2