DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제문제집
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 계정 연동을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

꽃 배달

문제로 돌아가기

해설

트리를 111번 정점에 뿌리내리고, 꽃집에 000부터 K−1K-1K−1까지 번호를 붙인다. 정점 vvv의 서브트리 안에 있는 꽃집의 비트마스크를 mvm_vmv​라고 하자. 자식의 마스크를 OR하여 O(N)O(N)O(N)에 계산한다.

꽃집 집합 SSS를 방문한 후 지나간 정점은, 111번 정점에서 SSS의 각 꽃집까지 가는 경로의 합집합과 정확히 같다. 따라서 딴 꽃의 총수는 F(S)=∑v:(mv&S)≠0avF(S)=\sum_{v:(m_v\mathbin{\&}S)\ne0}a_vF(S)=∑이다. 개를 이미 팔았으므로, 접두 집합 가 유효할 필요충분조건은 이다.

b[T]=∑v:mv=Tavb[T]=\sum_{v:m_v=T}a_vb[T]=∑v:mv​=T​a 및 라 하자. SOS DP로 를 계산한다. 그러면 이다. 여기서 XOR를 이용해 의 보수 마스크를 구했다.

dp[S]dp[S]dp[S]를 정확히 SSS의 꽃집을 성공적으로 방문한 순서의 수라 하자. dp[0]=1dp[0]=1dp[0]=1이고, S≠0S\ne0S에 대해 다음과 같다.

dp[S]={0,F(S)<∣S∣,∑i∈Sdp[S∖{i}],F(S)≥∣S∣.dp[S]=\begin{cases}0,&F(S)<|S|,\\\sum_{i\in S}dp[S\setminus\{i\}],&F(S)\ge |S|.\end{cases}dp[S]={

마지막 꽃집 iii별로 경우를 나눈 것이다. 모든 덧셈은 998 244 353998\,244\,353998244353으로 나눈 나머지로 계산하고, 답은 dp[(1≪K)−1]dp[(1\ll K)-1]dp[(1≪K)−1]이다.

시간 복잡도는 O(N+K2K)O(N+K2^K)O(N+K2K), 공간 복잡도는 O(N+2K)O(N+2^K)O(N+2K이다. 꽃의 총수는 이하이므로 64비트 정수로 충분하다.

Solution written by GPT6

v:(mv​&S)=0​
av​
∣S∣|S|∣S∣
SSS
F(S)≥∣S∣F(S)\ge |S|F(S)≥∣S∣
v
​
A=∑vavA=\sum_v a_vA=∑v​av​
z[T]=∑U⊆Tb[U]z[T]=\sum_{U\subseteq T}b[U]z[T]=∑U⊆T​b[U]
F(S)=A−z[((1≪K)−1)⊕S]F(S)=A-z[((1\ll K)-1)\mathbin{\oplus}S]F(S)=A−z[((1≪K)−1)⊕S]
SSS

=
0
0,
∑i∈S​dp[S∖{i}],
​
F(S)<∣S∣,F(S)≥∣S∣.​
)
2⋅10142\cdot10^{14}2⋅1014