2020牛客暑期多校訓練營(第六場)

2021-10-23 18:15:38 字數 2294 閱讀 6917

可以先把輸入離散化(用map會t),然後對於每個位置l求出最右側的r,使得[l, r]內元素不重複且區間長度最長。

由於給定的序列一定是這樣的結構:部分k的排列 + k的排列 + k的排列 + …+k的排列 + 部分k的排列

所以我們可以列舉第乙個k的排列的起點(再該起點之前的部分預設是合法的),然後從當前點往後一直跳,跳的同時判斷該段的合法性。

#include

using

namespace std;

typedef

long

long ll;

//typedef __int128 lll;

#define print(i) cout << "debug: " << i << endl

#define close() ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)

#define mem(a, b) memset(a, b, sizeof(a))

const ll mod =

1e9+7;

const

int maxn =

2e6;

const

int inf =

0x3f3f3f3f

;int a[maxn]

, b[maxn]

, len[maxn]

, vis[maxn]

;int n, k, num;

bool

solve()

}return

false;}

intmain()

sort

(b +

1, b +

1+ n)

; num =

unique

(b +

1, b +

1+ n)

- b -1;

for(

int i =

1; i <= n; i++

) a[i]

=lower_bound

(b +

1, b +

1+ num, a[i]

)- b;

int r =1;

for(

int l =

1; l <= n; l++

) cout <<

(solve()

?"yes"

:"no"

)<< endl;

}}

數字dp,不過跟之前的數字dp不太一樣。之前的數字dp是只搜乙個數,這次的dp是搜兩個數,而且這兩個數要滿足兩個約束條件:

1.a <= b

2.sum(a) > sum(b)

於是我們開始分析dp陣列的含義,dp[pos][dif][lim1][lim2]

pos:表示位置。

dif:a前面位數和−b前面位數和.(注:要防負數)

lim1:limit,當前位之前b是否等於n,並反映限制 b ≤ n

lim2:當前位之前a是否等於b,反映限制a≤b

#include

using

namespace std;

typedef

long

long ll;

//typedef __int128 lll;

#define print(i) cout << "debug: " << i << endl

#define close() ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)

#define mem(a, b) memset(a, b, sizeof(a))

const ll mod =

1e9+7;

const

int maxn =

2e6;

const

int inf =

0x3f3f3f3f

;ll dp[

105]

[3000][

2][2

];string s;

int v[

200]

;ll dfs

(int pos, ll dif,

int lim1,

int lim2)

dp[pos]

[dif]

[lim1]

[lim2]

= res;

return res;

}ll work()

intmain()

2020牛客暑期多校訓練營 第六場

雖然題目沒有看懂,但是本場mvp浩大師發現了規律,f x 2x 12x f x 1 f x 1 over 2 x f x 1 f x 2 x2x 1 f x 1 然後把程式打出來就ac了。include using namespace std typedef long long ll const i...

2020牛客暑期多校訓練營(第六場)

2020牛客暑期多校訓練營 第六場 額,睡了一下午,直接錯過了比賽。b binary vector c combination of physics and maths d data structure e easy construction f fibonacci partition g grid...

2020牛客暑期多校訓練營(第六場)

總結 這一次還行,做題前面比較順利得出了兩題,但是後面不是很順利,團隊配合一般需要改進。cg k給你n和k,要求構造乙個1 n的數列滿足,對任意長度,都存在乙個連續區間滿足區間和sum n k。若存在則輸出這個數列,否則輸出 1。模擬。首先想到的就是先求1 n的和判斷是否是k 的整數倍,如果不是則直...