考虑如果哪次经过了红灯则显然已经和出发的时间没关系了。

然后我们需要做的是怎么样找到最近的一个是红灯的点。

然后实际下是我们做一个前缀和:\(L_i = \sum d_i\)

然后求\(\min (L_y - L_i) \mod (g + r) > g\)

然后在值域上动态开点线段树,区间查询\(min\)即可。

倒过来处理一下。

//code by fhq_treap
#include<iostream>
#include<cstdio>
#define ll long long
#define N 100005 int n,g,r;
int mod;
ll d[N],f[N]; struct P{
int L,R;
ll mn;
P(){mn = 1e18;}
}T[N * 60]; int cnt; #define mid ((l + r) >> 1)
#define ls(x) T[x].L
#define rs(x) T[x].R int Root; inline void up(int u){T[u].mn = std::min(T[ls(u)].mn,T[rs(u)].mn);} inline void change(int &u,int l,int r,int p,int v){
if(!u)u = ++cnt;
// std::cout<<u<<" "<<l<<" "<<r<<" "<<p<<" "<<v<<std::endl;
if(l == r){
T[u].mn = v;
return ;
}
if(p <= mid)
change(ls(u),l,mid,p,v);
else
change(rs(u),mid + 1,r,p,v);
up(u);
} inline ll query(int u,int l,int r,int tl,int tr){
// std::cout<<u<<" "<<l<<" "<<r<<" "<<tl<<" "<<tr<<std::endl;
if(tl > tr)return 1e18;
if(!u)return 1e18;
if(tl <= l && r <= tr)return T[u].mn;
ll ans = 1e18;
if(tl <= mid)ans = std::min(ans,query(ls(u),l,mid,tl,tr));
if(tr > mid)ans = std::min(ans,query(rs(u),mid + 1,r,tl,tr));
return ans;
} #define root Root,0,mod - 1 int q; int main(){
scanf("%d%d%d",&n,&g,&r);
mod = g + r;
for(int i = 1;i <= n + 1;++i)
scanf("%lld",&d[i]),d[i] = d[i - 1] + d[i];
for(int i = n;i;-- i){
int t = mod - d[i] % mod;
ll nex = 1e18;
nex = std::min(nex,query(root,std::max(0,g - t),mod - 1 - t));
if(g - t < 0)
nex = std::min(nex,query(root,g - t + mod,mod - 1));
if(nex != 1e18)
f[i] = d[nex] - d[i] + (mod - (d[nex] - d[i]) % mod) + f[nex];
else
f[i] = d[n + 1] - d[i];
change(root,d[i] % mod,i);
}
scanf("%d",&q);
int las = 0;
while(q -- ){
int t;
scanf("%d",&t);
t = t ^ las;
int tt = t % mod;
ll nex = 1e18;
nex = std::min(nex,query(root,std::max(0,g - tt),mod - 1 - tt));
if(g - tt < 0)
nex = std::min(nex,query(root,g - tt + mod,mod - 1));
// std::cout<<nex<<std::endl;
if(nex == 1e18)
std::cout<<t + d[n + 1]<<std::endl,las = (t + d[n + 1]) % 2147483647;
else
std::cout<<d[nex] + (mod - (d[nex] + t) % mod) + f[nex] + t<<std::endl,las = (d[nex] + (mod - (d[nex] + t) % mod) + f[nex] + t) % 2147483647;
}
}

CF187D BRT Contract的更多相关文章

  1. CF 187D BRT Contract

    传送门 给了60分的nq暴力还是很资磁的!!! 基本上想的跟正解差不多了但是刚T2去了就没想细节QAQ 大概就是我们逆序求一下每一个点从0时刻开始走到终点需要用的时间f 我们需要找到它遇到的第一个红灯 ...

  2. WCF学习之旅—基于Fault Contract 的异常处理(十八)

       WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...

  3. 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图

    [源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...

  4. java-collections.sort异常Comparison method violates its general contract!

    转载:http://www.tuicool.com/articles/MZreyuv 异常信息 java.lang.IllegalArgumentException: Comparison metho ...

  5. JDK7的Comparison method violates its general contract异常

    1.摘要 前一阵遇到了一个使用Collections.sort()时报异常的问题,跟小伙伴@zhuidawugui 一起排查了一下,发现问题的原因是JDK7的排序实现改为了TimSort,之后我们又进 ...

  6. 厦门BRT 硬币型非接触式IC卡分析

    前几天去厦门玩顺便多买了一张BRT的票 也就是如图所示的这种硬币型非接触式IC卡 回来之后用Proxmark3分析了卡内数据得到如下16进制dump内容 UID.发卡日期时间. 最近好懒 懒得写了 有 ...

  7. P6 Enterprise Project Portfolio Contract Management

    Find documentation for Primavera products here: Primavera Cloud Services Primavera Prime Primavera P ...

  8. 重新想象 Windows 8 Store Apps (37) - 契约: Settings Contract

    [源码下载] 重新想象 Windows 8 Store Apps (37) - 契约: Settings Contract 作者:webabcd 介绍重新想象 Windows 8 Store Apps ...

  9. 重新想象 Windows 8 Store Apps (38) - 契约: Search Contract

    [源码下载] 重新想象 Windows 8 Store Apps (38) - 契约: Search Contract 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 ...

随机推荐

  1. Java(12)方法的重载

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201592.html 博客主页:https://www.cnblogs.com/testero ...

  2. 离线状态迁移Anaconda虚拟环境

    离线状态迁移Anaconda虚拟环境 同样是项目需求,需要布署的服务器上的Anaconda安装到了普通账户下 而后续所有的内容都需要通过root账户进行操作,而服务器已经布署,联网比较麻烦 本文提出, ...

  3. spring social实现百度登录

    在早期我写过一篇spring social理解的文章,介绍了一些spring social的概念,但是没有提供一个例子.在这篇博客中,提供一个简单的spring social的例子,实现 百度登录,那 ...

  4. 编译qwt遇到的问题

    在windows下使用mingw编译从git上下载的qwt工程下的tests时一直提示一下错误: error: undefined reference to `qMain(int, char**)' ...

  5. Zabbix 4.4 离线安装 使用mariadb的踩坑,无法停止服务

    先分享一个网站,之前就没注意过有这个网站,不知道是啥时候开放的.里面分享了N多zabbix的模板. https://share.zabbix.com/ 报错如下 Unsupported charset ...

  6. Maven 问题 Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:3.0.0-M1 的处理

    一.问题描述 Maven项目报错,该项目是导入的项目,然后再通过开发工具打开项目时,pom.xml文件报错. 并且新建Maven Project 也会报错. 二.报错详细Failure to tran ...

  7. vue脚手架配置代理

    vue.config.js配置具体代理规则 module.exports = { devServer: { proxy: { '/api1': { // 匹配所有以 '/api1'开头的请求路径 ta ...

  8. MySQL之DDL数据定义语言:库、表的管理

    库的管理 常用命令 #创建库 create database if not exists 库名 [ character set 字符集名]; create database if not exists ...

  9. 查看Git提交的代码统计

    1,提交Top5: git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5 2,某用户提交的代码统计 git log ...

  10. 常见yaml写法-deployment

    apiVersion: extensions/v1beta1 #接口版本 kind: Deployment #接口类型 metadata: name: cango-demo #Deployment名称 ...