2019牛客暑期多校訓練營(第二場)

2021-09-25 11:18:11 字數 1827 閱讀 6329

有2*n個人,平均分為兩隊,當i和j不在同一隊時,獲得權值vij

v_vi

j​,求權值總和的最大值

暴力!暴力!

暴力!首先劃分28個人有c

2814

c_^c2

814​

種情況,約為4e7,然後計算權值總和本來需要14*14的複雜度,這樣肯定會t,因此需要想辦法優化這個14*14,於是我在翻別人的**的時候看到了這一段超簡潔的dfs。。。。。。

#include

#include

#include

using namespace std;

typedef

long

long

int ll;

const

int maxn =40;

const ll mod=

1e9+7;

const

int n=63;

const ll inf=

0x7fffffffff

;ll c1[maxn]

[maxn]

;ll c2[maxn]

;vector c;

ll ans=0;

int n;

void

dfs(

int x,ll sum)

if(x>

2*n)

return

; ll temp=c2[x]

;for

(int i=

0;isize()

;i++

) c.

push_back

(x);

dfs(x+

1,sum+temp)

;//x與1同一隊

c.pop_back()

;dfs

(x+1

,sum)

;//x與1不同隊

}int

main()

} c.

push_back(1

);dfs(

2,c2[1]

);printf

("%lld\n"

,ans)

;}

給定由01組成的矩陣,求其中面積第二大的矩形大小

通過單調棧求最大矩形,再找第二大矩形

#include

#include

#include

using namespace std;

typedef

long

long

int ll;

const

int maxn =

1e3+10;

const ll mod=

1e9+7;

const ll inf=

0x7fffffffff

;int max1,max2;

int s[maxn]

[maxn]

;void

cala

(int a)

else

if(a>max2)

}void

cal(

int x,

int y)

intmain()

} stack<

int> st;

for(

int i=

1;i<=n;i++

) st.

push

(j);}}

printf

("%d\n"

,max2);}

}

2019牛客暑期多校訓練營(第二場)

題意 題解 c 版本一 include using namespace std typedef long long ll const int mod 1e9 7 ll power ll a,ll b a是底數,b是次冪 return ans ll phi ll n 求尤拉函式值 返回值為多少個與n互...

E MAZE 2019牛客暑期多校訓練營(第二場)

給出n行m列的迷宮0可走1不可走,有兩個操作,操作1變換點 a,b 的值,操作2查詢 1,a 到 n,b 的方案數 設 f i j 為第i 1行到達第i行第j列的方案數,若點 i,j 上下為0的可延伸範圍為 l,r 則 f i j sum r f i 1 k 由這個式子就可以構造出第i 1行到第i行...

2019牛客暑期多校訓練營(第二場) E MAZE

題意 n m的矩陣,0表示可以走,1表示牆,不能通過。有q中操作,一種是改變座標 x,y 的狀態,一種是詢問從 1,x 到 n,y 有多少條路徑。n,q 5e4,m 10 思路 dp 矩陣乘加線段樹維護。dp i j 表示從第i行到 i,j 的路徑數。則dp i j sum dp i k k j s...