「PKUSC2018」星际穿越
传送门
Solution
倍增
Code
#include <bits/stdc++.h>
#define reg register
#define ll long longusing namespace std;int read() {int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-')f = -1;ch = getchar();}while (ch <= '9' && ch >= '0') {x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}return x * f;
}const int MN = 3e5 + 5;int gcd(int x, int y) { return !y ? x : gcd(y, x % y); }int N, l[MN];
int p[MN][20], v[MN][20];int cal(int L, int x) {if (L == x)return 0;if (L >= l[x])return x - L;int r = x - L, step = 0, i;for (x = l[x], i = 18; ~i; --i)if (p[x][i] >= L) {r += v[x][i] + (x - p[x][i]) * step;step += 1 << i;x = p[x][i];}r += (x - L) * (step + 1);return r;
}int main() {N = read();reg int i, j;for (l[1] = 0, i = 2; i <= N; ++i) l[i] = read();for (p[N][0] = l[N], i = N - 1; i; --i) p[i][0] = min(l[i], p[i + 1][0]);for (j = 1; j <= 18; ++j)for (i = 1; i <= N; ++i)if (p[i][j - 1])p[i][j] = p[p[i][j - 1]][j - 1];for (i = 1; i <= N; ++i) v[i][0] = i - p[i][0];for (j = 1; j <= 18; ++j)for (i = 1; i <= N; ++i)if (p[i][j])v[i][j] = v[i][j - 1] + v[p[i][j - 1]][j - 1] + (p[i][j - 1] - p[i][j]) * (1 << (j - 1));int Q = read(), L, R, x;while (Q--) {L = read(), R = read(), x = read();int P = cal(L, x) - cal(R + 1, x), q = R - L + 1;int g = gcd(P, q);printf("%d/%d\n", P / g, q / g);}return 0;
}
Blog来自PaperCloud,未经允许,请勿转载,TKS!
转载于:https://www.cnblogs.com/PaperCloud/p/10910133.html
「PKUSC2018」星际穿越相关推荐
- 「PKUSC2018」星际穿越 (70分做法)
5371: [Pkusc2018]星际穿越 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 27 Solved: 11 [Submit][Statu ...
- LOJ6435 洛谷5465 「PKUSC2018」星际穿越 倍增
题目链接: loj6435 洛谷5465 蒟蒻zyd:这不是大水题吗?看我写个O(nlog2n)O(nlog^2n)O(nlog2n)的诡异ST表卡卡常数跑过去 题目:输出区间距离和 蒟蒻zyd:(笑 ...
- 「PKUSC2018」神仙的游戏 - 题解
「PKUSC2018」神仙的游戏 题意:给出一个01?串,其中?可以代替成为0或1,令 $ F(i) $ 表示是否存在长度为 $ i $ 的border,求 $ (F(1) \times 1 \tim ...
- Loj#6434「PKUSC2018」主斗地(搜索)
题面 Loj 题解 细节比较多的搜索题. 首先现将牌型暴力枚举出来,大概是\(3^{16}\)吧. 然后再看能打什么,简化后无非就三种决策:单牌,\(3+x\)和\(4+x\). 枚举网友打了几张\( ...
- 【LOJ】#2184. 「SDOI2015」星际战争
题解 直接二分然后建图跑网络流看看是否合法即可 就是源点向每个激光武器连一条二分到的时间×激光武器每秒攻击值的边 每个激光武器向能攻击的装甲连一条边 每个装甲向汇点连一条装甲值的边 代码 #inclu ...
- 【PKUSC2018】星际穿越【结论】【倍增dp】
题意:有一张边权为 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 ...
- loj#6436. 「PKUSC2018」神仙的游戏(NTT)
题面 传送门 题解 一旦字符串踏上了通配符的不归路,它就永远脱离了温暖的字符串大家庭的怀抱 用人话说就是和通配符扯上关系的字符串就不是个正常的字符串了比如说这个 让我们仔细想想,如果一个长度为\(le ...
- LOJ6435【PKUSC2018】星际穿越题解(贪心+倍增)
题目:LOJ6435. 题目大意:给定一张无向图 n n n个点,表示现在又知道了一些信息为每个点 i i i与编号为 [ l i , i − 1 ] [l_i,i-1] [li,i−1]的点有连边 ...
- 洛谷p5465 [PKUSC2018]星际穿越
[洛谷p5465][PKUSC2018]星际穿越 题面 洛谷 题解 众所周知PKUSC的题大多都不可做,今天好不容易看到1个倍增水题(我猜当时应该全场切了). 我们设\(f[i][j]\)表示\(i\ ...
- 马斯克的星际飞船又炸了!回收时发动机重启失败,「横」着砸向地面
贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 马斯克的星际飞船,又爆炸了! SpaceX的星舰9号原型,几个小时前进行了试射. 在着陆时,SN9直接炸成了一个巨大的火球. 作为今后要实 ...
最新文章
- Web漏洞扫描(一:利用WVS进行漏洞扫描)
- mysql genlog 分析_Mysq性能分析 —— Genral log(普通日志)与 Slow log(慢速日式)...
- QT学习:图形视图Graphics View
- 电机与拖动,直流他励电动机的特性测试实验报告,江南大学自动化
- 重启计算机后桌面顺序是反的,Win10系统为什么重启电脑之后桌面上的图标排列顺序被打乱该如何处理...
- idea中svn的更新、检出、提交操作
- python界面卡顿_前端页面卡顿、也许是DOM操作惹的祸?
- 就叫2021年度总结吧
- 卷积系列:Deconvolution(反卷积)/Transpose Convolution(转置卷积)/Fractional convolution
- 如何正确使用手机拍摄证件照
- web 实时刷新 websocket 大数据
- 给电脑文件批量重命名和更改后缀名
- 手机开热点如何查看接入热点的所有ip
- 秦时明月--动漫人物介绍
- Python基础(六):字符串、元组、列表习题
- 电脑显示无法加载远程访问连接管理服务器,Win7系统宽带连接出现错误711无法加载远程访问连接管理器服务如何解决?...
- centos8 手动修改网络配置以及怎么重启网络,添加开机自启动
- 【配置Hifive1-revB】设备管理器中不识别端口,Can not connect to J-Link via USB的解决办法
- vue中的@符号的是什么意思
- dsp31段最佳调音图_DSP调音技术~DSP功放31段EQ详解~DSP调音师推荐