有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...