排列計算(牛客競賽),地毯(洛谷p3397

2021-10-06 04:20:42 字數 2313 閱讀 1128

這裡兩道題是一類的,核心都是要求乙個陣列或者是乙個矩陣上某些點的覆蓋次數。如果按普通做法的話,就是對於每次覆蓋的區間進行遍歷標記,這樣時間複雜度會很高,所以我們要用首尾標記法(官方叫差分字首法)

天才程式設計師菜哭武和石頭組隊參加乙個叫做國際排列計算競賽 (international competition of permutation calculation, icpc) 的比賽,這個比賽的規則是這樣的:

乙個選手給出乙個長度為 n 的排列,另乙個選手給出 m 個詢問,每次詢問是乙個形如 (l, r) 的數對,查詢隊友給出的排列中第 l 個數到第 r 個數的和,並將查詢到的這個區間和加入總分,最後總分最高的隊伍就能獲勝。

石頭手速很快,在比賽一開始就給出了 m 個詢問;菜哭武也很強,他總是能找到最合適的排列,使得他們隊的總分盡可能高。

在看比賽直播的你看到了石頭給出的 m 個詢問,聰明的你能不能**出他們隊伍最終的得分呢?

乙個排列是乙個長度為 n 的數列,其中 1 ~ n 中的每個數都在數列中恰好出現一次。比如 [1, 3, 2] 是乙個排列,而 [2, 1, 4] 和 [1, 2, 3, 3] 不是排列。

第一行輸入兩個數 n (1≤n≤2×105) 和 m (1≤m≤2×105) 。

接下來 m 行,每行輸入兩個數 l 和 r ,代表這次查詢排列中第 l 個到第 r 個的和。

輸出乙個整數,代表他們隊伍總分的最大值。

7 31 3

3 75 6

乙個符合條件的排列是 [1,3, 6, 4, 7, 5, 2],於是最終的得分為 (1 + 3 + 6) + (6 + 4 + 7 + 5 + 2) + (7 + 5) = 46

有1到n個數字,然後m個查詢,構造乙個序列,使得查詢後的值最大化。

因為只輸出一次,不需要關心到底是怎麼構造的,考慮,被查詢到的數字次數越多,那麼就讓他的值越大,則,差分字首和求出每個數字被查詢的次數,然後排序,出現次數最小的對應1,最大的對應n即可

#include

#include

#include

#include

#include

using

namespace std;

typedef

unsigned

long

long ll;

const ll maxn =

(int

)2e5+5

;int a[maxn]

;ll sum[maxn]

;//這裡一定一定要設為long long 不然過不去的

intmain()

for(

int i=

1;i<=n;

++i)

ll summ=0;

//設為long long

sort

(sum+

1,sum+

1+n)

;//現在已經排出標記次數

for(

int i=n;i>0;

--i)

//要想總和最大,那麼標記次數多的位置的數值要大

cout

}

在n * n的格仔上有m個地毯。

給出這些地毯的資訊,問每個點被多少個地毯覆蓋。

第一行,兩個正整數n、m。意義如題所述。

接下來m行,每行兩個座標(x1,y1)和(x2,y2),代表一塊地毯,左上角是(x1,y1),右下角是(x2,y2)。

輸出n行,每行n個正整數。

第i行第j列的正整數表示(i,j)這個格仔被多少個地毯覆蓋。

5 32 2 3 3

3 3 5 5

1 2 1 4

0 1 1 1 0

0 1 1 0 0

0 1 2 1 1

0 0 1 1 1

0 0 1 1 1

對於20%的資料,有n<=50,m<=100。

對於100%的資料,有n<=1000,m<=1000。

這是個二維矩陣,但我們可以按一維進行標記處理,對於每一塊地毯,他所在行進行遍歷,對於所在的每一行,利用差分字首和進行計算每個點被覆蓋的次數

#include

using

namespace std;

int a[

1005][

1005]=

;int

main()

--m;

}for

(int i =

1; i <= n;

++i)

cout << endl;

}return0;

}

牛客 傷害計算 排列計算

給你乙個由 號分割的字串,每一段可能是純整數,那麼直接相加即可,也可能是由乙個整數a加 d 加乙個整數b組成,表示投擲a次有b面的篩子,結果加上它的期望 直接記錄每個 號位置,然後將字串分割出來,按題意模擬即可,期望公式就是 b 1 b 2a b includeusing namespace std...

F 排列計算

天才程式設計師菜哭武和石頭組隊參加乙個叫做國際排列計算競賽 international competition of permutation calculation,icpc 的比賽,這個比賽的規則是這樣的 乙個選手給出乙個長度為 n 的排列,另乙個選手給出 m 個詢問,每次詢問是乙個形如 l,r ...

F 排列計算

題目描述 天才程式設計師菜哭武和石頭組隊參加乙個叫做國際排列計算競賽 international competition of permutation calculation,icpc 的比賽,這個比賽的規則是這樣的 乙個選手給出乙個長度為 n 的排列,另乙個選手給出 m 個詢問,每次詢問是乙個形如...