hihocoder 1470 公平的遊戲:有一些人在玩乙個遊戲。遊戲的舞台發生在乙個 n 個點的樹上。
這個遊戲分為很多輪,每一輪都有一些玩家參與,每個玩家都會降落在一條給定的邊上(不同玩家的邊不同)。之後這 n 個點上都會隨機出現乙個0或者1作為權值。
我們說這一輪遊戲是公平的,當且僅當這一輪中,對於每個玩家,如果將她所在的邊刪除,那麼兩邊對應的兩個子樹的點權和是相等的。
對於每一輪,我們給出每個玩家的位置,你需要計算出該輪遊戲是公平的概率 p。為了保證輸出是整數,你只需要輸出 p 2n % (109+7) 就可以了。
輸入樹的點從1開始標號。
第一行兩個數 n 和 m 分別表示樹的點數和遊戲的輪數。
接下來 n-1行每行兩個數 a 和 b 表示一條邊。
接下來 m 行每行表示一輪遊戲。
其中的第 i 行由乙個數字 ti 開頭,表示這輪遊戲有 ti 個玩家,
接下來 ti 個數對,其中第 j 個數對 ai,j 和 bi,j 表示第 j 個玩家所在的邊的兩個端點。
n, m ≤ 100000
所有 ti 的和 ≤ 1000000
輸出輸出 m 行,每行乙個數表示答案。
樣例輸入
5 51 2
1 33 4
3 54 1 2 1 3 3 4 3 5
1 3 4
2 3 4 1 2
1 3 5
2 3 4 3 5
樣例輸出15
252對於每輪遊戲,t個邊,把樹分為t+1部分,每部分作為乙個新的結點,由這t個邊連成一棵新的樹。 如果這棵樹不是一條鏈,只有全0符合要求。 如果這棵樹是一條鏈,只考慮兩端的結點包含的原圖中的結點數,設為x,y,易證結果為cxx+y。 深度遍歷原樹,得到每個結點的開始時間和結束時間,可以o(t)時間構造新樹,判斷樹是否為鏈可以根據結點的度數。#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef uint8_t byte;
typedef int64_t illong;
typedef uint64_t ullong;
typedef uint32_t uint;
#define clean(x) memset(x,0,sizeof(x))
#define tr(i,obj) for(__typeof(obj.begin()) i=obj.begin();i!=obj.end();++i)
const int tsize=1e5+3;
const ullong mod=1e9+7;
struct node
};int n,m;
node *base[tsize];
node nodes[tsize*2];
int size[tsize],lev[tsize];
bool visited[tsize];
int st[tsize],en[tsize];
int deg[tsize];
int nodec=0;
struct sa
};sa sas[tsize*2];
int sac=0;
vector vec,stk,rs;
ullong fact[tsize],fact_inv[tsize];
ullong pow(ullong base,ullong ind)
base=(ullong)base*base%mod;
ind>>=1;
}return rs;
}void dfs(int ind)
}en[ind]=sac;
sas[sac++].set(false,ind);
assert(sac2)
stk.pop_back();}}
assert(stk.empty());
assert(rs.size()==2);
assert(rs[0]+rs[1]<=n);
return c(rs[0]+rs[1],rs[0]);
}int main() else
}assert(vec.size()==(t*2+2));
sort(vec.begin(),vec.end());
cout<
HihoCoder1470 公平的遊戲
有一些人在玩乙個遊戲。遊戲的舞台發生在乙個 n 個點的樹上。這個遊戲分為很多輪,每一輪都有一些玩家參與,每個玩家都會降落在一條給定的邊上 不同玩家的邊不同 之後這 n 個點上都會隨機出現乙個0或者1作為權值。我們說這一輪遊戲是公平的,當且僅當這一輪中,對於每個玩家,如果將她所在的邊刪除,那麼兩邊對應...
1470 調整方陣
題目描述 輸入乙個n n 10 階方陣,按照如下方式調整方陣 1.將第一列中最大數所在的行與第一行對調。2.將第二列中從第二行到第n行最大數所在的行與第二行對調。依此類推.n 1.將第n 1列中從第n 1行到第n行最大數所在的行與第n 1行對調。n.輸出這個方陣 輸入 包含多組測試資料,每組測試資料...
重新排列陣列 1470
題目 給你乙個陣列 nums 陣列中有 2n 個元素,按 x1,x2,xn,y1,y2,yn 的格式排列。請你將陣列按 x1,y1,x2,y2,xn,yn 格式重新排列,返回重排後的陣列。示例 1 輸入 nums 2,5,1,3,4,7 n 3 輸出 2,3,5,4,1,7 解釋 由於 x1 2,x...