【Codeforces 331D3】Escaping on Beaveractor
题意:给\(b\times b\)的网格,其中有\(n\)个不交叉的箭头。
现在有\(q\)个询问,每个询问包含一个点\((x,y)\),以及一个方向\(dir\)、时间\(t\)。
要求从\((x,y)\)开始沿\(dir\)方向走\(t\)秒,每秒前进一格,到了箭头上就把方向改为箭头的方向。
问最后会到哪里。如果会走出网格的话就输出最后一个在网格内的点。
思路:线段树+倍增。
先想一个naive的做法。
我们先naive地求出每一个点下一步会朝向那个方向,
然后倍增地搞从某个点走多少步会到哪里。
那么这个是\(O(b^2\ log\ t)\)的。
下面来考虑优化。
首先发现我们肯定不用把所有的点都拎出来。
我们只需要可能会用到的点。
首先每一个箭头的尾端肯定会用到。
从尾端、询问点走出去碰到的第一个在箭头上的点肯定会用到。
其它的就不用了。
那么我们现在要求的是一堆这样的询问:
给一堆点和一堆方向,求从它们走出去会碰到箭头上的哪一点。
那分方向讨论后就变成一个区间赋最大值,单点求值的问题。
果断zkw线段树优化。但是分方向讨论好难写啊qwq
那么后面就倍增从某个点开始走几条边(边就是碰到另一个可能会用到的点)之后到了那个点,需要多少时间。
然后就是这里爆long long了,\((1<<50)*10^5 \geq LongLongMax\)!\(wa43\)了半天。
那么查询的时候倍增完最后直接沿着那时的方向再走一点就好了。
【Codeforces 331D3】Escaping on Beaveractor的更多相关文章
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
- 【Codeforces 429D】 Tricky Function
[题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...
- 【Codeforces 670C】 Cinema
[题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...
- 【codeforces 515D】Drazil and Tiles
[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...
随机推荐
- canvas-star6-drawMoon.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 云计算的三种服务模式:IaaS, PaaS, SaaS
IaaS: Infrastructure as a Service 基础设施即服务 PaaS: Platform as a Service 平台即服务 SaaS: Software as a Serv ...
- web print
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- 消除2个按钮之间1px细节引起的冲突
1.代码 <!doctype html> <html lang="en"> <head> <meta charset="UTF- ...
- SQLite 知识摘要 --- 事务
在许多时候,我们在使用大数据的时候会发现,尽管sqlite数据库的执行效率已经很快了,但是还是满足不了我们的需求,这时候我们会很容易考虑到使用并发的方式去访问sqlite数据库,但是sqlite数据独 ...
- 【转】Maya Mel – Search String in String
转自:http://schiho.com/?p=179 Hi, this is a little script which returns a 0 or 1 if the searched text ...
- js,H5本地存储
//存储本地存储----setItem(存储名称,数据名称) var c={name:"man",sex:"woman"}; localStorage.setI ...
- Expo大作战(三十五)--expo sdk api之Location!
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- windows下安装Erlang
由于RabbitMQ是用Erlang编写的,因此需要先安装Erlang环境,建议安装的版本新一点.下载地址点我试试 我这里下载的V20.3 x64版本,下载后点击开始安装,基本是一路next(默认设置 ...
- c#所有部门及其下所部门生成树形图(递归算法获取或键值对方式获取)
部门数据库的设计: 代码: /// <summary> /// 获取部门(入口) /// </summary> /// <returns></returns& ...