nyoj 1279 (河南省第九届ACM比赛 D 题)
思路:变换一下坐标系新的坐标系就是给定的两条直线,变换之后求 x,y 都严格递增的点的个数的max;
求 x,y 都严格递增的点的个数的max,按照x的从小到大排序,x相同的按照y的从大到小排序然后对y的值进行LIS
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
typedef long long int LL;
const int INF=2e9+1e8;
const int SIZE =1e5+100; int n,a,b,c,d;
struct Point
{
double x,y;
};
Point point[SIZE];
double dp[SIZE];
struct StraightLine
{
double A,B,C;
};// 一条直线方程为: A*x + B*y + C=0
bool is_inside(Point p)
{
if(a*p.x<b*p.y&&d*p.y<c*p.x) return true;
if(a*p.x>b*p.y&&d*p.y>c*p.x) return true;
return false;
}
double dist(Point x,Point y)
{
return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*((x.y-y.y)));
}
Point GetPoint(StraightLine x,StraightLine y) //得到两直线的交点 前提有一个交点。
{
Point ans;
ans.y=(y.C*x.A-x.C*y.A)/(y.A*x.B-x.A*y.B);
ans.x=(y.C*x.B-x.C*y.B)/(x.A*y.B-y.A*x.B);
return ans;
}
Point change(Point p)
{
Point ans;
StraightLine x,y;
x.A=(double)a,x.B=(double)-b,x.C=0.;
y.A=(double)c,y.B=(double)-d,x.C=(p.y*b-p.x*a);
ans.x=dist(p,GetPoint(x,y));
x.A=(double)c,x.B=(double)-d,x.C=0.;
y.A=(double)a,y.B=(double)-b,x.C=(p.y*d-p.x*c);
ans.y=dist(p,GetPoint(x,y));
return ans;
}
bool cmp(Point x,Point y)
{
if(x.x==y.x)
return x.y>y.y;
else return x.x<y.x;
}
int LIS(vector<double>& v)
{
int counter=-1,len=(int)v.size();
for(int i=0; i<=len+1; i++)
dp[i]=1e20;
for(int i=0; i<len; i++)
{
int k=lower_bound(dp,dp+len,v[i])-dp;
dp[k]=v[i];
counter=max(k,counter);
}
return counter+1;
}
int main()
{
int ncase;
cin>>ncase;
while(ncase--)
{
scanf("%d%d%d%d%d",&n,&a,&b,&c,&d);
int k=0;
while(n--)
{
Point temp;
scanf("%lf%lf",&temp.x,&temp.y);
if(is_inside(temp))
{
point[k++]=change(temp);
}
}
sort(point,point+k,cmp);
vector<double>num;
for(int i=0; i<k; i++)
num.push_back(point[i].y);
cout<<LIS(num)<<endl;
}
return 0;
}
nyoj 1279 (河南省第九届ACM比赛 D 题)的更多相关文章
- 每天一套题打卡|河南省第九届ACM/ICPC
A 表达式求值 表达式求值:可以用递归求解,也可以用栈模拟,考过多次. 类似题目:NYOJ305,NYOJ35 用栈模拟做法: #include <stdio.h> #include &l ...
- 河南省第十一届ACM大学生程序设计竞赛
nyoj-1365-山区修路 内存限制:128MB 时间限制:3000ms 特判: No通过数:4 提交数:4 难度:3 题目描述: SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江.B水之间, ...
- ACM比赛经验
这篇博客是转别人的,觉得很好,希望能在以后的现场赛中用上:ACM比赛经验 推荐此篇文章打印,与模板放在一起. 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果, ...
- “玲珑杯”ACM比赛 Round #12题解&源码
我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧! A ...
- “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】
A -- simple math problem Time Limit:2s Memory Limit:128MByte Submissions:1599Solved:270 SAMPLE INPUT ...
- 每天一套题打卡|河南省第十一届ACM/ICPC
A 计划日 题意:已知李明在YYYY年MM月DD日星期W订了学习计划,现在想看看李明N天后的完成情况和个人总结,你能告诉我那天的日期和星期几吗? 模拟日期计算: 计算星期可以用基姆拉尔森公式 //中国 ...
- ACM比赛_注意
ACM比赛_注意: 比赛前: 1.前一天早一点睡觉 2.避免参加激烈的活动,以免比赛时精力不足; 3.少喝水,并提前上厕所; 4.把账号,密码都准备好,放在txt中 5.提前创建多个程序(etc.10 ...
- “玲珑杯”ACM比赛 Round #19 B -- Buildings (RMQ + 二分)
“玲珑杯”ACM比赛 Round #19 Start Time:2017-07-29 14:00:00 End Time:2017-07-29 16:30:00 Refresh Time:2017-0 ...
- “玲珑杯”ACM比赛 Round #1
Start Time:2016-08-20 13:00:00 End Time:2016-08-20 18:00:00 Refresh Time:2017-11-12 19:51:52 Public ...
随机推荐
- TIdHTTPServer制作REST中间件
TIdHTTPServer制作REST中间件 使用DELPHI7+INDY9开发 // 陈新光 2017-2-21// LIS数据同步服务器// 浏览器输入:http://127.0.0.1:8000 ...
- 邁向IT專家成功之路的三十則鐵律 鐵律二十八 IT人教學之道-速戰
所謂IT人教學之道是指可善用在工作之中帶領新人快速上手,或是使用在生活中指導他人迅速學會某項技能的重要經驗.相信大家都有當過新手被指導的體驗,也有擔任過資深的老手帶領新人的經驗.然而您可能不知道,即便 ...
- sublime text 3和sublime text 2的 package control 插件 代码
SECURITY NOTICE: The Python code used by this method does not use SSL because Sublime Text on Linux ...
- create a backdoor deb package
以下介绍怎样制作包括后门的deb安装包.以tree为例进行说明.利用apt-get下载安装包.--download-only表示仅仅下载不做其它处理. root@deb:~#apt-get downl ...
- CentOS7配置opencv for python && eclipse c/c++[更新]
更改前的安装过程有些问题,主要是ffmpeg-devel的安装部分,这里重新说一下 两种安装方法: 第一种,直接: # yum install numpy opencv* 这种方法安装了之后,能够在p ...
- 小贝_mysql主从复制作用以及案例
mysql主从复制 简要: 一.mysql用户授权 二.mysql bin-log日志 三.mysql主从复制 一.mysql用户授权 1.命令 2.作用:进行权限控制 3.样例: (备注: 同意 ...
- MongoDB之增删改查(一)
本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...
- Unity3d 新建xml 读取xml
在游戏开发中.Xml常常被用来作为技能配置.地图配置.人物动作配置等配置文件. Unity3d内置的Xml库让我们非常方便地就能够新建Xml和读取Xml. 以下是一个样例,新建了一个Xml文档.而且读 ...
- Google Guava之Optional优雅的使用null
为什么使用optional 使用Optional<T>除了简化粗鲁的if(null == object).降低函数的复杂度.增加可读性之外,它是一种傻瓜式的防护,Optional<T ...
- #ZgotmplZ go web 开发 base64 图片显示
Go Web开发,用Base64作为图片URL时遇到#ZgotmplZ的问题 - 简书 https://www.jianshu.com/p/54fc25da7c4f // var imgBase64 ...