CF 187D BRT Contract
传送门
给了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的更多相关文章
- CF187D BRT Contract
考虑如果哪次经过了红灯则显然已经和出发的时间没关系了. 然后我们需要做的是怎么样找到最近的一个是红灯的点. 然后实际下是我们做一个前缀和:\(L_i = \sum d_i\) 然后求\(\min (L ...
- WCF学习之旅—基于Fault Contract 的异常处理(十八)
WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...
- 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 ...
- 重新想象 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 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- cf Round 613
A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
- java-collections.sort异常Comparison method violates its general contract!
转载:http://www.tuicool.com/articles/MZreyuv 异常信息 java.lang.IllegalArgumentException: Comparison metho ...
- ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...
- [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现
1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...
随机推荐
- Android逆向之旅---基于对so中的函数加密技术实现so加固
一.前言 今天我们继续来介绍so加固方式,在前面一篇文章中我们介绍了对so中指定的段(section)进行加密来实现对so加固 http://blog.csdn.net/jiangwei0910410 ...
- 20180708-Java变量类型
public class Test{ public void pupAge(){ int age = 0; age = age + 7; System.out.println("Puppy ...
- [CSP-S模拟测试110]题解
也许是最后一篇了. A.最大或 不错的签到题. 对于二进制位来说,高位的一个1比低位的所有1的贡献总和还要大. 显然,$r$必选,因为$r$中所有1的相对考前.那么考虑如何构造另一个数. 首先$l$和 ...
- [CSP-S模拟测试97]题解
A.小盆友的游戏 感觉题解解释的很牵强啊……还是打表找规律比较靠谱 对于每个人,它构造了一个期望函数$f(x)$,设它的跟班个数为$cnt[x]$,那么令$f(x)=2^{cnt[x]}-1$(??鬼 ...
- ST表——————一失足成千古恨系列2
在此先祝自己这个系列写的越少越好qwq(保证不超过4篇(flag已立)) 考试原题:(绝壁是看完复联出的) 第一反应:线段树??不对,是st表.嗯,没错.哎,st表咋写来着??完了凉了. 结果:写暴搜 ...
- (\w+)\s*, \s*(\w+)
\s表示空格 \w表示任何字符,字母数字下划线 _就表示下划线
- DEDECMS为文章添加NEW标志图片
找到extend.func.php添加自定义函数: function shownewimg($pubtime){$ntime = time();$tagtime = $pubtime;$day3 = ...
- HTTP权威指南-学习笔记
目录 HTTP权威指南-学习笔记 HTTP: Web的基础 URL与资源 HTTP报文 连接管理 HTTP结构 Web服务器 代理 缓存 集成点: 网关,隧道及中继 Web机器人 识别,认证与安全 客 ...
- 爬虫(十一)—— 请求库(三)pypeteer请求库
曾经使用模拟浏览器操作(selenium + webdriver)来写爬虫,但是稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容易就可以 ...
- out.write()和out.print()区别,jsp注释区别
out.write()和out.print()结果一样,都是输出内容 前者输出html内容 后者输出变量 5 JSP注释 我们现在已经知道JSP是需要先编译成.java,再编译成.class的.其中& ...