AtCoder 096 D 題解報告

2021-08-19 13:36:27 字數 1025 閱讀 7323

已知乙個圓形櫃檯周長為c;你在x=0的位置,圓形櫃檯上存在n個點,每個點x[i]上有能量為v[i]的食物,並且你每走一步消耗1點能量(這裡自身能量可以為負),求你在這環形道路上走時,某一時刻自身擁有的最大能量是多少。

因為是乙個環,我們可以正向走也可以反向走,同時還可以先正向走到某個點 i 再回到x=0處然後反向走到某個大於 i的點,也可以先反向走到某個點 i 再回到x=0處然後正向走到某個小於 i 的點,在這4種情況中獲得的最大能量就是答案了。

前面2種情況直接一路掃過去就行,後面2種情況需要事先預處理出2個陣列,乙個是正向與反向走到 i 點能獲得的最大能量 dp[0][i]和dp[1][i],另乙個是正向和反向走到 i 點然後再回到x=0處所獲得的能量g[0][i]和g[1][i]。

那麼後面2種情況對於走到某個點能獲得的最大能量就是max(g[0][i] + dp[1][i + 1] , g[1][i] + dp[0][i - 1] )。

#include

using namespace std;

#define ll long long

const int maxn = 1e5 + 500;

ll dp[2][maxn]; //dp[0][i]表示正向走到i點獲得的最大能量,dp[1][i]為反向...

ll g[2][maxn]; //g[0][i]表示正向走到i點回到x=0位置所擁有的能量,g[1][i]反之...

ll x[maxn], v[maxn];

ll n, c, sum;

int main()

//正向遍歷

for (int i = 1; i <= n; i++)

sum = 0;

//反向遍歷

for (int i = n; i >= 1; i--)

ll ans = max(dp[0][n], dp[1][1]);

for (int i = 1; i <= n; i++)

cout << ans;

return 0;

}

16初出茅廬D題

d 好多好多球 time limit 1000ms memory limit 65535k 題型 程式設計題 語言 無限制 描述一天,jason買了許多的小球。有n個那麼多。他寫完了作業之後就對著這些球發呆,這時候鄰居家的小朋友ion回來了,jason無聊之際想到了乙個遊戲。他把這n個小球從1到n進...

14數學建模競賽D題

1.資料預處理 資料相關性分析 粗大誤差分析 針對果蔬品種的營養素成分和含量,建立分級打分制度,定義 營養價值 常見度 研究價值 等指標 篩選出8種水果和6種蔬菜 2.回歸模型,各種果蔬的年產量 3.logistic模型對 結果進行修正,改進回歸模型的產量 結果 實際 農業部種植管理司資料 發現12...

西安電子科大 D題

西安電子科大 d題 現在有n 個數,每次隨機取出兩個數 x,y,然後加入乙個數為 x y 2 問最後剩下的那個數的期望是多少?有多組輸入資料,第一行為乙個數字t,代表有t組輸入資料 0 接下來為t組資料。每組測試資料分2行 第一行為n,表示有n個數 1 n 100 接下來的一行有n個正整數ai,表示...