E - Mr.Aoki Incubator

链接

题意:

  数轴上有N个黑点,每个点都有一个方向向右的正速度v。当两个点在同一个位置上重合时,若其中一个是红色,另一个也变成红色。保证没有相同速度或初始坐标。现问你有多少方法染红一些点,使得无穷久后所有点都被染红。 N≤200000

分析:

  首先按照速度v从大到小排序,对于一个点,它左边的点中,坐标x第一个比它的坐标小的,设为L;右边的点中,坐标最后一个比它的坐标大的,设为R。

  那么如果这个点被染色,R-L+1区间的点都将被染色,预处理出每个点对应的区间。问题变成选一些区间,覆盖1到n的问题,dp一下。

代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<cctype>
#include<set>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = , mod = 1e9 + ;
int F[N], sum[N], mn[N], mx[N];
struct Edge{ int v, l, r, x; } A[N];
bool cmp1(const Edge &A,const Edge &B) { return A.v > B.v; }
bool cmp2(const Edge &A,const Edge &B) { return A.l == B.l ? A.r < B.r : A.l < B.l; } // 左端点相同时的排序!!! int main() {
int n = read();
for (int i = ; i <= n; ++i)
A[i].x = read(), A[i].v = read();
sort(A + , A + n + , cmp1); mn[] = A[].x;
for (int i = ; i <= n; ++i) mn[i] = min(mn[i - ], A[i].x);
for (int i = ; i <= n; ++i) {
int l = , r = i - , p = i;
while (l <= r) {
int mid = (l + r) >> ;
if (mn[mid] < A[i].x) p = mid, r = mid - ;
else l = mid + ;
}
A[i].l = p;
}
mx[n] = A[n].x;
for (int i = n - ; i >= ; --i) mx[i] = max(mx[i + ], A[i].x);
for (int i = n; i >= ; --i) {
int l = i + , r = n, p = i;
while (l <= r) {
int mid = (l + r) >> ;
if (mx[mid] > A[i].x) p = mid, l = mid + ;
else r = mid - ;
}
A[i].r = p;
}
sort(A + , A + n + , cmp2);
int p = , Ans = ;
for (int i = ; i <= n; ++i) {
while (A[p].r < A[i].l - )
p ++;
F[i] = (sum[i - ] - sum[p - ] + mod) % mod;
if (A[i].l == ) F[i] = (F[i] + ) % mod;
sum[i] = (sum[i - ] + F[i]) % mod;
if (A[i].r == n) Ans = (Ans + F[i]) % mod;
}
cout << Ans;
return ;
}

AGC 015 E - Mr.Aoki Incubator的更多相关文章

  1. AtCoder Grand Contest 015 E - Mr.Aoki Incubator

    题目传送门:https://agc015.contest.atcoder.jp/tasks/agc015_e 题目大意: 数轴上有\(N\)个点,每个点初始时在位置\(X_i\),以\(V_i\)的速 ...

  2. 【AGC015E】Mr.Aoki Incubator DP

    题目描述 数轴上有\(n\)个人,每个人的位置是\(x_i\),速度是\(v_i\). 最开始有一些人感染了传染病. 如果某一时刻一个正常人和一个被感染的人处于同一位置,那么这个正常人也会被感染. 问 ...

  3. agc015E - Mr.Aoki Incubator(dp)

    题意 题目链接 平面上有$n$个点,每个点都有一个位置$x_i$,和向右的速度$v_i$ 现在要求你对其中的一些点进行染色,当一个点被染色后,在无限距离内与它相遇的点也会被染色 问在可能的$2^n$种 ...

  4. AGC015E Mr.Aoki Incubator

    atcoder luogu 首先可以考虑给一个人\(A\)染色.其他人被染色,要么被本来在后面的速度更快的人染色,要么被在前面的更慢的人染色.然后假设一个速度比最开始那个人慢的人\(B\)最后被染色了 ...

  5. 做题记录 To 2019.2.13

    2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变 ...

  6. AtCoder Grand Contest 015

    传送门 A - A+...+B Problem 题意:n个数最大值a,最小值b,求和的可能数量. #include<cstdio> #include<algorithm> us ...

  7. AtCoder Grand Contest 015 题解

    A - A+...+B Problem 常识 Problem Statement Snuke has N integers. Among them, the smallest is A, and th ...

  8. 【AtCoder】AGC015

    AGC015 A - A+...+B Problem #include <bits/stdc++.h> #define fi first #define se second #define ...

  9. Atcoder训练计划

    争取三天做完一套吧,太简单的就写一句话题解吧(其实也没多少会做的). 自己做出来的在前面用*标记 agc007 *A - Shik and Stone 暴力dfs即可,直接判断个数 *B - Cons ...

随机推荐

  1. 转:spring 的控制反转

    文章一,原文地址:http://blog.sina.com.cn/s/blog_63804f6f0100kfx0.html 控制反转:       IoC(Inversion of Control,控 ...

  2. CentOS针对磁盘IO[jdb2进程]的优化

    CentOS的jdb2进程总是沾满io,查了一些资料后才知道,这个问题源自系统bug,在此记录一下解决办法: 将高IO的磁盘,用以下参数remount即可 mount -t ext4 -o remou ...

  3. scala数据库工具类

    scala的数据库连接池,基于mysql import java.util.concurrent.ConcurrentHashMap import com.jolbox.bonecp.{ BoneCP ...

  4. struts返回json数据

    想要在struts中返回json格式数据有两种办法. 1.使用servlet的输出流 实际上就是在struts中获取response对象的输出流.然后写入你要返回的json数据,本质和用servlet ...

  5. SDWC补题计划

    2018的寒假去了SD的冬令营,因为一班二班难度悬殊,对我很不友好,几乎什么也没学会,但是我把两个班的课件都存了下来,现在慢慢把两个班的例题以及课后题都补一补(毕竟冬令营的钱不能白花). 这些题目横跨 ...

  6. React-Native 之 index.android.bundle

    问题: index.android.bundle  这个bug 我相信很少同学会遇到,然而就是这个问题,困扰了我跟我的同事多天, 各种方法处理:  进入 android 目录  ./gradlew c ...

  7. composer设置国内镜像

    使用composer时,输入命令执行后半天没有反应,并最后是失败的消息. 如下载项目中的框架文件时: composer install 一直没有反应 [注]添加参数-vvv可尽可能多的输出执行信息,帮 ...

  8. Linux下Meepops的搭建

    1.下载跟版本相对应的扩展 http://br.php.net/downloads.php 2.进入到pcntl目录 cd php-5.4.45/ext/pcntl 3.先执行phpize /usr/ ...

  9. 矩阵求逆·学习笔记 $\times$ [$LuoguP4783$]矩阵求逆

    哦?今天在\(luogu\)上fa♂现了矩阵求逆的板子--于是就切了切. 那么我们考虑一个矩阵\(A\),它的逆矩阵记作\(A^{-1}\),其中对于矩阵这个群来讲,会有\(A \cdot A^{-1 ...

  10. BUAA OO 2019 第一单元作业总结

    目录 总 架构 Controller​ Model​ 输入处理 代码静态分析 行数 方法复杂度 UML​ 类图 优点 缺点 坑 输入 非法的空白字符 输入的简并处理 运算 浅拷贝 可变类型与不可变类型 ...