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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Codeforces 924C Riverside Curio(瞎搞)

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

題目鏈接:Riverside Curio

題意

ArkadyArkady 打算觀察一條河的水位 nn 天,每天他都在水平面處做一個標(biāo)記,水的漲落不會將之前的標(biāo)記沖走,每天他都會記錄下嚴(yán)格在水平面上方的標(biāo)記數(shù)量 mimi,如果記嚴(yán)格在水平面下方的標(biāo)記數(shù)為 didi,求 ni=1di∑i=1ndi 的最小值。

輸入

第一行為一個整數(shù) n?(1n105)n(1≤n≤105),第二行為 nn 個整數(shù) m1,m2,?,mn (0mi<i)m1,m2,?,mn (0≤mi<i)

輸出

輸出最小的 ni=1di∑i=1ndi 的值。

樣例

輸入
6
0 1 0 3 0 2
輸出
6
提示
最優(yōu)的水平面的漲落情況如下:



注意第 33 天必須要打上 11 個新的標(biāo)記,否則無法保證第 44 天在水平面上方出現(xiàn) 33 個標(biāo)記。
輸入
5
0 1 2 1 2
輸出
1
提示
最優(yōu)的水平面的漲落情況如下:

輸入
5
0 1 1 2 2
輸出
0

題解

首先找到最大的 mimi,在這一天之后不再生成新的標(biāo)記,這樣可以使得在這一天之后的 nj=i+1di∑j=i+1ndi 的值最小,這一天之后的 djdj 的和為 nj=i+1(mi?mj)∑j=i+1n(mi?mj),在這一天之前,只要計(jì)算出每一天最少的標(biāo)記數(shù)即可,我們從第 ii 天往前枚舉 jj,設(shè)總的標(biāo)記數(shù)為 totaltotal,如果在第 jj 天之前的最大值小于 totaltotal,那么第 jj 天的標(biāo)記就可以認(rèn)為是新畫上的,將 totaltotal 減一,繼續(xù)往前枚舉,每天在水平面下方的標(biāo)記數(shù)為 total?mjtotal?mj

過題代碼

#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; }

總結(jié)

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

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