description
input
output
sample input
5 4sample output1 < 2
1 < 3
2 < 4
1 = 5
5data constraint
首先對於給出的等於條件,我們可以直接把點合併。對於合併後的圖,我們發現要麼是環,要麼是樹,環則直接無解,樹我們可以用樹形dp處理一下。
我們發現每個序列都被「k那麼表示j中有些塊要以等於形式和a合併,方案數c(i,i+j-k),所以對新答案貢獻為f[a][i]*f[b][j]*c(k,i)*c(i,i+j-k),這樣轉移即可
#include#include#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;vector
v[111
];int mo=1000000007
;int c[111][111],f[111],g[111],next[111],y[111
];int f[111][111],size[111],du[111
];bool vis[111
],pz;
intn,i,tt,x,z,kn,m,ans,j;
void
read()
int find(int
r)void star(int i,int
j)void dfs(int
x) j=next[j];
}}void dp(int
x)
else
for(i=0;i<=mx[2];i++)h[i][0]=h[i][2
]; mx[
0]=mx[2
]; }
}if(!g[x])f[x][1]=1
;
else
}int
main()
for(i=2;i<=100;i++)
for(j=1;j1][j]+c[i-1][j-1])%mo;
for(i=1;i<=n;i++)f[i]=i;
for(i=1;i<=m;i++)
}for(i=1;i<=n;i++)f[i]=find(f[i]);
for(i=1;i<=n;i++)
}pz=true
; size[n+1]=1
;
for(i=1;i<=n;i++)
}for(i=1;i<=n;i++)if(f[i]==i&&!vis[i])pz=false
;
if(pz==false)printf("
0\n"
);
else
}
HNOI2015 實驗比較
description input output sample input 5 4 1 2 1 3 2 4 1 5 sample output 5data constraint 首先對於給出的等於條件,我們可以直接把點合併。對於合併後的圖,我們發現要麼是環,要麼是樹,環則直接無解,樹我們可以用樹形d...
HNOI2015實驗比較 題解
記得幾個月前自己曾經做過一道關於一張dag求排列的問題,現如今遇到了的是一道關於樹求排列的問題.這乙個問題看似簡單實際上有乙個細節那就是他可以取 這就使得複雜度公升高了.首先,最簡單的插孔原理。這乙個非常簡單,做這道題時,蒟蒻我現推式子。為什麼要解決這個問題呢,因為最基本的,在不考慮等於的情況下,n...
HNOI2015實驗比較 樹型DP
我看了一下,網上好像沒有跟我一樣做法的,而且我根本學不會那個做法。那我只好發個部落格啦 做法也許有錯 有n n 個物品和 m role presentation style position relative m m個條件,每個條件表示 i i 的權值小於或等於 j role presentatio...