[PKUSC2018]星际穿越(倍增)

题意:n个点的图,点i和[l[i],i)的所有点连双向边。每次询问(l,r,x)表示x到[l,r]的所有点的最短路径长度和。

首先这题显然可以线段树优化建图,但是需要比较好的常数才能通过45分,还需要发掘性质。

先不考虑往右走的情况,对于一个点x,每个点i与x的最短距离一定形成一个个连续区间,即:设f[i][j]表示i走j步能到的最左的点,则$f[i][j+1]=\min\limits_{k=f[i][j]}^{i-1}l[k]$。所以只要往前扫一遍就能求出f[i]数组。

接着考虑往右走的情况,可以证明,一个点最多只需要往右走一次,所以只需要往后扫一遍就能求出新的f[i]数组。这样我们记录一个前缀和就可以在$O(n^2)$复杂度内解决问题。

可以发现f[i][j]这个数组显然是可以倍增优化的,直接套上RMQ类似的模板即可。

这里有一个简化代码的方法,就是f[i][j]改为表示[i..n]的所有点走$2^j$步之后能到达的最靠前的点,这样就可以直接倍增转移了。但是这样就要判断i最后是否需要先往右走一步,这里又有一个小技巧:先强制往左走一步,剩下的直接处理即可。

总码长不到1k。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 4 typedef long long ll;
 5 using namespace std;
 6
 7 const int N=300010;
 8 int n,Q,l,r,x,L[N],to[20][N];
 9 ll sm[20][N];
10
11 int gcd(int a,int b){ return b ? gcd(b,a%b) : a; }
12
13 ll calc(int l,int r){
14     if (L[r]<=l) return r-l;
15     ll ans=r-L[r]; r=L[r]; int tot=1;
16     for (int i=19; ~i; i--)
17         if (to[i][r]>l) ans+=sm[i][r]+tot*(r-to[i][r]),r=to[i][r],tot+=1<<i;
18     return ans+(r-l)*(tot+1);
19 }
20
21 int main(){
22     freopen("pkua.in","r",stdin);
23     freopen("pkua.out","w",stdout);
24     scanf("%d",&n); L[1]=1;
25     rep(i,2,n) scanf("%d",&L[i]);
26     to[0][n]=L[n]; sm[0][n]=n-L[n];
27     for (int i=n-1; i; i--) to[0][i]=min(to[0][i+1],L[i]),sm[0][i]=i-to[0][i];
28     rep(i,1,19) rep(j,1,n) if (to[i-1][j]){
29         to[i][j]=to[i-1][to[i-1][j]];
30         sm[i][j]=sm[i-1][j]+sm[i-1][to[i-1][j]]+(to[i-1][j]-to[i][j])*(1ll<<(i-1));
31     }
32     for (scanf("%d",&Q); Q--; ){
33         scanf("%d%d%d",&l,&r,&x);
34         ll a=calc(l,x)-calc(r+1,x),b=r-l+1; int d=gcd(a%b,b);
35         printf("%lld/%lld\n",a/d,b/d);
36     }
37     return 0;
38 }

原文地址:https://www.cnblogs.com/HocRiser/p/9166459.html

时间: 2024-10-08 14:43:57

[PKUSC2018]星际穿越(倍增)的相关文章

[PKUSC2018]星际穿越

[PKUSC2018]星际穿越 题目大意: 有一排编号为\(1\sim n\)的\(n(n\le3\times10^5)\)个点,第\(i(i\ge 2)\)个点与\([l_i,i-1]\)之间所有点有双向边.\(q(q\le3\times10^5)\)次询问,每次对于\(l_i,r_i,x_i\),求\(\frac{\sum_{y=l_i}^{r_i}dist(x_i,y)}{r_i-l_i+1}\). 思路: 首先可以得到一个基本结论,从\(x_i\)出发到\(y\)的最短路中,一定存在至少

「PKUSC2018」星际穿越 (70分做法)

5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 27  Solved: 11[Submit][Status][Discuss] Description 有n个星球,它们的编号是1到n,它们坐落在同一个星系内,这个星系可以抽象为一条数轴,每个星球都是数轴上的一个点, 特别地,编号为i的星球的坐标是i. 一开始,由于科技上的原因,这n个星球的居民之间无法进行交流,因此他们也不知道彼此的存在. 现在,这些星球独

《星际穿越》关于时间与空间的思考

