[SOJ #721]第三送分题(2019-11-14考试)/[CF675E]Trains and Statistic
题目大意
在一条直线上有\(n\)个点。在第\(i\)个点可以花费\(1\)的代价到达\((i,a_i]\)中任意一点,用\(S[i][j]\)表示从点\(i\)到点\(j\)的最少花费,求\(\sum\limits_{1\leqslant i< j\leqslant n}S[i][j]\)。\(n\leqslant10^5\)
题解
若从点\(i\)开始,那么到\((i,a_i]\)的代价为\(1\),令\(p\)为\((i,a_i]\)中\(a_p\)最大的点,则到\((a_i,a_p]\)的代价为\(2\)。那么,若知道了点\(\sum\limits_{j=p+1}^nS[p][j]\),那么\(\sum\limits_{j=i+1}^nS[i][j]=\sum\limits_{j=p+1}^nS[p][j]+(n-a_i)+(p-i)\)。就可以倒着求出每个点到后面每个点的代价和。
卡点
无
C++ Code:
#include <cstdio>
#include <algorithm>
#include <iostream>
const int maxn = 1e5 + 10;
int n, a[maxn], S[maxn], top;
long long ans, f[maxn];
int main() {
std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);
std::cin >> n;
for (int i = 1; i < n; ++i) std::cin >> a[i];
f[n] = 0, S[top = 1] = n;
for (int i = n - 1; i; --i) {
int pos = *std::lower_bound(S + 1, S + top + 1, a[i], std::greater<int> ());
while (top && a[i] >= a[S[top]]) --top;
S[++top] = i, f[i] = f[pos] + n - a[i] + pos - i, ans += f[i];
}
std::cout << ans << '\n';
return 0;
}
[SOJ #721]第三送分题(2019-11-14考试)/[CF675E]Trains and Statistic的更多相关文章
- 2019.2.14 考试T3 交互题
\(\color{#0066ff}{ 题目描述 }\) 由于机房被成功拯救了,花_Q很高兴,花_Q生成了一个 0 到 N - 1 的排列(排列的下标从 0 到 N - 1 ).保证排列中 0 在 N ...
- 2019.2.14 考试T1 FFT
\(\color{#0066ff}{ 题目描述 }\) 衡水二中的机房里经常有人莫名其妙地犇雷,leizi很生气,决定要找出那个犇雷的人 机房有n个人,每个人都认为机房里有两个人可能会犇雷,其中第i个 ...
- fjwc2019 D3T2 送分题
#185. 「2019冬令营提高组」送分题 这是原题..... P3615 如厕计划 手推一推你发现,显然男性不能多于女性. 然后你或许可以发现一个神奇的性质. 对于每个序列,我们记$M$为$1$,$ ...
- EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)
传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...
- 2019.11.9 csp-s 考前模拟
2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通 ...
- leecode刷题(11)-- 反转字符串
leecode刷题(11)-- 反转字符串 反转字符串 描述: 编写一个函数,其作用是将输入的字符串反转过来. 示例 1: 输入: "hello" 输出: "olleh& ...
- [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)
更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) ...
- JZOJ 11.14 提高B组反思
JZOJ 11.14 提高B组反思 T1 题目虽然有点高大上,但是很容易懂 有一个\(d\)维空间,同时有一个长度为\(2n\)的操作序列,每个操作往某一维的正方向或反方向走一格,问多少种方案使得最后 ...
- 每日一练ACM 2019.04.14
2019.4.14 第1001题:Sum Problem Problem DescriptionHey, welcome to HDOJ(Hangzhou Dianzi University Onli ...
随机推荐
- AIX系统逻辑卷管理
前言: 前期项目需要部署多套AIX环境下RAC集群,之前很少接触AIX系统,上来被创建逻辑卷等基本命令打脸了,其实网上搜下资料很多,总结一下,也是方便自己日后查阅. 创建逻辑卷 1.查看所有磁盘设备 ...
- flask Gunicorn和uwsgi并发对比(转载)
转载 结果 吞吐量(要求/秒) 响应时间(毫秒) 失误 吞吐量的标准偏差(要求/秒) 尽管uWSGI的性能在高负载下确实有些不稳定,但它看起来像Python应用服务器.uWSGI不仅速度快得离谱,而且 ...
- MySQLDump--导出数据脚本异常
在一次使用mysqldump导出数据过程中,发现导出SQL无法正常执行,仔细观察后发下导出脚本为: (,,,,' Yimu(id:5085297)',''¥','[新教室V32] ',15593224 ...
- PCI_PCIe_miniPCIe规格说明
PCI PCI是一种本地总线(并行),规格书名称:PCI Local Bus Specification.并行总线,插槽规格统一. PCI stands for Peripheral Componen ...
- Alipay SDK验签PHP低于5.5版本错误
低于PHP5.5版本不支持OPENSSL_ALGO_SHA256函数,要想使用RSA2加密,把OPENSSL_ALGO_SHA256函数替换为:sha256WithRSAEncryption 解密方法 ...
- 极简让ingress-nginx最新版(0.25.0)跑起来
裸步骤: 一,manadatory.yaml apiVersion: v1 kind: Namespace metadata: name: ingress-nginx labels: app.kube ...
- 第07节-开源蓝牙协议BTStack框架代码阅读(下)
上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得). 可以从5个方面来理解BTStack的框架: 1.硬件操作:hci_transport_t BTS ...
- Java的transient关键字
Java的transient关键字 Java 中的 transient 关键字被用来表示变量将不被序列化处理.那么在理解 transient 关键字之前,我们先了解下什么是序列化. 什么是序列化 ...
- 04-cmake语法-STREQUAL
STREQUAL 用于比较字符串,相同返回 true .
- 2.搭建第一个http服务:三层架构
package main import ( "github.com/go-kit/kit/transport/http" "gomicro/Services" ...