草稿和一些题解而已

因为指针太恶心了

所以query决定还是要试试自己yy一下

#include<cstdio>
#include<cstring>
#include<iostream>
#define ll long long
using namespace std;
int maxx[4000101],poss[4000101],n;
struct node{
int a,posl;
};
void pushup(int rt){
if (maxx[rt<<1]>maxx[rt<<1|1])maxx[rt]=maxx[rt<<1],poss[rt]=poss[rt<<1];
else maxx[rt]=maxx[rt<<1|1],poss[rt]=poss[rt<<1|1];
}
void build(int l, int r, int rt) {
if (l == r){
maxx[rt]=0;
poss[rt]=l;return ;
}
int m = (l + r) >> 1;
build(l,m,rt<<1);
build(m+1,r,(rt<<1)|1);
pushup(rt);
}
void update(int p,int c, int l,int r,int rt) {
if (l == r){
maxx[rt]=c;return ;
}
int m=(l+r)>>1;
if(p<=m)update(p,c,l,m,rt<<1);
else update(p,c,m+1,r,(rt<<1)|1);
pushup(rt);
}
node query(int L, int R, int l, int r, int rt){
if (L <= l&&r<= R){
node x;
x.a=maxx[rt];x.posl=poss[rt];
return x;
}
int m =(l+r)>>1;
node ans;ans.a=0;
if(L<=m){
node kk=query(L,R,l, m,rt<<1);if(kk.a>ans.a)ans=kk;
}
if(R>m){
node kk=query(L,R,m+1,r,(rt<<1)|1);if(kk.a>ans.a)ans=kk;
}
return ans;
}
ll a[101000],dp[101000];
int main(){
scanf("%d",&n);
memset(dp,0,sizeof(dp));
ll ans=0;
build(1,n,1);
for(int i=1;i<=n-1;i++)scanf("%lld",&a[i]);
update(n,n,1,n,1);
for(int i=n-1; i>=1;i--){
node temp=query(i+1,a[i],1,n,1);
dp[i]=dp[temp.posl]+(n-i)-(a[i]-temp.posl);
ans+=dp[i];
update(i,a[i],1,n,1);
}
printf("%lld",ans);
return 0;
}

yy完毕,写了个傻逼结构体

CF 675E Trains and Statistic的更多相关文章

  1. Codeforces 675E Trains and Statistic - 线段树 - 动态规划

    题目传送门 快速的vjudge通道 快速的Codeforces通道 题目大意 有$n$个火车站,第$i$个火车站出售第$i + 1$到第$a_{i}$个火车站的车票,特殊地,第$n$个火车站不出售车票 ...

  2. Codeforces 675E Trains and Statistic(DP + 贪心 + 线段树)

    题目大概说有n(<=10W)个车站,每个车站i卖到车站i+1...a[i]的票,p[i][j]表示从车站i到车站j所需买的最少车票数,求所有的p[i][j](i<j)的和. 好难,不会写. ...

  3. codeforces 675E Trains and Statistic 线段树+贪心统计

    分析:这个题刚看起来无从下手 但是我们可以先简化问题,首先可以固定起点i,求出i+1到n的最小距离 它可以到达的范围是[i+1,a[i]],贪心的想,我们希望换一次车可以到达的距离尽量远 即:找一个k ...

  4. CodeForces 675E Trains and Statistic

    贪心,递推,线段树,$RMQ$. 假设我们记$ans[i]$是以$i$点为起点对答案的贡献,那么答案就是$\sum\limits_{i = 1}^n {ans[i]}$. $ans[i]$怎么计算呢? ...

  5. codeforces 675E E. Trains and Statistic(线段树+dp)

    题目链接: E. Trains and Statistic time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  6. Codeforces Round #353 (Div. 2) E. Trains and Statistic dp 贪心

    E. Trains and Statistic 题目连接: http://www.codeforces.com/contest/675/problem/E Description Vasya comm ...

  7. 【34.54%】【codeforces 675E】Trains and Statistic

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  8. Codeforces Round #353 (Div. 2) E. Trains and Statistic 线段树+dp

    题目链接: http://www.codeforces.com/contest/675/problem/E 题意: 对于第i个站,它与i+1到a[i]的站有路相连,先在求所有站点i到站点j的最短距离之 ...

  9. 【CF675E】Trains and Statistic(贪心,DP,线段树优化)

    题意:a[i]表示从第i个车站可以一张票到第[i+1,a[i]]这些车站;p[i][j]表示从第i个车站到第j个车站的最少的票数,现在要求∑dp[i][j](1<=i<=n,i<j& ...

随机推荐

  1. (转)em重建全过程

    该问题遇到N次,被郁闷N次,特此记录以备不时之需 由于n久不用em,而本机在公司使用dhcp自动获取ip,导致ip变化,而使em启动报出ora-12514 DBD ERROR: OCIServerAt ...

  2. libextobjc 实现的 defer

    算法沉思录:分而治之(复用): 分而治之是指把大而复杂的问题分解成若干个简单的小问题,然后逐个解决.这种朴素的思想来源于人们生活与工作的经验,也完全适合于技术领域. 要崩溃的节奏: 要崩溃的节奏: V ...

  3. Hadoop学习之路(十七)MapReduce框架Partitoner分区

    Partitioner分区类的作用是什么? 在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中:按照性别划分的话,需要 ...

  4. Python自动化之复习基础

    用户在命令行输入的参数可以在sys.argv里面看到,并且是以列表的形式现实的

  5. 【转】Spring Boot干货系列:(六)静态资源和拦截器处理

    前言 本章我们来介绍下SpringBoot对静态资源的支持以及很重要的一个类WebMvcConfigurerAdapter. 正文 前面章节我们也有简单介绍过SpringBoot中对静态资源的默认支持 ...

  6. 访问 IIS 元数据库失败解决问题的方法

    近日调试一Asp.net程序,出现了“访问 IIS 元数据库失败”的错误信息,最后经过搜索发现了解决问题的方法. 解决方法如下: 1.依次点击“开始”-“运行”. 2.在“运行”栏内输入 “C:\WI ...

  7. STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式

    已经实现  ,2018年11月17日11:56:42,具体 如下: 第一步 : 修改 void vPortSetupTimerInterrupt( void ) 函数 ,修改原来的 systick 定 ...

  8. OpenGL ES天空盒子效果

    一.理解 利用GLKBaseEffect,自定义顶点着色器和片元着色器,结合天空盒子,展示效果 二.技术代码 CCSkyBoxEffect:天空盒子效果类: CCSkyboxShader.vsh:顶点 ...

  9. C语言中数组定义方式

    <1>前言 大家首先来思考一个问题,若是我们想要定义两个变量,求这两个数的平均数,该怎么求呢? 例如:int a = 10,b = 20 int average = (a + b) / 2 ...

  10. 20155226 2016-2017-2 《Java程序设计》第9周学习总结

    20155226 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商 ...