看完了近期比较火的影片星际穿越,重新刷新了我对世界对宇宙的价值观,可以说这是一部较为实体化把理论把宇宙呈现在观众眼中的影片,让那些不太明白理论的人同样可以感受到宇宙的奥秘,穿梭在宇宙之间,领略着超乎自然神奇力量的世界里,真是一个心旷神怡.相信每一个看完影片的观众都会为之称赞,称赞着自然法则的规律,称赞着科学的伟大,称赞着导演的构思与想象力.影片在现在看来太超前了,也尊重科学,对于科学理论的描述还是最大限度的贴近现有的物理学,除非真的到了那种无法解释而电影又必须用到的地方,导演才展开强大的想象力.

“星际穿越”观后感(宇宙只是界面,科技永远触摸不到世界的本原)

今天刚看完诺兰的“星际穿越”,三个小时的电影确实给人一种震憾的感觉.看完后总有“一种声音”催促自己写上几行. 现在流行各类PAD.智能手机.当阅读长文时,在灵敏的触摸屏上用手指上下拖拉,屏幕上的文字不停快速移动,仿佛屏后有一长卷,在你的指挥下忠实地翻页.其实,这只是一种操作界面,为了照顾我们在日常生活中的习惯,这样安排就无需另附操作手册了.用手指上下拖拉表示滚屏,也可用手指“重按”表示上移,“轻按”表示下移.说到这儿,可能有人会问,这些话不是废话嘛. 莫急,再请用我们的脑子顺便引申一下,不经意间

爱能被量化吗 - 《星际穿越》的两个终极问题

反映宇宙与生命题材的电影,一直都是很难看的,为什么?因为太空里都是慢动作,节奏太慢,不好看:看过天宫一号的“我已出舱,感觉良好”的转播镜头吧?等了十分钟才动了一点点:不要听人吹嘘<2001-太空之旅>如何博大精深,老老实实说人话,正常人坐不住20分钟就得换频道.也不要相信什么最后穿越时空的表现有何震撼,不就是几条彩带么?震什么憾?库布里克的臭脚不要去捧.不好看就是不好看:不要往哲学上靠,要思考哲学问题我直接看书不成么?何必来看你这电影?当年说老库憋了好几年才拍完,很多人硬说是精益求精,依我看那

(纪录片)《星际穿越》中的科学 The Science of Interstellar

简介: 导演: Gail Willumsen编剧: Gail Willumsen主演: 克里斯托弗·诺兰 / 乔纳森·诺兰 / 基普·索恩 / 马修·麦康纳类型: 纪录片 / 短片制片国家/地区: 美国语言: 英语上映日期: 2014-11-25(美国)片长: 41分钟又名: 探索频道:星际穿越的科学IMDb链接: tt4415360 主要内容: 探索频道特别节目<星际穿越>的科学(The Science of Interstellar).<星际穿越>邀请到了物理学家基普·索恩担任

由星际穿越联想到的十维空间

首先声明,本文所述内容纯属个人观点. 库伯镇楼 诺兰天马行空的想象力已然达到了电影尚无以企及的高度,虫洞.高维度空间.黑洞.相对时间,诺兰在电影里面把这些都实现了,让人不可思议,看完这部电影,我不禁思考自身的存在,思考自身所处的空间维度,并花了3个多小时从零维空间推算到十维空间. 零维空间 零维空间是一个点,这个点虽然很简单,但所有维度都是由它组成的. 一维空间 一维空间是由无数个零维空间(点)组成的一条线,我把这条线当做空间的X轴. 二维空间 二维空间是由无数一维空间形成的面,在二维空间,空间

《星际穿越》初解析——一部空前绝后的史诗科学巨作

http://movie.douban.com/review/7188759/ 星际穿越通篇没有一句多余的对白,也没有多余的一个镜头,169分钟超大信息量填满整部电影.这里我打算从两个方面去分析这部电影,一方面是所谓的解析,当然我的天体物理知识有限,只能通过二刷的认知和网上各方面的综合信息得出我的结论,同时也欢迎大家随时指正:另一方面就是从剧作上分析经典桥段和对白,也就是对影片合理性的分析.    一.开篇  从第一镜开始讲.带灰的书架,片名INTERSTELLAR显现.据一位诺兰粉讲,这是诺兰

天体物理学-星际穿越

转载自:?http://www.cnblogs.com/yangpf/p/4148488.html 确实非常喜欢这样的文章,简单的说明白了很多有意思的科学史.天体物理学啊天体物理学.. 以下是原文 本文献给所有爱思考,爱阅读的人 前言 最近去影院看了<星际穿越>,很棒.有种说法是:全体观众都看跪了,一部分是因为影片太棒了,跪了.一部分则是完全没看明白,跪了.影片中出现了牛顿定律,相对论,虫洞,黑洞等概念,而且对这些概念的解释也是点到为止,有些概念甚至没有做任何说明,这样对不爱理科的文科生来说确