题目链接:Riverside Curio

题意

ArkadyArkadyArkady 打算观察一条河的水位 nnn 天,每天他都在水平面处做一个标记,水的涨落不会将之前的标记冲走,每天他都会记录下严格在水平面上方的标记数量 mi" role="presentation" style="position: relative;">mimim_i,如果记严格在水平面下方的标记数为 didid_i,求 ∑ni=1di∑i=1ndi\sum_{i=1}^nd_i 的最小值。

输入

第一行为一个整数 n (1≤n≤105)n(1≤n≤105)n~(1\leq n\leq10^5),第二行为 nnn 个整数 m1,m2,⋯,mn (0≤mi&lt;i)" role="presentation" style="position: relative;">m1,m2,⋯,mn (0≤mi<i)m1,m2,⋯,mn (0≤mi<i)m_1,m_2,\cdots,m_n~(0\leq m_i

输出

输出最小的 ∑ni=1di∑i=1ndi\sum_{i=1}^nd_i 的值。

样例

输入
6
0 1 0 3 0 2
输出
6
提示
最优的水平面的涨落情况如下:

注意第 333 天必须要打上 1" role="presentation" style="position: relative;">111 个新的标记,否则无法保证第 444 天在水平面上方出现 3" role="presentation" style="position: relative;">333 个标记。

输入
5
0 1 2 1 2
输出
1
提示
最优的水平面的涨落情况如下:

输入
5
0 1 1 2 2
输出
0

题解

首先找到最大的 mimim_i,在这一天之后不再生成新的标记,这样可以使得在这一天之后的 ∑nj=i+1di∑j=i+1ndi\sum_{j=i+1}^nd_i 的值最小,这一天之后的 djdjd_j 的和为 ∑nj=i+1(mi−mj)∑j=i+1n(mi−mj)\sum_{j=i+1}^n(m_i-m_j),在这一天之前,只要计算出每一天最少的标记数即可,我们从第 iii 天往前枚举 j" role="presentation" style="position: relative;">jjj,设总的标记数为 totaltotaltotal,如果在第 jjj 天之前的最大值小于 total" role="presentation" style="position: relative;">totaltotaltotal,那么第 jjj 天的标记就可以认为是新画上的,将 total" role="presentation" style="position: relative;">totaltotaltotal 减一,继续往前枚举,每天在水平面下方的标记数为 total−mjtotal−mjtotal-m_j。

过题代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cstring>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <algorithm>
#include <functional>
#include <iomanip>
using namespace std;#define LL long long
const int maxn = 100000 + 100;
int n, tot;
LL ans;
int num[maxn], Max[maxn];int main() {#ifdef LOCALfreopen("test.txt", "r", stdin);
//    freopen("test1.out", "w", stdout);#endif // LOCALios::sync_with_stdio(false);while(scanf("%d", &n) != EOF) {ans = 0;tot = 0;int Index = 1;for(int i = 1; i <= n; ++i) {scanf("%d", &num[i]);if(num[i] > num[Index]) {Index = i;}}tot = num[Index];Max[0] = 0;for(int i = 1; i <= n; ++i) {Max[i] = max(Max[i - 1], num[i]);}for(int i = Index + 1; i <= n; ++i) {ans += num[Index] - num[i];}for(int i = Index; i >= 1; --i) {ans += tot - num[i];if(Max[i - 1] < tot) {--tot;}}printf("%I64d\n", ans);}return 0;
}

