傳送門
考慮乙個位置答案傳遞性,如果某個位置的紅寶石轉動確定了,那麼會引起連鎖反應:
如圖,綠色的轉動確定了,那麼那兩個藍色的轉動也確定了
自己手玩一下,發現如果有解那麼隨便找乙個開始然後一路玩下去最後一定會有解,如果一旦有衝突那麼之後不管怎麼調整也都一定無解,(因為調整最後又會繞回自己繼續衝突)
然後就直接bfs搜就好了
#include#include#include
#include
#include
#include
using
namespace
std;
inline
intread()
while(ch>='
0'&&ch<='
9')
return x*f;
}const
int n=20007
;int fir[n],from
[n],to[n],val[n],cntt;
inline
void add(int a,int b,int
c)int
t,n,m,k;
intdel[n];
bool
vis[n],gg;
void bfs(int
st)
continue
; }
del[v]=w-del[x]; vis[v]=1
; q.push(v);}}
}int
main()
for(int i=1;i<=n+m;i++)
if(gg) printf("
no\n");
else printf("
yes\n");
}return0;
}
P4577 FJOI2018 領導集團問題
p4577 fjoi2018 領導集團問題 我們對整棵樹進行dfs遍歷,並用乙個multiset維護對於每個點,它的子樹可取的最大點集。我們遍歷到點 u 時 不選點 u 顯然答案就為它的所有子樹的子集大小之和 所以答案是單調不減的 選點 u 時,我們lower bound乙個比 val u 小且最接...
FJOI2018 領導集團問題
fjoi2018 領導集團問題 dp i j i為根子樹,最上面的值是j,選擇的最大值 觀察dp方程 1.整體dp已經可以做了。2.考慮優美一些的做法 dp i 如果對j取字尾最大值,顯然是不上公升的分段函式 而段數就是子樹sz 樹形dp的時候,子樹之間可以直接把分段函式按位相加。對於 w x 的,...
FJOI2018 領導集團問題
首先本題貪心不是很好做,可以考慮 dp 然後我們有了乙個很直接的想法,令 dp 表示以 i 號點為根當前選擇的節點中權值最小的權值為 j 的最大成員數,可以發現這樣做是 o n 3 的。可以發現這個 dp 有很多轉移是相同的,那麼我們這樣做是非常浪費的,為了能夠快速轉移,我們可以改變一下狀態,令 d...