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

2021-10-08 14:17:23 字數 2401 閱讀 4185

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

額,睡了一下午,直接錯過了比賽。。。

b binary vector

c combination of physics and maths

d data structure

e easy construction

f fibonacci partition

g grid coloring

h harmony pairs

i interesting stiriling

j josephus transform

k k-bag

乙個矩陣的底面積定義為最後一行的數的和,重量定義為矩陣內所有數的和(含最後一行),給乙個正整數矩陣,找乙個壓強(壓強等於重量/面積)最大的可非連續子矩陣

其實單列矩陣就是最大情況

如果乙個子矩陣有多列,那麼可以拆成兩個行數不變的更小子矩陣,且其中乙個一定不比原情況差

證明:所以我們只需要求出每一列矩陣的壓強值,從上到下選入所以元素

#include

#include

using

namespace std;

const

int max_n=

210;

int a[max_n]

[max_n]

;int sum[max_n]

[max_n]

;int

main

(void)}

printf

("%.8f\n"

,maxl);}

return0;

}

給定n,k,問是否可以構造乙個1 ~ n的排列p,使得對於1 ~ n中任意的數i,p都存在乙個長度為i的子區間,其和模n餘k。有解輸出任意一組

當i=n時,也就是子區間為整個p時,如果此時模n不餘k,那就說明無解,如果餘k就說明存在解

換句話也就是n*(n+1)/2%n==k

當k滿足條件時,存在解。

如果n為奇數,那k=0;(因為(n+1)/2肯定為偶數,那n的偶數倍模n肯定為0),那p可以為。這樣無論i為幾,選i個數之和都是n的倍數

如果n為偶數,那k=n/2,那p可以為

本題關鍵在於n如果確定,k也相應的確定,那p就好確定

#include

#define ui unsigned int

#define ll long long

#define llu unsigned ll

#define ld long double

#define pr make_pair

#define pb push_back

#define lc (cnt<<1)

#define rc (cnt<<1|1)

//#define len(x) (t[(x)].r-t[(x)].l+1)

#define tmid ((l+r)>>1)

#define max(x,y) (x)>(y)?(x):(y)

#define min(x,y) (x)>(y)?(y):(x)

using

namespace std;

const

int inf=

0x3f3f3f3f

;const ll lnf=

0x3f3f3f3f3f3f3f3f

;const

double dnf=

1e18

;const

int mod=

998244353

;const

double eps=

1e-1

;const

double pi=

acos(-

1.0)

;const

int hp=

13331

;const

int maxn=

100100

;const

int maxp=

1100

;const

int maxm=

4000100

;const

int up=

100000

;int a[maxn]

,ans[maxn]

;int

main

(void)if

(sum%n!=k)

int cnt=0;

int l=

1,r=n-1;

bool flag=

true

;while

(cnt

a[++cnt]

=n;for

(int i=

1;i<=n;i++

)return0;

}

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牛客暑期多校訓練營(第六場)

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

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

可以先把輸入離散化 用map會t 然後對於每個位置l求出最右側的r,使得 l,r 內元素不重複且區間長度最長。由於給定的序列一定是這樣的結構 部分k的排列 k的排列 k的排列 k的排列 部分k的排列 所以我們可以列舉第乙個k的排列的起點 再該起點之前的部分預設是合法的 然後從當前點往後一直跳,跳的同...