겹치지 않게 이야기 구간을 골라 노출된 유권자의 투표 성향을 조정하고, 오른쪽 후보와 왼쪽 후보의 성향 합 차이를 최대로 만든다.
보통5동적 계획법구간정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB선거에서 가짜 뉴스는 자기 후보의 득표를 늘리기보다 상대 후보의 지지자가 투표장에 나오지 않게 만드는 데 쓰인다. 흔히 쓰는 방법은 특정 집단을 겨냥해 그 집단이 지지하는 후보의 부정적인 소식을 그 집단의 기존 편견에 들어맞는 형태로 퍼뜨리는 것이다. 이 문제는 그 상황을 다음과 같이 모형으로 옮긴다.
유권자 j는 좌우 정치 성향을 나타내는 축 위의 실수 위치 xj에 있고, 위치가 0인 유권자는 없다. xj<0인 유권자는 좌파 후보에게, xj>0인 유권자는 우파 후보에게 투표한다. 유권자 j의 투표 성향은 pj이다.
가짜 뉴스 i는 구간 [ℓi,ri]와 계수 di로 정해지며 0≤di≤1이다. 구간 [ℓi,ri] 안에 있는 유권자가 이 뉴스에 노출되면 그 유권자의 투표 성향은 pj에서 pj×di로 바뀐다.
캠프는 어떤 유권자도 두 개 이상의 구간에 들어가지 않도록 퍼뜨릴 가짜 뉴스의 집합을 고른다. 고른 구간 하나에 들어간 유권자는 그 뉴스에 노출된다. 고른 뉴스를 모두 퍼뜨린 뒤, 우파 후보에게 투표하는 유권자의 투표 성향 합에서 좌파 후보에게 투표하는 유권자의 투표 성향 합을 뺀 값을 최대로 만들어라.
첫째 줄에 데이터 집합의 개수 K가 주어진다(1≤K≤100). 이어서 데이터 집합 K개가 차례로 주어진다.
각 데이터 집합의 첫째 줄에는 유권자 수 n과 가짜 뉴스 수 m이 주어진다(1≤n≤200, 1≤m≤50).
다음 n개 줄에는 유권자 j의 위치 xj와 투표 성향 pj가 주어진다(−1≤xj≤1, xj=0, 0≤pj≤1). 유권자는 xj가 감소하지 않는 순서로 주어진다.
다음 m개 줄에는 가짜 뉴스 i의 ℓi, ri, di가 주어진다(−1≤ℓi≤ri≤1, 0≤di≤1). 가짜 뉴스는 ri가 감소하지 않는 순서로 주어진다.
모든 수는 소수점 아래 두 자리까지만 주어진다. 어떤 xj도 어떤 ℓi나 ri와 같지 않다.
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 x는 1부터 시작하는 데이터 집합의 번호이다.
다음 줄에 우파 후보를 지지하는 유권자의 투표 성향 합에서 좌파 후보를 지지하는 유권자의 투표 성향 합을 뺀 값의 최댓값을 소수점 아래 두 자리로 반올림해 출력한다. 정확히 중간인 값은 0에서 먼 쪽으로 반올림한다. 즉 0.375는 0.38로, -0.125는 -0.13으로 출력한다. -0.00 대신 0.00을 출력한다.
각 데이터 집합 뒤에는 빈 줄을 하나 출력한다.