题目描述

  小$Y$十分喜爱光学相关的问题,一天他正在研究折射。
  他在平面上放置了$n$个折射装置,希望利用这些装置画出美丽的折线。
  折线将从某个装置出发,并且在经过一处装置时可以转向,若经过的装置坐标依次为$(x_1,y_1),(x_2,y_2),...(x_k,y_k)$,则必须满足:
  $\bullet \forall j\in (1,k],y_j<y_{j−1}$
  $\bullet \forall j\in (2,k],x_{j−2}<x_j<x_{j−1}or\ x_{j−1}<x_j<x_{j−2}$
  现在他希望你能告诉他,一共有多少种不同的光线能被他画出来,两种光线不同当且仅当经过的折射装置的集合不同。你只需要告诉他答案对${10}^9+7$取模后的结果。


输入格式

第一行一个正整数$n$,表示折射装置的数量。
接下来$n$行,每行两个整数$x_i,y_i$表示折射装置的坐标。


输出格式

输出一行一个整数,表示答案对${10}^9+7$取模后的结果。


样例

样例输入:

4
2 2
3 1
1 4
4 3

样例输出:

14


数据范围与提示

对于$10\%$的数据:$n\leqslant 700,1\leqslant x_i,y_i\leqslant N$
对于$20\%$的数据:$n\leqslant 1,000,1\leqslant x_i,y_i\leqslant N$
对于$50\%$的数据:$n\leqslant 4,000,|x_i|,|y_i|\leqslant {10}^9$
对于$100\%$的数据:$n\leqslant 6,000,|x_i|,|y_i|\leqslant {10}^9$
所有数据满足$\forall i\neq j,x_i\neq x_j\ and\ y_i\neq y_j$。


题解

考试的时候上去就将$y_i$排了个序,然后我就死了……

这道题就是让你找形如下图的图形有多少个:

因为给$y_i$排序不好处理,所以我们考虑给$x_i$排序。

那么我们考虑$DP$,设$dp[i][0/1]$表示第$i$个点为顶端,向左或向右的方案数。

那么我们可以列出状态转移方程:

  $\alpha.\forall y_j<y_i,dp[i][0]\leftarrow dp[j][1]$。

  $\beta.\forall y_j>y_i,dp[j][1]\leftarrow dp[k][0]|x_k>x_j\ and\ y_k<y_i$。

时间复杂度:$\Theta(n^2)$。

期望得分:$100$分。

实际得分:$100$分。


代码时刻

#include<bits/stdc++.h>
using namespace std;
int n;
pair<int,int> p[6001];
int dp[2][6001];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d%d",&p[i].first,&p[i].second);
sort(p+1,p+n+1);
for(int i=1;i<=n;i++)
{
dp[0][i]=dp[1][i]=1;
for(int j=i-1;j;j--)
p[i].second>p[j].second?dp[0][i]=(dp[0][i]+dp[1][j])%1000000007:dp[1][j]=(dp[1][j]+dp[0][i])%1000000007;
}
for(int i=1;i<=n;i++)dp[0][0]=(dp[0][0]+(dp[0][i]+dp[1][i])%1000000007)%1000000007;
printf("%d",(dp[0][0]-n+1000000007)%1000000007);
return 0;
}

rp++

