2020 07 15 NOIP提高組 模擬

2022-06-04 17:45:11 字數 1805 閱讀 7590

題目大意:給出\(2\)個序列\(a=,b=\),從\(a、b\)中各選出k個元素進行一一配對(可以不按照原來在序列中的順序),並使得所有配對元素差的絕對值之和最大。例如各選出了\(a[p[1]],a[p[2]],……,a[p[k]]\)與\(b[q[1]],b[q[2]],……,b[q[k]]\),其中\(p\)序列中的元素兩兩不相同,\(q\)序列中的元素兩兩不相同,那麼答案為\(|a[p[1]]-b[q[1]]|+|a[p[2]]-b[q[2]]|+……+|a[p[k]]-b[q[k]]|\),現在任務也就是最大化這個答案。

這題非常的簡單,只要你會快排,你就能立馬想出來,用最大減最小。

#include#include#includeusing namespace std;

int a[100005],b[100005],n,k;

int main()

else

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

}

題目大意:教主要帶領一群orzer到乙個雄奇地方勘察資源。這個地方可以用乙個n×m的矩陣a[i, j]來描述,而教主所在的位置則是位於矩陣的第1行第1列。矩陣的每乙個元素a[i, j]均為乙個不超過n×m的正整數,描述了位於這個位置資源的型別為第a[i, j]類。教主準備選擇乙個子矩陣作為勘察的範圍,矩陣的左上角即為教主所在的(1, 1)。若某類資源k在教主勘察的範圍內恰好出現一次。或者說若教主選擇了(x, y)即第x行第y列作為子矩陣的右下角,那麼在這個子矩陣中只有乙個a[i, j](1≤i≤x,1≤j≤y)滿足a[i, j]=k,那麼第k類資源則被教主認為是稀有資源。

現在問題是,對於所有的(x, y),詢問若(x, y)作為子矩陣的右下角,會有多少類不同的資源被教主認為是稀有資源。

為了照顧vijos腦殘的輸出問題,設b[i, j]表示僅包含前i行與前j列的子矩陣有多少個數字恰好出現一次,那麼你所要輸出所有b[i, j]之和mod 19900907。

正解dp

#include#include#include#includeusing namespace std;

int n,a[5000],b[5000],f[5000][3];

int main()

,問有多少個序列對於所有的i滿足:a[1]~a[i]這i個數字中有恰好b[i]個數字小等於i。其中為1~n的乙個排列,即1~n這n個數字在序列a[i]中恰好出現一次。資料保證了至少有乙個排列滿足b序列。

這題考慮b序列的差值,非常神奇,\(b_i -b_=0,1,2\)

設\(f_i\)表示到第\(i\)個數時的方案數

情況\(1\),\(b_i - b_=0\),因為\(i\)沒有貢獻,所以\(f_i=f_\)

情況\(2\),\(b_i - b_=1\),這時說明要麼第\(i\)個數是\(\leq i\),要麼\(1\) ~ \(i-1\)中有一數是\(=i\),這是加法原理,所以\(f_i=f_*[(i-b_)+(i-b_-1)]\)

情況\(3\),\(b_i - b_=2\),這時說明第\(i\)個數是\(\leq i\)和 \(1\) ~ \(i-1\) 中有一數是\(=i\)都有,這是乘法原理,所以\(f_i=f_*(i-b_-1)^2\)

最後\(ans=f_n\)

但是,要用高精度。

#includeusing namespace std;

int f[50000];

int n,a[50000],l;

void mtlt(int k)

while (m) }

int main()

for (int i=l;i>=1;i--) printf("%d",f[i]);

}

NOIP提高組 矩陣

在麥克雷的面前出現了乙個有n m個格仔的矩陣,每個格仔用 或 表示,表示這個格仔可以放東西,則表示這個格仔不能放東西。現在他拿著一條1 2大小的木棒,好奇的他想知道對於一些子矩陣,有多少種放木棒的方案。因為棍子是1 2的,所以很容易就能發現,兩個被分割的塊,除了跨越兩個塊擺放木棍的方案數會對答案有影...

NOIP提高組2005 過河

過河 river 問題描述 在河上有一座獨木橋,乙隻青蛙想沿著獨木橋從河的一側跳到另一側。在橋上有一些石子,青蛙很討厭踩在這些石子上。由於橋的長度和青蛙一次跳過的距離都是正整數,我們可以把獨木橋上青蛙可能到達的點看成數軸上的一串整點 0,1,l 其中l是橋的長度 座標為0的點表示橋的起點,座標為l的...

NOIP提高組 20151029模擬

其實這套題目並不算太難,但是還是發揮不了100 水平。第一題直接線性篩法,求出質數,然後就可以判斷乙個數是否為質數了。這道題還可以用miller rabin去求,後者的速度較快,如果資料再大些,就要使用後者了。第二題,比賽時發現了,當n 7時,答案會每四個一迴圈,但是就沒有繼續往下想,其實想下去會想...