Codeforces 249D Donkey and Stars (线段树+扫描线)
2016-05-24 10:30
429 查看
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <vector> #include <queue> #include <map> #include <set> #include <algorithm> #include <ctime> #include <cstdlib> #include <functional> #pragma comment(linker,"/STACK:102400000,102400000") using namespace std; #define eps 1e-10 #define N 300030 #define B 20 #define M 3000020 #define inf 0x3f3f3f3f #define LL long long #define pii pair<int, int> #define MP make_pair #define fi first #define se second #define mod 1000000007 #define ls (i << 1) #define rs (ls | 1) #define md (ll + rr >> 1) #define lson ll, md, ls #define rson md + 1, rr, rs int n, a, b, c, d; LL san , cnt; int dp ; struct node { int x, y; bool operator < (const node &t) const { LL u = 1LL * c * x - 1LL * d * y; LL v = 1LL * c * t.x - 1LL * d * t.y; if(u != v) return u > v; return 1LL * a * x - 1LL * b * y > 1LL * a * t.x - 1LL * b * t.y; } }p ; int mx ; void upd(int x, int v) { while(x <= cnt) { mx[x] = max(mx[x], v); x += x & -x; } } int query(int x) { int ret = 0; while(x) { ret = max(ret, mx[x]); x -= x & -x; } return ret; } int haxi(LL x) { return lower_bound(san + 1, san + cnt + 1, x) - san; } int main() { scanf("%d", &n); scanf("%d/%d%d/%d", &a, &b, &c, &d); for(int i = 1; i <= n; ++i) { scanf("%d%d", &p[i].x, &p[i].y); san[++cnt] = 1LL * a * p[i].x - 1LL * b * p[i].y; } n++; p .x = 0, p .y = 0; san[++cnt] = 0; sort(p + 1, p + n + 1); sort(san + 1, san + cnt + 1); cnt = unique(san + 1, san + cnt + 1) - san - 1; for(int i = 1; i <= n; ++i) { LL tmp = 1LL * a * p[i].x - 1LL * b * p[i].y; int pp = haxi(tmp); dp[i] = query(pp - 1) + 1; upd(pp, dp[i]); } for(int i = 1; i <= n; ++i) { if(p[i].x == 0 && p[i].y == 0) { printf("%d\n", dp[i] - 1); break; } } return 0; }
相关文章推荐
- jquery html动态添加的元素绑定事件详解
- JAVA集合概述
- AXIS2+Myeclipse实现WebService数据库存储简单实例
- 在CTreeCtrl中捕获复选框选中消息,父子节点选中状态联动
- iOS NStimer 使用注意问题
- Yii中直接使用sql
- Ubuntu 14.04 关闭触摸板以及杀死终端命令
- yum安装redis详解
- 搜索二·骑士问题
- oracle官方提到被频繁询问的问题1(rac中私网的条件需求)
- K-means聚类算法原理简单介绍
- 【git】忽略无用的文件
- MQ比较,kafka消息队列
- HDU 5700 区间交 离线线段树
- 自守数
- 快速保存网页中所有图片的方法
- php项目调试sql
- shell指令expr使用指南
- 安装使用linux遇到的问题及其解决办法
- iOStableview CollectionView 自动滚动到制定行