NOIP模擬題 訂餐

2021-08-09 16:38:08 字數 1169 閱讀 2443

題目描述

這個週末,joe 一如既往的拿出了外賣的點餐單。選單上從上到下列著 n 個菜,

每個菜 joe 會列出乙個美味值。joe 這次希望從選單上連續地點 k 個菜,並且美

味值之和最大。

但在計算美味值之和時,joe 有自己的一套計算方法:由於他會按照順序享受這

k 個菜,並且越吃越後面的菜他就越享受,所以對於他吃的第 i 個菜,設它的美

味值為 d,美味值之和就會加上 d*i。例如,如果他要順序吃美味值為 3, 8, 5 的

菜,那麼美味值之和為 3 + 8*2 + 5*3 = 34。

joe 給出了這 n 個菜的美味值,他想知道所能達到最大的美味值之和。

輸入 第一行兩個整數 n,k,代表菜的總數和他要選擇的菜數。

第二行 n 個整數,代表從上到下選單上菜品的美味值。

輸出 一行乙個整數,代表最大的美味值之和。

樣例 5 3

2 4 1 5 3

21資料範圍

對於 40%的資料,n,k<=2000;

對於 100%的資料,n,k<=100000,各菜品的美味值 d 滿足 0<=d<=1000.

用乙個字首和,先處理出以1開頭的美味值,然後用字首和往後模擬就可以了。

看圖

計算出第一段,然後計算第二段時,可以用第一段的值-第一段的和+a[4]*3

時間複雜度:o(n)

#include

#include

#include

#include

#define ll long long

using namespace std;

const int n=100009;

int n,k;

ll a[n],s[n],b[n],ans;

int main()

//for(int i=1;i<=n;i++) printf("%lld ",b[i]);puts("");

for(int i=1;i<=n;i++) ans=max(ans,b[i]);

printf("%lld\n",ans);

return

0;}

NOIP模擬題 連通

給定乙個無向圖,請編寫乙個程式實現以下兩種操作 1 d x y,從原圖中刪除連線x和y頂點的邊。2 q x y,詢問x和y頂點是否連通。這也是連通問題,考慮用並查集解決。但是這是刪除的問題耶,怎麼辦?考慮將刪除變為連通,能不能將所有操作給反過來,從最後乙個操作開始處理。當然是可以的。include ...

Noip模擬題 山峰

description在n m的棋盤上不重複的填1到n m 如果乙個數字比周圍的八個數字大,那麼他就是乙個山峰。現在告訴你所有山峰的位置,問你填數的方案數mod 12345678 input 輸入第一行兩個數字 n m意義如題目描述。接下來n 行,每行 m個字元,表示非山峰,x 表示山峰。1 n 4...

NOIP模擬題 柵欄

題目大意 給定乙個 n times m 的網格圖,每次會選擇一塊矩形沿著網格線鋪上柵欄,或者拆除之前鋪的柵欄,或者詢問兩個格仔能否不經過柵欄直接到達。保證柵欄沒有重疊或交叉,刪去的柵欄刪除前一定存在。題解考慮兩個格仔能互相到達,當且僅當包含它們的柵欄完全相同。考慮對每乙個柵欄隨機乙個權值,維護覆蓋每...