Codeforces 924C Riverside Curio(瞎搞)相关推荐

  1. codeforces 957D Riverside Curio

    题目链接:http://codeforces.com/contest/957/problem/D 题意:有一个水池,每天的水位会上升或者下降.每天需要在水位处划一道白线来记录当天的水位,如果水位处有白 ...

  2. D. Riverside Curio

    D. Riverside Curio ​ https://codeforces.com/problemset/problem/957/D Arkady decides to observe a riv ...

  3. [JZOJ5281]钦点题解--瞎搞+链表

    [JZOJ5281]钦点题解--瞎搞+链表 题目链接 于 暴 力 过 分析 第一眼: 模拟美滋滋?! 然后数据范围...不太对 naiive模拟30pts 然后你交换字符串指针60pts 然后发现可以 ...

  4. android重置系统,安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了!...

    安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了! 现在手机的价格逐渐的开始上升,一部好一点的手机价格还是比较贵的,所以很多人想要节省更多的换机支出,都会想要购买到一款可以使用的比较久的手机 ...

  5. HDU5971【瞎搞】

    题意:略(忙着准备文化课...明天期中考啊.... 思路: 正解就是染色,2-sat搞: AC代码(虽然是错误的...数据水(过踏马的也行啊,起码打脸他啊!) 4 3 1 0 1 2 2 3 3 4 ...

  6. HDU 5600(瞎搞)

    第一场Bestcoder居然爆零..果然是too naive..小聪明全部直接输出"YES"过了pretest,结果被叉也是&%$% 找到规律传递下就好.后来看官方题解感觉 ...

  7. HDU 4923 Room and Moor(瞎搞题)

    瞎搞题啊.找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和. 然后从前向后扫一遍.变扫边进行合并.每次合并.合并的是他的前驱.这样到最后从t-1找出的那条链就是 ...

  8. 别再瞎搞数仓了!BAT内部大神:数据仓库不是谁都可以建的

    在我没有进互联网之前,我一直以为数据仓库是所有企业进行数据资产管理的必备工作,但直到我去了很多家企业搞数据之后才发现,原来并不是所有的企业都适合做数据仓库,更不要说数据中台了. 很多企业现在做数据仓库 ...

  9. Wannafly交流赛1: C. 腰带图(瞎搞)

    链接:https://www.nowcoder.com/acm/contest/69/C 来源:牛客网 题目描述 一个n个点m条边的无向图,它若满足以下性质,我们就称它为腰带图: 1.n为>=6 ...

最新文章

  1. 七年磨一剑:Apache HBase 1.0正式发布
  2. C++控制台读取和输出函数
  3. Yes, Prime Minister 打表找规律-质数
  4. 美团在Redis上踩过的一些坑-4.redis内存使用优化
  5. CCF关于暂停NOIP竞赛的公告
  6. windwon安装macaca环境
  7. list集合去除重复对象
  8. Axure 元件库分享
  9. 前沿重器[21] | 聊聊对话系统:概述
  10. linux的vmstat命令,vmstat命令参数详解
  11. php ajax 同时验证 用户名 密码
  12. 让你的 Mac 用上最美的屏保,Aerial 使用教程
  13. thinkphp mysql操作数据库_thinkPHP数据库操作
  14. HTML5页面跳转的几种方法
  15. Matlab学习笔记(1) - 符号变量及其运算
  16. 用MMD做mmd动态模型
  17. 医院信息化的三种演进建设模式
  18. 怎么样很快的速度锁定计算机,怎样让电脑速度变快
  19. 逻辑强化(02)复合推理 答案解析
  20. Python配置R语言包过程、问题及解决

热门文章

  1. #define宏加括号和不加括号的区别
  2. SCAU 数据结构 1 单链表分解
  3. HTTP请求的响应头部Vary的理解
  4. 周志明架构课--03.SOA时代:成功理论与失败实践
  5. 买车容易行路难-买车
  6. 计算机毕业论文选题申请表,毕业设计论文课题申请表.DOC
  7. 实战 J2EE 开发购物网站 开发环境篇
  8. 利用接口实现墨盒纸张打印机
  9. 【游戏开发小技】TexturePacker生成的图集逆向切分成精灵小图(json | python | PIL | TextureUnPacker | 逆向 | 切图)
  10. 英语前缀 2011年8月16日15:55:43