日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF924C Riverside Curio

發(fā)布時(shí)間:2023/12/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF924C Riverside Curio 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、題目

點(diǎn)此看題

二、解法

玄學(xué)警告?,由于線上的數(shù)量是定值,轉(zhuǎn)而求線的數(shù)量已推知線下數(shù)量。

設(shè)t[i]t[i]t[i]iii時(shí)刻線的數(shù)量,d[i]d[i]d[i]為線下的數(shù)量,易知 t[i]=m[i]+d[i]+1t[i]=m[i]+d[i]+1t[i]=m[i]+d[i]+1,有這樣一些限制:

  • t[i]≥t[i?1]t[i]\geq t[i-1]t[i]t[i?1],即線的數(shù)量單調(diào)遞增
  • t[i]≥m[i]t[i]\geq m[i]t[i]m[i],這個(gè)看定義吧
  • t[i]?1≤t[i?1]t[i]-1\leq t[i-1]t[i]?1t[i?1],即每天只能畫一條線

前兩個(gè)限制取最大值,第三個(gè)限制從后往前掃,把t[i]t[i]t[i]t[i+1]?1t[i+1]-1t[i+1]?1maxmaxmax,最后掃一遍就可以算出答案,時(shí)間復(fù)雜度O(n)O(n)O(n)

那么這個(gè)算法的正確性如何推知呢?我的理解是我們盡可能貼著1,21,21,2限制的邊界也就是盡量把線畫重,因?yàn)榫€的數(shù)量越少越好,后面我們要掃回來的原因是我們貼著邊界畫不一定畫的出來合法解,我們需要把以前畫重的線拆開,以滿足后面的需要。

#include <cstdio> #include <iostream> #define int long long using namespace std; const int M = 100005; int read() {int x=0,flag=1;char c;while((c=getchar())<'0' || c>'9') if(c=='-') flag=-1;while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();return x*flag; } int n,ans,m[M],t[M]; signed main() {n=read();for(int i=1;i<=n;i++)t[i]=max(t[i-1],(m[i]=read())+1);for(int i=n-1;i>=1;i--)if(t[i+1]-1>t[i])t[i]=t[i+1]-1;for(int i=1;i<=n;i++)ans+=t[i]-m[i]-1;printf("%lld\n",ans); }

總結(jié)

以上是生活随笔為你收集整理的CF924C Riverside Curio的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。