這裡兩道題是一類的,核心都是要求乙個陣列或者是乙個矩陣上某些點的覆蓋次數。如果按普通做法的話,就是對於每次覆蓋的區間進行遍歷標記,這樣時間複雜度會很高,所以我們要用首尾標記法(官方叫差分字首法)
天才程式設計師菜哭武和石頭組隊參加乙個叫做國際排列計算競賽 (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 個詢問,每次詢問是乙個形如...