Gym 101606L - Lounge Lizards - [计算几何+LIS]
题目链接:https://codeforces.com/gym/101606/problem/L
题解:
在同一条线上的所有蜥蜴,他们的斜率都是相通的,换句话说可以直接通过斜率将蜥蜴分组。
每一组即代表一条直线上的所有蜥蜴,再将这条直线以TV点为分界分成两条射线,这样每条射线上的蜥蜴,按距离TV从近到远,它们的身高排成一个整数序列,对这个序列求最长上升子序列即可。
需要注意的:
DP求LIS的话是 $O(n^2)$ 的时间复杂度,是过不了的应该,要用贪心+二分 $O(n \log n)$ 求LIS长度;
不确定直接用double类型存斜率是不是会有精度问题,可以用pair<int,int>类型当做分数类来表示斜率,注意约分就好了,还可以省去考虑直线平行坐标轴的问题。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int maxn=1e6+; int n,X,Y; int tot;
map<pii,int> mp; struct Li
{
ll dist;
int h;
bool operator<(const Li& o)const
{
return dist<o.dist;
}
};
vector<Li> H[][maxn]; inline pii grad(int x,int y)
{
int dx=x-X, dy=y-Y;
int g=__gcd(dx,dy);
return make_pair(dx/g,dy/g);
}
inline ll dist(ll x,ll y)
{
return (x-X)*(x-X)+(y-Y)*(y-Y);
}
inline bool check(int x,int y)
{
if(x==X) return y>Y;
else return x>X;
} int S[maxn],top;
int solve(const vector<Li>& a)
{
S[top=]=a[].h;
for(int i=;i<a.size();i++)
{
int pos=lower_bound(S,S+top+,a[i].h)-S;
S[pos]=a[i].h;
top=max(top,pos);
}
return top+;
} int main()
{
cin>>X>>Y;
cin>>n; mp.clear(), tot=;
for(int i=,x,y,h;i<=n;i++)
{
scanf("%d%d%d",&x,&y,&h);
pii g=grad(x,y);
if(mp[g]==) mp[g]=++tot;
H[check(x,y)][mp[g]].push_back((Li){dist(x,y),h});
} int ans=;
for(int i=;i<=tot;i++)
{
sort(H[][i].begin(),H[][i].end());
sort(H[][i].begin(),H[][i].end());
if(H[][i].size()) ans+=solve(H[][i]);
if(H[][i].size()) ans+=solve(H[][i]);
}
cout<<ans<<endl;
}
Gym 101606L - Lounge Lizards - [计算几何+LIS]的更多相关文章
- 【Codeforces】Gym 101156E Longest Increasing Subsequences LIS+树状数组
题意 给定$n$个数,求最长上升子序列的方案数 根据数据范围要求是$O(n\log n)$ 朴素的dp方程式$f_i=max(f_j+1),a_i>a_j$,所以记方案数为$v_i$,则$v_i ...
- Gym 101917 E 简单计算几何,I 最大流
题目链接 https://codeforces.com/gym/101917 E 题意:给定一个多边形(n个点),然后逆时针旋转A度,然后对多边形进行规约,每个点的x规约到[0,w]范围内,y规约到[ ...
- Gym - 100625G Getting Through 计算几何+并查集
http://codeforces.com/gym/100625/attachments/download/3213/2013-benelux-algorithm-programming-contes ...
- Codeforces Gym 100338B Geometry Problem 计算几何
Problem B. Geometry ProblemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...
- Gym 101606 - A/B/C/D/E/F/G/H/I/J/K/L - (Undone)
链接:https://codeforces.com/gym/101606 A - Alien Sunset 暴力枚举小时即可. #include<bits/stdc++.h> using ...
- 2017 United Kingdom and Ireland Programming(Gym - 101606)
题目很水.睡过了迟到了一个小时,到达战场一看,俩队友AC五个了.. 就只贴我补的几个吧. B - Breaking Biscuits Gym - 101606B 旋转卡壳模板题.然后敲错了. 代码是另 ...
- 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)
A. Alien Sunset 暴力枚举答案即可. #include<cstdio> int n,i,mx; struct P{ int h,r,t; bool night(int x){ ...
- [寒假集训第一场]gym101606 2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017)
3星场 难度在于英文题面太难读懂了QAQ 看样例猜题意的我 博客园的c++主题真丑 A Alien Sunset \(description\) 有\(n\)个星球,每个星球自转时间不一样,所以一天的 ...
- HZNU Training 4 for Zhejiang Provincial Collegiate Programming Contest 2019
今日这场比赛我们准备的题比较全面,二分+数论+最短路+计算几何+dp+思维+签到题等.有较难的防AK题,也有简单的签到题.为大家准备了一份题解和AC代码. A - Meeting with Alien ...
随机推荐
- SQL server 存储过程中 列传行
select @exchange=exchange,@coupons_type=coupons_type - FLOOR(exchange))) from points_exchange_svc wh ...
- [转] Python 字符编码判断
转自:http://www.cnblogs.com/dkblog/archive/2011/03/02/1980644.html 法一: isinstance(s, str) 用来判断是否为一般字符串 ...
- web开发简史与技术选型
视频地址:http://v.youku.com/v_show/id_XMTQxNzM1MzAwOA==.html?firsttime=0&from=y1.4-2
- mysql备份与还原 数据库的常用命令。
一.备份数据: Mysqldump常用命令: mysqldump -u用户名 -p密码 --databases 数据库1 数据库2 > xxx.sql 常见选项: -u: 用户名 -p: 密码 ...
- 【原创】大数据基础之Flink(1)简介、安装、使用
Flink 1.7 官方:https://flink.apache.org/ 一 简介 Apache Flink is an open source platform for distributed ...
- [转]Ubuntu中apt与apt-get命令的区别
转载于https://www.sysgeek.cn/apt-vs-apt-get/ Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入.其实早在 2014 年,apt 命令 ...
- jsp 部署
部署一个Servlet 3.0应用程序是一件轻而易举的 事.通过Servlet注解类型,对于不太复杂的应用程序, 可以部署没有描述符的Servlet/JSP应用程序.尽管如 此,在需要更加精细配置的情 ...
- Apache:SSLCertificateFile:文件不存在或为空(操作系统RHEL7)
配置参数及报错信息(配置了TLS加密后httpd服务无法启动) 我在httpd.conf文件中引用了上面创建的文件.但在那之后,当我尝试RESTART Apache时,我遇到以下错误: 错误:SSLC ...
- Java Callable使用
1. 创建线程的三种方式: 继承Thread,重写run方法 实现Runnable接口,重新run方法 实现Callable接口,重写call方法 2. Callable接口实际上是属于Executo ...
- Elasticsearch 简单快照备份
创建仓库 POST http://10.10.14.201:9200/_snapshot/backup { "type": "fs", "settin ...