Card Game Is Great Fun

시간 제한3초메모리 제한1280 MB

요약
카드 열의 맨 앞이나 세 번째 카드를 뽑아 산더미 맨 위 카드와 색 또는 수가 같아야 하며, 얻는 가치 합의 최댓값을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 구간
정답자
아직 제출이 없습니다

문제

アンナは友人のブルーノとよくカードゲームで遊んでいたが,2 人で行うゲームには飽きてしまったの で 1 人でできるカードゲームを考えた.

このゲームの開始時には,さまざまな色のカードが N 枚一列に並んでおり,それぞれのカードには整数 が 1 つ書かれている.それぞれのカードの色は整数で表される.また,それぞれのカードには価値が定まっ ている.ゲーム開始時に列の先頭から i 番目 (1 ≦ i ≦ N) にあるカードの色は Ci であり,書かれている整 数は Ai である.そのカードの価値は Vi である.

カードの列からカードを 1 枚選んで取り除き,山札に加えていくという操作を繰り返すことでゲームを 行う.はじめ,山札にカードはなく,その状態からアンナは以下の操作を繰り返す.

  • 操作:カードの列の先頭から 1 番目もしくは 3 番目のカードを選ぶ.ただし,操作を行う前に山札 にカードが存在するときには,山札の一番上のカードと,色または書かれている整数の少なくとも一 方が一致しているようなカードしか列から選ぶことができない.選んだカードを列から取り除いて, 山札の一番上に加える.

操作によって選ぶことのできるカードが無くなった時点でゲームは終了する.ゲームが終了した時点で 山札にあるカードの価値の合計がアンナの得点となる.

このゲームにおいてアンナが得ることのできる得点の最大値はいくらになるだろうか.

ゲーム開始時に並んでいるカードの情報が与えられたとき,このゲームにおいてアンナが得ることので きる得点の最大値を求めるプログラムを作成せよ.

입력

標準入力から以下のデータを読み込め.

  • 1 行目には,整数 N が書かれている.これは,ゲーム開始時にカードが N 枚並んでいることを表す.
  • 続く N 行のうちの i 行目 (1 ≦ i ≦ N) には, 3 個の整数 Ci, Ai, Vi が空白を区切りとして書かれてい る.これは,ゲーム開始時に列の先頭から i 番目にあるカードの色が Ci,書かれている整数が Ai,価 値が Vi であることを表す.

출력

標準出力に,このゲームにおいてアンナが得ることのできる得点の最大値を表す整数を 1 行で出力せよ.

제한

  • 1 ≦ N ≦ 500.
  • 1 ≦ Ci ≦ 500 (1 ≦ i ≦ N).
  • 1 ≦ Ai ≦ 500 (1 ≦ i ≦ N).
  • 1 ≦ Vi ≦ 1 000 000 (1 ≦ i ≦ N).

예제2

  1. 예제 1

    입력
    5
    1 3 2
    4 2 9
    1 4 6
    2 3 3
    2 2 1
    
    예상 출력
    15
    
  2. 예제 2

    입력
    8
    11 5 31
    2 8 19
    2 9 2
    11 8 45
    4 8 22
    4 2 23
    6 9 58
    6 2 5
    
    예상 출력
    160