count
【問題描述】
李華終於逃離了無盡的英語作文, 重獲自由的他對一棵樹產生了興趣。
首先,他想知道一棵樹是否能分成大小相同的幾塊(即切掉一些邊,使得每個
連通塊的點數相同)。然後,他覺得這個問題過於簡單,於是他想知道一共有多
少種方案可以把這棵樹分成大小相同的幾塊。
然後他發現自己不會了,於是向聰明的你求助。
【輸入格式】
第一行乙個數,表示數的大小。
第二行至第 n 行,每行兩個數 x,y 表示 x 和 y 之間有一條邊。
【輸出格式】
一行,表示方案數。
【樣例一輸入】
61 2
2 32 4
4 55 6
【樣例一輸入】
3hint:
對於 30%的資料,1<=n<=100。
對於 60%的資料,1<=n<=100000。
對於 100%的資料,1<=n<=1000000。
#include#include#include
#include
#include
#include
#include
using
namespace
std;
#define m 1000009
intn;
int h[m],nex[m*2],to[m*2
],cnt,vis[m];
int sum[m],ans=2
;int build(int id,int
f)
return
sum[id];
}bool check(int
x)int
main()
build(
1,0);
for(int i=2;icheck(i);
/*乙個錯誤的寫法。。。。坑了我半天
for(int i=2;i<=sqrt(n);i++)
ans+=check(i)+check(n/i) //但是當i == n/i 就加重了。
*/ cout
}
dinner
【問題描述】
清兒今天請好朋友們吃飯,一共 n 個人坐在坐在圓桌旁。
吃飯的第一步當然是點餐了。 服務員拿來了 m 份選單。 第 i 個人閱讀選單並點出
自己喜歡的菜需要花費時間 t[i]。
當乙個人點完菜之後,就會把選單傳到他右手邊的第乙個人。
m 份選單是同時發出的,每個選單只能同時被乙個人閱讀。
清兒希望知道如何分發選單,才能讓點餐的總時間花費最少呢?
【輸入格式】
輸入檔名為 dinner.in
輸入第一行是 n 和 m,表示人數和選單數
輸入第二行,n 個數,表示每個人點餐所需要的時間。
【輸出格式】
輸出檔名為 dinner.out
輸出乙個整數表示點餐花費的最小時間。
【樣例一輸入】
3 21 5 10
【樣例一輸出】
10【樣例二輸入】
4 21 2 3 4
【樣例二輸出】
noip 模擬題 #1
5hint:
對於 20%的資料,n<=100.
對於 60%的資料,n<=10000.
對於 100%的資料,n<=50000,t[i]<=600
1014下午考試
題目大意 有乙個 n m 的矩陣,矩陣的每個位置上可以放置乙個數。對於第i行,第i行的差異定義為該行的最大數和最小數的差。乙個矩陣的差異,定義為矩陣中每一行差異的最大值。現在給定k個數v 1.k 問 從這k個數中選 n m 個數放入矩陣,能夠得到的矩陣的差異最小值是多少。n m k 100000,n...
10 9 下午 考試
t1 f i 表示不和法數大於i個的數量 f i c n ic 首先n m k n 先不考慮 用擋板法易知 ans c 即給m個果子中間再加上n 1個擋板的位置,在選n 1個 那考慮必須放乙個的情況,只要預先把m n,相當於每個籃子先放乙個 那考慮不合法數 i個,只需要預先給i個放k個,那這i個一定...
10 30 下午考試
p76 年?月?日?題目名稱 他 她 它 名稱 he she it 輸入 he.in she.in it.in 輸出 he.out she.out it.out 每個測試點時限 1 秒 1 秒 1 秒 記憶體限制 512mb 512mb 512mb 測試點數目 10 10 10 每個測試點分值 10...