题意:有一张边权为 111 的无向图,对 i∈[2,n]i\in [2,n]i∈[2,n],iii 与 [li,i−1][l_i,i-1][li​,i−1] 间有边。 qqq 次询问 l,r,xl,r,xl,r,x,表示 xxx 与 [l,r][l,r][l,r] 中的所有点的最短路长度的平均值,其中 l<r<xl<r<xl<r<x。

n,q≤3×105n,q\leq 3\times 10^5n,q≤3×105

考场上以为只能往左走,喜提 0 分。

首先结论是最多在开始时往右跳一步。如果跳了多步,因为你最终要跳回来,那么一定有一次是跨过了出发点的,因为是双向边,所以不如一次跳到这个点然后往左跳。

先考虑第一步往右的情况,设 pre(i,j)pre(i,j)pre(i,j) 表示从 [i,n][i,n][i,n] 中任意一点往左跳最多 jjj 步能走到的最左边的点。尽管 [i+1,n][i+1,n][i+1,n] 中有些点可能无法从 iii 一步跳到,但就意味着这些点还要再跳一次才能跳到 iii 左边,一定是不优的。

由于第一步可以往左,我们再加一个第一步强制往左的,也就是从 lxl_xlx​ 开始转移。

发现这个有结合性,所以用倍增优化即可。

复杂度 O((n+q)log⁡n)\Omicron((n+q)\log n)O((n+q)logn)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#define MAXN 300005
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){return b? gcd(b,a%b):a;}
inline int read()
{int ans=0;char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();return ans;
}
int a[MAXN],pre[MAXN][20];
ll sum[MAXN][20];
ll query(int p,int x)
{if (a[x]<=p) return x-p;int pos=a[x],cur=1;ll ans=x-a[x];for (int i=19;i>=0;i--)if (pre[pos][i]>=p){ans+=sum[pos][i]+(ll)(pos-pre[pos][i])*cur;pos=pre[pos][i];cur+=(1<<i);}return ans+(ll)(pos-p)*(cur+1);
}
int main()
{int n=read();pre[n+1][0]=2e9;for (int i=2;i<=n;i++) a[i]=read();for (int i=n;i>=1;i--) sum[i][0]=i-(pre[i][0]=min(pre[i+1][0],a[i]));for (int j=1;j<20;j++)for (int i=1;i<=n;i++){pre[i][j]=pre[pre[i][j-1]][j-1];sum[i][j]=sum[i][j-1]+sum[pre[i][j-1]][j-1]+(1ll<<(j-1))*(pre[i][j-1]-pre[i][j]);}for (int q=read();q;q--){int l,r,x;l=read(),r=read(),x=read();ll ans=query(l,x)-query(r+1,x),y=r-l+1;ll d=gcd(ans,y);ans/=d,y/=d;printf("%lld/%lld\n",ans,y);}return 0;
}

【PKUSC2018】星际穿越【结论】【倍增dp】相关推荐

  1. [Luogu 5465] [LOJ 6435] [PKUSC2018]星际穿越(倍增)

    [Luogu 5465] [LOJ 6435] [PKUSC2018]星际穿越(倍增) 题面 n个点的图,点i和[l[i],i)的所有点连双向边.每次询问(l,r,x)表示x到[l,r]的所有点的最短 ...

  2. 洛谷p5465 [PKUSC2018]星际穿越

    [洛谷p5465][PKUSC2018]星际穿越 题面 洛谷 题解 众所周知PKUSC的题大多都不可做,今天好不容易看到1个倍增水题(我猜当时应该全场切了). 我们设\(f[i][j]\)表示\(i\ ...

  3. LOJ.6435.[PKUSC2018]星际穿越(倍增)

    LOJ BZOJ 参考这儿qwq. 首先询问都是求,向左走的最短路. \(f[i][j]\)表示从\(i\)走到\(j\)最少需要多少步.表示这样只会\(O(n^2\log n)\)的= =但是感觉能 ...

  4. LOJ6435 PKUSC2018星际穿越

    Problem loj Solution 一个显而易见的结论,对于一个xi,要到达1号节点的最优路径只有第一步可能往右走,后面的步必定是往左走. 那么我们可以dp出整个右边可以走到的最左边的位置mn[ ...

  5. LOJ6435 PKUSC2018 星际穿越

    这个题吧当时在考场只得了45分 然后70分的性质都分析到了 不知道为啥就是写萎蛋了 哎 当时还是too young too simple 看了一下julao们的博客这个题有两种做法 一个是比较费脑子的 ...

  6. 【题解】LuoGu5465: [PKUSC2018]星际穿越

    原题传送门 重要性质:对于某个点xxx,必定是xxx到[y,x)[y,x)[y,x)中所有点的距离为1,xxx到[z,y)[z,y)[z,y)中所有点距离为2-- (满足z<y<xz< ...

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

    5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 27  Solved: 11 [Submit][Statu ...

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

    http://movie.douban.com/review/7188759/ 星际穿越通篇没有一句多余的对白,也没有多余的一个镜头,169分钟超大信息量填满整部电影.这里我打算从两个方面去分析这部电 ...

  9. 天体物理学-星际穿越

    转载自: http://www.cnblogs.com/yangpf/p/4148488.html 确实非常喜欢这样的文章,简单的说明白了很多有意思的科学史.天体物理学啊天体物理学.. 以下是原文 本 ...

  10. Codeforces Round #717 (Div. 2) D(倍增dp)

    Codeforces Round #717 (Div. 2) D 题意:n个数 q个询问,每一个询问有l和r,问你l到r这段区间中最少能分成几段,每一段中的数都是互质的. 思路:首先预处理出每一个点向 ...

最新文章

  1. 手机号码 与 邮箱验证
  2. 保存csv时, 不保留index
  3. Linux getcwd()的实现【转】
  4. 用js写出水仙花数,JS 水仙花数
  5. 剑指 Offer 05. 替换空格(两种做法)
  6. Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决...
  7. #36328;#36234;#23457;#26680;#26426;#21046;#30340;gladder#25554;#20214;
  8. 自助BI项目实施可行性分析报告
  9. python办公自动化(入门)
  10. java android实习报告,java和安卓实习报告.pdf
  11. ubuntu恢复被rm误删的数据及原理
  12. 导出期刊对应格式的参考_中文参考文献怎么一键导出正确格式?写作必看!
  13. python随手记自动记账_菜鸟也疯狂!8分钟用Python做一个酷炫的家庭随手记
  14. php imagejpeg函数,php imagepng()函数有什么用?
  15. 化妆品用植物干细胞的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. (Java)SortedMap 接口
  17. mybtisset where tirm 等标签的作用
  18. arduino控制寻迹传感器
  19. 基于Qt框架实现的 C/S架构的外卖平台软件系统
  20. 如何用curl做PUT请求?

热门文章

  1. 男女共厕,考验男生心理素质的时候到了......
  2. 带你见识不一样的世界,这5部豆瓣纪录片不可错过!
  3. 高糊马赛克秒变高清,表情帝:这还是我吗?
  4. 哈哈哈,程序员没有女朋友的原因,我终于找到了!
  5. java aop execution_Spring AOP -- execution表达式
  6. python第k序列元素查找_Python寻找第k小的元素
  7. java 图片压缩 base64_图片改变像素,宽高,Base64编码处理
  8. min里所有的参数都不存在_高中生物所有的考点难点,其实都在你不仔细看的课本里,必修1-3超强记忆手册!...
  9. mysql 5.7.6 5.7.19_MySQL数据库之Mysql 5.7.19 免安装版遇到的坑(收藏)
  10. java io流 教程_Java基础教程:IO流与文件基础