這是個慘烈的日子,讓我貼一貼成績。
嗯。這就tm很尷尬了。話說我二十分還能拿個rank4。。醉了
t1 world tour cf666b&667d
題意:給你一些單向邊,讓你求出四個點,使得經過這四個點的路徑盡可能的長(兩點之間走最短路徑,四個點不能重複,但是經過路徑可以)
直接暴力spfa求出最遠的兩個點,然後以這兩個點向外暴力求另外兩個,即:
a,b,?,?
?,?,a,b
?,a,b,?
三種情況。。
然而答案不唯一,卻沒有spj,這tm就很尷尬了。
暴力能拿最高分(其實暴力也是會求解出多種情況的吧,為什麼暴力得分就能全部拿到呢?…並不知道)。
t2 graph coloring cf662b
有一些邊(無向),和一些點,不保證聯通,但是每一條邊有兩種顏色,紅或藍,每一次操作乙個點,把所有和這個點相連的路徑的顏色全部翻轉(紅變藍,藍變紅)求最小的操作次數使得整個圖變為同一種顏色。。
比賽的時候想到用並查集維護然後dfs但是沒有時間打了(都花在第一題上)。後來下來才發現題解思路有些相似。。
每乙個點最多改變一次,因為改變兩次等於沒有變化。改變3次等於改變一次。
那麼答案有兩種可能,全部為紅色或者藍色。所以設兩個目標狀態去求。
然後我們可以發現,在乙個連通分量裡,只要第乙個點(第一不是編號,其實隨意哪乙個都可以)的狀態確定,剩餘點的狀態都可以根據這個點的狀態推出,所以我們就把每乙個連通分量裡的第乙個點設兩個狀態,然後分別求出整個連通分量的答案,取小的那乙個加入最後的答案裡。
然後把目標狀態設為紅藍分別求兩次,求出最小的那個就是答案。
**:uses math;
var
n,m,k,p,tot,num,num1,ans:int64;
i,j:longint;
s:char;
go,len,next,head,bz:array[0..200000]of longint;
a,b,col:array[0..100000]of longint;
procedure add(x,y,z:longint);
begin
inc(tot);
go[tot]:=y;
len[tot]:=z;
next[tot]:=head[x];
head[x]:=tot;
end;
procedure dfs(t:longint);
var
i,x:longint;
begin
inc(ans,bz[t]);
i:=head[t];
while i<>0 do
begin
x:=bz[t] xor len[i];
if bz[go[i]]=-1 then
begin
bz[go[i]]:=x;
dfs(go[i]);
end
else if x<>bz[go[i]] then ans:=maxlongint;
i:=next[i];
end;
end;
procedure fill(t:longint);
var
i:longint;
begin
i:=head[t];
bz[t]:=-1;
while i<>0 do
begin
if bz[go[i]]<>-1 then fill(go[i]);
i:=next[i];
end;
end;
procedure solve(n,j:longint);
var
i:longint;
ans1:int64;
begin
for i:=1 to n do bz[i]:=-1;
for i:=1 to m do
if (col[i]=1)and(bz[a[i]]=-1) then
begin
ans:=0;
bz[a[i]]:=1;
dfs(a[i]);
ans1:=ans;
ans:=0;
fill(a[i]);
bz[b[i]]:=1;
bz[a[i]]:=-1;
dfs(b[i]);
inc(num,min(ans1,ans));
end;
end;
procedure qufan(var x:longint);
begin
x:=1-x;
end;
begin
readln(n,m);
for i:=1 to m do
begin
read(a[i],b[i]);
read(s);
readln(s);
if s='b' then col[i]:=1 else col[i]:=0;
add(a[i],b[i],col[i]);
add(b[i],a[i],col[i]);
end;
solve(n,1);
num1:=num;
num:=0;
for i:=1 to tot do qufan(len[i]);
for i:=1 to m do qufan(col[i]);
solve(n,2);
num:=min(num1,num);
if num=maxlongint then writeln(-1)else
writeln(num);
end.
t3等我去瞧一瞧。。
T2 監考老師 題解
第二題,他並不是多難的演算法。甚至連搜尋都不用,他的題目要求和資料斷定了他第二題的地位。在乙個大試場裡,有 n 行 m 列的考生,小王和眾多同學正在考試,這時,有一部分考生 作弊,當然,監考老師能發現他們。但是只有乙個監考老師,他由於高度近視,只能發現與 他同行同列的作弊者,而且由於監考老師年老體弱...
2019 05 25 模擬 A 組 T2 數格仔
暴搜搜出前面幾個的答案 然後列舉每一項的係數再列舉乙個常數項推出規律 規律 fn fn 1 5 f n 2 fn 3 fn 4 f n f 5 times f f f fn fn 1 5 fn 2 fn 3 fn 4 然後將搜尋出來的前四項帶入 矩陣乘法優化 include include incl...
NOIP2012普及組T2 尋寶
傳說很遙遠的藏寶樓頂層藏著誘人的寶藏。小明歷盡千辛萬苦終於找到傳說中的這個藏寶樓,藏寶樓的門口豎著乙個木板,上面寫有幾個大字 尋寶說明書。說明書的內容如下 藏寶樓共有 n 1 層,最上面一層是頂層,頂層有乙個房間裡面藏著寶藏。除了頂層外,藏寶樓另有 n 層,每層 m 個房間,這 m 個房間圍成一圈並...