zoukankan      html  css  js  c++  java
  • 【Codeforces 924C】Riverside Curio

    【链接】 我是链接,点我呀:)
    【题意】

    题意

    【题解】

    设第i天总共的线数为t[i] 水平线上线数为m[i]是固定的 水平线下的线数设为d[i] 则d[i]+m[i]+1=t[i] 也就是说问题可以转化为使得t[i]最小 我们可以列出关于t[i]的不等式 t[i]= max{t[i-1],m[i]+1} ···① t[i]+1>=t[i+1] ,因为每天最多划一条线 ····② 对于①式,直接顺推就好 对于②式 我们用t[i]>=t[i+1]-1逆推 只要t[i]

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e5;
    
    int n;
    int m[N+10],t[N+10],d[N+10];
    
    int main(){
        ios::sync_with_stdio(0),cin.tie(0);
        cin >> n;
        for (int i = 1;i <= n;i++) cin >> m[i];
        for (int i = 1;i <= n;i++){
            t[i] = max(t[i-1],m[i]+1);
        }
        for (int i = n-1;i >= 1;i--){
            //t[i]+1>=t[i+1]
            //t[i]>=t[i+1]-1
            if (t[i]<t[i+1]-1){
                t[i] = t[i+1]-1;
            }
        }
        for (int i = 1;i <= n;i++){
            d[i] = t[i]-m[i]-1;
        }
        long long ans = 0;
        for (int i = 1;i <= n;i++){
            ans = ans + d[i];
        }
        cout<<ans<<endl;
    	return 0;
    }
    
    
  • 相关阅读:
    go-go协程
    linux-pclint代码检测
    linux-32位-交叉编译openssl
    go-json类
    mysql-定时任务
    go-IO操作
    go-异常处理-error-panic-recover
    go-defer语句
    go-select
    go-指针
  • 原文地址:https://www.cnblogs.com/AWCXV/p/10608440.html
Copyright © 2011-2022 走看看