1006題目鏈結
第i條邊的邊權是2^i,由2 ^1+2 ^2+2 ^3+…+2 ^(i-1)<2 ^i,故可以跑最小生成樹,兩兩之間的距離便是最短路了。
計算方面,對於每條邊,計算有幾個0 1路徑經過該邊,邊權乘以這個個數就可以了。
**:
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define int128 _int128;
#define reg register;
typedef
long
long ll;
typedef
double db;
const
int mod=
1e9+7;
const
int maxn=
1e5+5;
const
double eps=
0.00000001
;struct edgee[maxn]
;vectorg[maxn]
;int a[maxn]
,pa[maxn]
,vis[maxn]
,s1,s2,c1[maxn]
,c0[maxn]
;ll ans=0;
int t,n,m;
intfind
(int x)
void
unite
(int x,
int y)
ll pow2[
2*maxn]
;void
dfs(
int x)}if
(a[x]==0
) c0[x]++;
else c1[x]++;
}void
dfs(
int x)}}
intmain()
while
(t--
)int u,v,p=0;
for(
register
int i=
1;i<=n;
++i)
int xx,yy;
for(
register
int i=
1;i<=m;
++i)
}int rt;
for(
register
int i=
1;i<=n;i++)}
memset
(vis,0,
sizeof
(vis));
ans=0;
dfs(rt)
;printf
("%lld\n"
,ans)
;for
(int i=
1;i<=n;i++
) g[i]
.clear()
;}}
2013多校第六場
hdu 4655 題意 給乙個序列,每個位置可以塗1 ai種顏色,連續不相同的顏色為一段,對於乙個排列,所有的塗色方法產生的段數為s,求最大的s 分析 對於乙個排序,所有的段數為n 相鄰兩個位置塗相同顏色的個數s 怎麼計算相鄰兩個位置塗相同顏色的個數s?p i 表示字首積,即p i a1 a2 ai...
2020牛客多校第六場 K
題意 判斷給的序列是不是 任意1 n的全排拼接成序列的連續子串行 每乙個數字應該屬於的地方它只能出現一次。從任意點i開始,如果某個點在往後查詢的時候出現了兩次,那麼i點最多能夠延伸到那個地方。然後我們可以把每個點求一下最多能延伸到哪個點,直接記錄len。操作看 處理 由於k很大,可以到1e9,但是n...
杭電多校第六場(IF)
題意 有命題 將 b 進製數y按位相加,迴圈無窮次,最終結果若 x 0,則有y x 0,反之不然 給出b和x,判斷命題是否成立 打表發現的b x 1時成立,看到有數論大佬推出來的 想看推導的右轉 includeusing namespace std typedef unsigned long lon...