传送门

给了60分的nq暴力还是很资磁的!!!

基本上想的跟正解差不多了但是刚T2去了就没想细节QAQ

大概就是我们逆序求一下每一个点从0时刻开始走到终点需要用的时间f 我们需要找到它遇到的第一个红灯 这个就是模意义下的一段区间最小值 (把l[i]看做下标 i作为权值)这个可以通过动态开点线段树实现 or 离散化+权值线段树

对于每次询问一样的操作 找到它遇到的第一个红灯然后 + f就可以了qwq

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define inf 2002122500
#define ll long long
#define mxn 100100
using namespace std;
ll L[mxn],r,g,pre[mxn],lsh[mxn];
int mn[mxn*20],ls[mxn*20],rs[mxn*20];
int n,flag,poi;
ll f[mxn],t[mxn];
void pushup(int x){mn[x]=min(mn[ls[x]],mn[rs[x]]);}
void modify(int &x,ll l,ll r,ll d,int val)
{
if(!x) x=++poi;
if(l==r){mn[x]=min(mn[x],val);return;}
int mid=l+r>>1;
if(d<=mid) modify(ls[x],l,mid,d,val);
else modify(rs[x],mid+1,r,d,val);
pushup(x);
}
ll query(int x,ll l,ll r,ll LL,ll RR)
{
if(!x||RR<LL) return inf;
if(l>=LL&&r<=RR) return mn[x];
int mid=l+r>>1;ll ans=inf;
if(LL<=mid) ans=min(ans,query(ls[x],l,mid,LL,RR));
if(RR>mid) ans=min(ans,query(rs[x],mid+1,r,LL,RR));
return ans;
}
int rt,q;ll p;
int main()
{
scanf("%d%I64d%I64d",&n,&g,&r);
memset(mn,48,sizeof(mn));p=g+r;
for(int i=1;i<=n+1;i++) scanf("%I64d",&L[i]),L[i]+=L[i-1];
for(int i=n;i;i--)
{
ll _t=(p-L[i]%p)%p;
ll mn=query(rt,0,p-1,max(0ll,g-_t),p-_t-1);
if(g-_t<0) mn=min(mn,query(rt,0,p-1,(p+g-_t),p-1));
if(mn>n) f[i]=L[n+1]-L[i];
else f[i]=L[mn]-L[i]+(p-(L[mn]-L[i])%p)+f[mn];
modify(rt,0,p-1,L[i]%p,i);
}
scanf("%d",&q);
while(q--)
{
ll _t,ans;scanf("%I64d",&_t);
ll _=_t%p;
ll mn=query(rt,0,p-1,max(0ll,g-_),p-_-1);
if(g-_<0) mn=min(mn,query(rt,0,p-1,(g-_+p),p-1));
if(mn>n) ans=L[n+1]+_t;
else ans=L[mn]+_t+(p-(L[mn]+_t)%p)+f[mn];
printf("%I64d\n",ans);
}
return 0;
}

我现在怎么开始用_做变量名了 越来越毒瘤了(

CF 187D BRT Contract的更多相关文章

  1. CF187D BRT Contract

    考虑如果哪次经过了红灯则显然已经和出发的时间没关系了. 然后我们需要做的是怎么样找到最近的一个是红灯的点. 然后实际下是我们做一个前缀和:\(L_i = \sum d_i\) 然后求\(\min (L ...

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

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

  3. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  4. 重新想象 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 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

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

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

  8. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  9. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

随机推荐

  1. oracle中where子句和having子句中的区别

    1.where  不能放在GROUP BY 后面2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE3.WHERE  后面的条件中不能有聚集函数 ...

  2. 洛谷P1462 通往奥格瑞玛的道路(二分+spfa,二分+Dijkstra)

    洛谷P1462 通往奥格瑞玛的道路 二分费用. 用血量花费建图,用单源最短路判断 \(1\) 到 \(n\) 的最短路花费是否小于 \(b\) .二分时需要不断记录合法的 \(mid\) 值. 这里建 ...

  3. Linux学习篇(一)-初识Linux

    开源许可协议 简单了解开源许可协议,一张图读懂. linux 系统特点 linux 特点安全性高.高可用.高性能 稳定且有效率 免费或少许免费 漏洞少且快速修补 多任务多用户 更加安全的用户及文件权限 ...

  4. uni-app 云打包证书生成笔记

    一.android 云打包生成证书 1.jdk和jre安装,配置环境 2.在 C:\Users\Administrator\.android 文件夹下执行:keytool -genkey -alias ...

  5. 网络流强化-HDU 3338-上下界限制最大流

    题意是: 一种特殊的数独游戏,白色的方格给我们填1-9的数,有些带数字的黑色方格,右上角的数字代表从他开始往右一直到边界或者另外一个黑格子,中间经过的白格子的数字之和要等于这个数字:左下角的也是一样的 ...

  6. 编程语言 - 脚本编程 - JavaScript/Jquery/Ajax/XML/JSON/ActionScript3

    事件处理onmouseover <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g ...

  7. CSS中设置字体样式

    <style type="text/css"> body{ font-family: SimHei,"微软雅黑",sans-serif; } < ...

  8. css中word-break、word-wrap和white-space的区别

    css中word-break.word-wrap和white-space的区别 :https://baijiahao.baidu.com/s?id=1578623236521030997&wf ...

  9. tab区域折叠

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>co ...

  10. pjhp实现使用redis来存储session数据

    #设置php处理session的方式为redis,并配置redis的访问地址(因为在redis中绑定的访问地址为127.0.0.1,所以就没有设置访问密码,如果需要请自行搜索)#因为不想修改php.i ...