題目大意:n個人,k種假面,每人戴一種,戴第i種的可以看見第i+1種,戴第k種的可以看見第1種,給出m條關係表示乙個人可以看到另乙個人,問k可能的最大值和最小值。(n<=100,000,m<=1,000,000)
思路:染色,若點i顏色為ci,就把點i能到的點染成ci+1,能到點i的點染成ci-1,如果染之前已經染過了,設要染的點為j,則cj和ci+1(-1)模k同餘,若cj不等於ci+1(-1),則k必然為|ci+1(-1)-cj|的因子,取gcd即可。若沒有出現這種情況,最大答案為各連通塊最長鏈的和。(稍微卡了個常卡到rank1 233)
#include#includeusing
namespace
std;
char b[1
<<21],*s=b,c;int
x;inline
intread()
#define r register int
#define mn 100000
#define mm 1000000
struct edgee[mm*2+5
];int h[mn+5],rh[mn+5],en,c[mn+5
],ans,mn,mx;
inline
void ins(int*h,int x,int y);h[x]=en;}
inline
int gcd(int x,int y)
inline
int z(int x)
void dfs(int
x)int
main()
printf(
"%d %d\n
",s<3?-1:s,s<3?-1:3
);}
1064 Noi2008 假面舞會
time limit 10 sec memory limit 162 mb submit 1960 solved 941 submit status discuss 一年一度的假面舞會又開始了,棟棟也興致勃勃的參加了今年的舞會。今年的面具都是主辦方特別定製的。每個參加舞會的人都可以在入場時選擇一 個...
bzoj1063 NOI2008 道路設計
time limit 20 sec memory limit 162 mb submit 931 solved 509 submit status discuss description z國坐落於遙遠而又神奇的東方半島上,在小z的統治時代公路成為這裡主要的交通手段。z國共有n座城市,一 些城市之間...
bzoj1063 Noi2008 道路設計
樹形dp。這道題的劃分方式和樹鏈剖分類似,但是重路徑能經過根節點,而且要求方案數,所以不能用樹鏈剖分。但是由這種關係可以知道答案很小為log n級別 翻看資料後,確認了答案最大為4。但應該有能使答案更大的資料 用f i j 0 1 2 分別表示,以i為子樹的節點中,不便利值最大的點不便利值為j。0代...