pro:有一个驴友,以及给定N个表演地点xi和时间ti,驴友的速度不能超过V。 问他在起点为原点和不设置起点的情况下分别最多参观多少个表演。

sol:BZOJ接飞饼见过;clari也在camp的DP专题讲过。  大概是解决这样一类问题,给定N个点,以及一种不等式关系,可以转化为二维平面上的点,然后按照某一维排序,第二维求LIS。(注意是这里的二维坐标不一定是标准的坐标)。

这里不难找到不等式:如果i之后可以访问j,则有|xj-xi|<=V*(tj-ti);这样的话转化为二维关系:

xi+v*ti<=xj+v*tj;   -xi+vti<=-xj+v*tj;

然后求LIS即可。

#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
struct in{
ll x,y;
friend bool operator <(in w,in v){
if(w.x==v.x) return w.y<v.y;
return w.x<v.x;
}
}s[maxn];
ll a[maxn],x[maxn],t[maxn],V; int ans1,ans2;
int main()
{
int N,tot,pos;
scanf("%d",&N);
rep(i,,N) scanf("%lld%lld",&x[i],&t[i]);
scanf("%lld",&V);
rep(i,,N) s[i].x=x[i]+t[i]*V,s[i].y=-x[i]+t[i]*V;
sort(s+,s+N+);
tot=;
rep(i,,N) {
pos=upper_bound(a+,a+tot+,s[i].y)-a;
a[pos]=s[i].y;
if(pos>tot) tot=pos;
}
ans1=tot;
tot=;
rep(i,,N) {
if(s[i].x<||s[i].y<) continue;
pos=upper_bound(a+,a+tot+,s[i].y)-a;
a[pos]=s[i].y;
if(pos>tot) tot=pos;
}
ans2=tot;
printf("%d\n%d\n",ans2,ans1);
return ;
}

CodeForces - 76F:Tourist (旋转坐标系,LIS)的更多相关文章

  1. VPython—旋转坐标系

    使用arrow( )创建三个坐标轴代表一个坐标系,其中X0-Y0-Z0为参考坐标系(固定不动),X-Y-Z为运动坐标系,这两个坐标系原点重合,运动坐标系可以绕参考坐标系或其自身旋转.在屏幕上输出一个转 ...

  2. 【bzoj3170】[Tjoi 2013]松鼠聚会 旋转坐标系

    题目描述 有N个小松鼠,它们的家用一个点x,y表示,两个点的距离定义为:点(x,y)和它周围的8个点即上下左右四个点和对角的四个点,距离为1.现在N个松鼠要走到一个松鼠家去,求走过的最短距离. 输入 ...

  3. 【bzoj2989】数列 KD-tree+旋转坐标系

    题目描述 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]|. 2种操作(k都是正整数): 1.Mo ...

  4. [bzoj2989]数列_KD-Tree_旋转坐标系

    数列 bzoj-2989 题目大意:题目链接. 注释:略. 想法:显然,我们用x和a[x]两个值建立笛卡尔坐标系. 两个点之间的距离为曼哈顿距离. 修改操作就是插入... 查询操作就是查询一个点周围的 ...

  5. [SDOI2018]物理实验 set,扫描线,旋转坐标系

    [SDOI2018]物理实验 set,扫描线,旋转坐标系 链接 loj 思路 先将导轨移到原点,然后旋转坐标系,参考博客. 然后分线段,每段的贡献(三角函数值)求出来,用自己喜欢的平衡树,我选set. ...

  6. HDU 6538 Neko and quadrilateral(极角排序+旋转坐标系)

    这道题简直太好了,对于计算几何选手需要掌握的一个方法. 首先对于求解四边形面积,我们可以将四边形按对角线划分成两个三角形,显然此时四边形的面积最大最小值就变成了求解里这个对角线最近最远的点对. 对于此 ...

  7. codeforces 340C Tourist Problem

    link:http://codeforces.com/problemset/problem/340/C 开始一点也没思路,赛后看别人写的代码那么短,可是不知道怎么推出来的啊! 后来明白了. 首先考虑第 ...

  8. Android canvas rotate():平移旋转坐标系至任意原点任意角度-------附:android反三角函数小结

    自然状态下,坐标系以屏幕左上角为原点,向右是x正轴,向下是y正轴.现在要使坐标系的原点平移至任一点O(x,y),且旋转a角度,如何实现? 交待下我的问题背景,已知屏幕上有两点p1和p2,构成直线l.我 ...

  9. Codeforces Gym101246H:``North-East''(LIS+思维)

    http://codeforces.com/gym/101246/problem/H 题意:在二维平面上有n个点,从最左下角的点出发,每次走只能走在当前的点的右上角的点(xj > xi, yj ...

随机推荐

  1. 长乐国庆集训Day4

    T1 一道数论神题 题目 [题目描述] LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有点权. LYK想把这个图删干净,它的方法是这样的.每次选择一个点,将它删 ...

  2. 深度学习-Wasserstein GAN论文理解笔记

    GAN存在问题 训练困难,G和D多次尝试没有稳定性,Loss无法知道能否优化,生成样本单一,改进方案靠暴力尝试 WGAN GAN的Loss函数选择不合适,使模型容易面临梯度消失,梯度不稳定,优化目标不 ...

  3. python罗列oss文件

    # 列举文件 import oss2 from itertools import islice AccessKeyId = "your accesskeyid" AccessKey ...

  4. yum命令安装jdk

    1.查看是否已安装JDK,卸载 yum list installed |grep java java--openjdk.x86_64 :.b13.el7_5 @updates java--openjd ...

  5. Python 基础-import 与 from...import....

    简单说说python import与from-import- 在python用import或者from-import来导入相应的模块.模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需 ...

  6. JVM性能优化--Java的垃圾回收机制

    一.Java内存结构 1.Java堆(Java Heap) java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例 ...

  7. JS把格林威治时间转换为北京标准时间

    function fermitTime(time){ var now = new Date(time); var year = now.getFullYear(); ; var date= now.g ...

  8. 【转载】 C#使用Newtonsoft.Json组件来反序列化字符串为对象

    在Asp.Net网站开发的过程中,很多时候会遇到对象的序列化和反序列化操作,Newtonsoft.Json组件是专门用来序列化和反序列化操作的一个功能组件,引入这个DLL组件后,就可使用JsonCon ...

  9. css3 media媒体查询器用法总结(附js兼容方法)

    css3 media媒体查询器用法总结 标签:class   代码   style   html   sp   src 随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得 ...

  10. WinRAR捆绑木马

    准备好木马文件 server.exe 准备一个小游戏 趣味数学计算 压缩 创建自解压格式压缩文件 自解压选项设置 解压路径设置 设置程序 模式设置 压缩完成 使用 开始玩游戏