[CSP-S模拟测试]:折射(DP)的更多相关文章

  1. noi2019模拟测试赛(四十七)

    noi2019模拟测试赛(四十七) T1与运算(and) 题意: ​ 给你一个序列\(a_i\),定义\(f_i=a_1\&a_2\&\cdots\&a_i\),求这个序列的所 ...

  2. [考试反思]1109csp-s模拟测试106:撞词

    (撞哈希了用了模拟测试28的词,所以这次就叫撞词吧) 蓝色的0... 蓝色的0... 都该联赛了还能CE呢... 考试结束前15分钟左右,期望得分300 然后对拍发现T2伪了写了一个能拿90分的垃圾随 ...

  3. [考试反思]1003csp-s模拟测试58:沉淀

    稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...

  4. [考试反思]0814NOIP模拟测试21

    前两名是外校的240.220.kx和skyh拿到了190的[暴力打满]的好成绩. 我第5是170分,然而160分就是第19了. 在前一晚上刚刚爆炸完毕后,心态格外平稳. 想想前一天晚上的挣扎: 啊啊啊 ...

  5. csp-s模拟测试98

    csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...

  6. csp-s模拟测试97

    csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...

  7. csp-s模拟测试95

    csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...

  8. csp-s模拟测试93

    csp-s模拟测试93 自闭场. $T1$想到$CDQ$,因为复杂度少看见一个$0$打了半年还用了$sort$直接废掉,$T2$,$T3$直接自闭暴力分都没有.考场太慌了,心态不好. 02:07:34 ...

  9. csp-s模拟测试92

    csp-s模拟测试92 关于$T1$:最短路这一定建边最短路. 关于$T2$:傻逼$Dp$这一定线段树优化$Dp$. 关于$T3$:最小生成树+树P+换跟一定是这样. 深入(?)思考$T1$:我是傻逼 ...

随机推荐

  1. mysqldump - 备份 MySQL 数据库

    参考资料 备份 备份所有数据库中的所有数据(包括系统数据库) –all-databases 通过 --all-databases 选项备份所有的数据库: mysqldump -uroot -p --a ...

  2. C++ bitset的使用

    bitset 一般代替 bool 数组使用,常用于优化空间,因为 bitset 中一个元素只占 1 bit. bitset 的大小在定义使就需要确定.如果想要不定长的 bitset,就需要使用 vec ...

  3. Logistic Regression Algorithm解决分类问题

    在线性回归算法中,我们看到,在training set中,输入矩阵X与向量y的值都是连续的.所以在二维空间中,我们可以用一条直线去模拟X与y的变化关系,寻找参数向量theta的取值.如根据房屋面积预测 ...

  4. 永远让比较函数对相等的值返回false

    今天在刷OJ的时候,有一道题一直Runtime Error,查错出来是比较函数写挂掉了,但是不知道错误在哪,于是查阅资料:永远让比较函数对相等的值返回false 具体可点击此处查看分析:链接 另外,在 ...

  5. PowerShell 远程执行命令

    PowerShell 远程执行命令 最近在做一些自动化的测试工作,在代码实现的过程中需要远程启动/关闭一些服务或者测试机. 我首先想到的是建立一个website,通过网站对一些服务进行操作,但是这样感 ...

  6. vue 数组中嵌套的对象添加新属性--页面更新

    vue 数组中嵌套的对象添加新属性--页面更新:https://www.jianshu.com/p/8f0e5bb13735

  7. [BZOJ 3307]Cow Politics (LCA)

    [BZOJ 3307]Cow Politics (LCA) 题面 给出一棵N个点的树,树上每个节点都有颜色.对于每种颜色,求该颜色距离最远的两个点之间的距离.N≤200000 分析 显然对于每种颜色建 ...

  8. Codeforces 1162E Thanos Nim(博弈)

    一道有意思的博弈题.首先我们考虑一种必败情况,那就是有一方拿光了一堆石子,显然对方是必胜,此时对方可以全部拿走其中的n/2,那么轮到自己时就没有n/2堆,所以此时是必败态.我们先对所有石子堆sort, ...

  9. 04 volatile关键字实现原理

    volatile关键字实现原理 1.volatile关键字的语义分析 作用:让其他线程能够马上感知到某个线程多某个变量的修改 保证可见性 对共享变量的修改,其他线程能够马上感知到 保证有序性 在重排序 ...

  10. CF208E Blood Cousins

    Blood Cousins 题目描述 小C喜欢研究族谱,这一天小C拿到了一整张族谱. 小C先要定义一下k-祖先. x的1-祖先指的是x的父亲 x的k-祖先指的是x的(k-1)-祖先的父亲 小C接下来要 ...