아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

수열과 쿼리의 부분합의 합

시간 제한4초메모리 제한1024 MB

요약
길이 N의 수열에 구간 대입 쿼리 Q개를 적용할 때, 모든 쿼리 구간 [U, D]와 부분 배열 [L, R]의 합을 구하고 998244353으로 나눈 나머지를 출력합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 조합론, 수학
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N이 있다. 처음에 모든 aia_i는 00이다. 이때 다음과 같은 쿼리를 사용해 수열 aa를 변화시킬 수 있다.

l r cl\ r\ c: 수열 aa의 ll번째부터 rr번째까지의 값을 cc로 바꾼다.

QQ개의 쿼리가 주어질 때, f(U,D,L,R)f(U,D,L,R)을 'UU번째부터 DD번째까지의 쿼리를 순서대로 사용했을 때 aL+aL+1+⋯+aRa_L+a_{L+1}+\cdots+a_R의 값'으로 정의한다. ff를 여러 번 시행할 경우, 각 시행은 서로 독립적이라 이전 ff의 시행이 현재 ff의 시행에 영향을 주지 않는다.

∑U=1Q∑D=UQ∑L=1N∑R=LNf(U,D,L,R)\sum_{U=1}^Q\sum_{D=U}^Q\sum_{L=1}^N\sum_{R=L}^Nf(U,D,L,R)을 998 244 353998\,244\,353 (=119×223+1)(=119\times 2^{23}+1)으로 나눈 나머지를 계산해 보자. 998 244 353998\,244\,353은 소수이다.

입력

첫 번째 줄에 정수 NN, QQ가 공백으로 구분되어 주어진다. (1≤N,Q≤300 0001\leq N,Q\leq 300\,000)

두 번째 줄부터 QQ개의 줄에 걸쳐 QQ개의 쿼리가 한 줄에 하나씩 순서대로 주어진다. ii번째 쿼리는 공백으로 구분된 세 정수 lil_i, rir_i, cic_i로 주어진다. (1≤li≤ri≤N1\leq l_i\leq r_i\leq N; 0≤ci<998 244 3530\leq c_i<998\,244\,353)

출력

∑U=1Q∑D=UQ∑L=1N∑R=LNf(U,D,L,R)\sum_{U=1}^Q\sum_{D=U}^Q\sum_{L=1}^N\sum_{R=L}^Nf(U,D,L,R)를 998 244 353998\,244\,353으로 나눈 나머지를 출력하시오.

예제2

  1. 예제 1

    입력
    2 2
    1 2 1
    2 2 2
    
    예상 출력
    14
    
  2. 예제 2

    입력
    10 10
    10 10 593603443
    4 9 993565789
    3 8 238321270
    7 8 424480868
    10 10 556869540
    8 10 279674600
    7 8 575417117
    6 8 948583421
    6 6 468656456
    4 10 865607491
    
    예상 출력
    830609277