題目傳送門
作為乙個蒟蒻,總是因為找不到狀態轉移方程而懷疑自己的智商。。我可能真的智商不夠qaq
題目大意是每次選乙個元素個數至少為k的區間,然後它的花費是這個區間的極差(max-min),讓你求最小花費。
求最優解,下意識想到動態規劃問題,但是我練題不夠,沒有想到狀態轉移方程,只好賽後補題。 **
#include
using
namespace std;
const
int n=
3e5+5;
const
int mod=
1e9+7;
const
int inf=
0x3f3f3f3f
;const
double eps=
1e-6
;typedef
long
long ll;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//#define int long long
ll a[n]
,dp[n]
;signed
main()
sort
(a+1
,a+n+1)
;memset
(dp,inf,
sizeof dp)
; dp[k]
=a[k]
-a[1];
for(
int i=k+
1;i<=n;i++
) cout<<}
演算法 線性篩質數
輸出從0 00到1000000 1000000 100000 0的所有質數。首先0 00和1 11不是質數,從2 22開始逐個判斷是否為質數。如果t tt為質數,那麼對於任意正整數k kk,k t k times t k t不是質數,因此可以將k t k times t k t篩去。如果t tt已經...
ACM演算法 線性篩
應用 判斷是否為素數 第乙個想法 普通優化,對數字加根號遍歷。不夠優秀 第二個想法 如果我們知道乙個數是素數,那麼我們可以將這個素數的倍數篩去。我們從2開始,每次迴圈到乙個數,先判斷它是否被篩過,如果沒有,那麼它肯定是素數,就用它去篩它的倍數,否則就跳過。上述的篩法稱為 複雜度大約為nln n 這個...
分治法 線性時間選擇
演算法思想 利用快速排序的方法將a p r 被劃分成兩個子陣列a p i 和a i 1 r 使a p i 中的每個元素都不大於a i 1 r 中每個元素。接著演算法計算子陣列a p i 中元素個數j。如果k j,則第k小的數落在左區間,否則落在右區間,直到k j時,找到第k小的數。對於有重複數字的無...