CF1491C Pekora and Trampoline 题解
比赛时只想到了 \(\mathcal O(n^3)\) 的暴力做法,官方题解是 \(\mathcal O(n^2)\) ,并且是可以优化为 \(\mathcal O(n)\) 的(贪心+差分)。
贪心是比较明显的,我们需要从左到右依次考虑每张床的贡献,因为第 \(i\) 张床只能由 \([1,i-1]\) 的床跳过来,Pekora从第一张床开始跳一定是最优的。我们从左到右分析,用 \(b_i\) 记录在 \(i\) 床在之前被跳过的次数,如果 \(b_i>S_i-1\) ,说明 \(S_i\) 在之前就已经降为 \(1\) 了,多跳的部分会转移到 \(b_{i+1}\) 上;否则还需要在 \(i\) 床上跳 \(S_i-b_i-1\) 次。然后对于每张床我们只需要考虑它能直接跳到的地方:因为它要从 \(S_i\) 减到 \(1\) ,所以它会把 \([i+2,min(S_i+i,n)]\) 区间上的所有床都跳过一次,即这个区间上的 \(b\) 都增一,这里如果用差分的话就是 \(\mathcal O(1)\) 的区间修改复杂度了,当然用暴力扫一遍也是可以过这道题的。这里给出使用差分的代码,\(b\) 在代码中为差分数组。
\(\mathrm{Code}:\)
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 6;
typedef long long ll;
int n,s[N],b[N];//注意b[i]为差分数组
int main(){
int t;scanf("%d",&t);
while(t--){
scanf("%d",&n);
ll ans = 0;
for(int i = 1;i <= n;i++) scanf("%d", s + i), b[i] = 0;b[n + 1]=0;
int las = 0;
for(int i = 1;i <= n;i++){
int now = b[i] + las; //now表示是i床在[1,i-1]中被跳了几次,即上面分析中的b[i]
las = now;
if(now > s[i] - 1){
b[i+1] += now - s[i] + 1;
b[i+2] -= now - s[i] + 1;
now = s[i] - 1;
}
ans += s[i] - now - 1;
if(min(s[i] + i, n) >= i + 2){
b[i+2] ++; //相当于区间[i+2,min(s[i]+i,n)]增一
b[min(s[i] + i, n) + 1]--;
}
}
cout<<ans<<endl;
}
return 0;
}
CF1491C Pekora and Trampoline 题解的更多相关文章
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
随机推荐
- Sqoop import export参数
通用参数 import export 通用通用参数选项 含义说明–connect 指定JDBC连接字符串–connection-manager 指定要使用的连接管理器类–dri ...
- AtCoder Beginner Contest 188 E - Peddler (树)
题意:有\(n\)个点,\(m\)条单向边,保证每条边的起点小于终点,每个点都有权值,找到联通的点的两个点的最大差值. 题解:因为题目说了起点小于终点,所以我们可以反向存边,然后维护连通边的前缀最小值 ...
- codeforces 949B :A Leapfrog in the Array 找规律
题意: 现在给你一个n,表示有2*n-1个方格,第奇数方格上会有一个数字 1-n按顺序放.第偶数个方格上是没有数字的.变动规则是排在最后一个位置的数字,移动到它前边最近的空位 . 直到数字之间没有空位 ...
- win10 远程桌面 ubuntu
一.获取本机ip 通过ip查询网址来查询本机外网地址 二.下载远程链接软件 下载向日葵,注册账号 三.远程链接 将连接端与被连接端分别绑定账号,输入相应ip地址,即可连接.
- 利用windows api共享内存通讯
主要涉及CreateFile,CreateFileMapping,GetLastError,MapViewOfFile,sprintf,OpenFileMapping,CreateProcess Cr ...
- spring-cloud-netflix-eureka-server
一.构建springcloud父pom工程,管理版本 pom.xml <?xml version="1.0" encoding="UTF-8"?> ...
- web online code editor All In One
web online code editor All In One 在线代码编辑器 Monaco Editor 摩纳哥编辑器 ️ 22.1k The Monaco Editor is the code ...
- Firewall & Network Security
Firewall & Network Security 防火墙 & 网络安全 NAT Gateway VPC Virtual Private Cloud refs https://en ...
- NGK全网算力总量增加,SPC前景广阔
日前,根据NGK官方公布的数据显示,NGK全网算力总量达到550.96万,比早前预估的500万算力增加了50.96万,并且随着SPC空投的持续,还有不少生态建设者在持续涌入NGK算力市场.那么,是什么 ...
- 为什么空投总是抢不到?大神教你狂撸SPC!
为什么空投总是抢不到?你是否总有这样的疑虑.明明现在区块链市场中空投项目这么多,明明身边的朋友都抢到了空投,明明人家都已经躺赚百万千万,为何只有我,什么都没抢到.今天,本文将教你如何抢空投,成为下一个 ...