본문 바로가기 메뉴 바로가기

weekly ps

  • [C언어] 0. 개요
  • [C언어] 1.C언어 프로그램의 기본 구조
  • [C언어] 2.printf 함수와 이스케이프 시퀀스
  • [C언어] 3.이진수와 비트 단위
  • [C언어] 4.변수(1) (정수형 변수 int)
  • [C언어] 5.변수(2) (실수형 변수)
  • [C언어] 6.조건문 (if, else, else if, switch case)
  • [C언어] 7.변수 (3) (변수형 char)
  • [C언어] 8.반복문 (for, while, do while)
  • [C언어] 9.변수와 상수
  • [C언어] 10.다중 반복문
  • [C언어] 11.이진수와 비트연산자
  • [C언어] 12.배열
  • [C언어] 13.연산자 우선순위
  • [C언어] 14.문자열
  • [C언어] 15.형 변환
  • [C언어] 16.포인터
  • [C언어] 17.문자열 관련 함수
  • [C언어] 18.함수
  • [C언어] 19.구조체
  • 0. 시간복잡도
  • 1. 자료구조
  • 2. 스택
  • 3. 힙
  • 4. 유니온 파인드
  • 5. 스파스 테이블
  • 0. 시간복잡도
  • 1. 에라토스테네스의 체
  • 2. 검색
  • 3. 병합 정렬
  • 4. 유클리드 호제법
  • 5. 페르마의 소정리
  • 6. 동적 계획법
  • 7. 크루스칼 알고리즘
  • 8. 프림 알고리즘
  • 9. 오일러 피 함수
  • 10. 트리의 지름
  • 11. 컨벡스 헐 트릭
  • 12. 모스 알고리즘
  • 13. 모스 알고리즘 on 트리
  • 분류 전체보기 (78)
    • C, C++ (20)
    • 검색 ( Search ) (1)
    • 정렬 ( Sort ) (1)
    • 선형 자료구조 (2)
    • 동적 계획법( Dynamic Programming.. (2)
    • 정수론 ( Number Theory ) (4)
    • 그래프 ( Graph ) (4)
    • 그래프 - 트리 ( Tree ) (1)
    • 범위 쿼리 처리 ( Range Query ) (3)
    • 프로그래밍 대회 (1)
      • ACM-ICPC (1)
    • 문제 풀이 (36)
    • 기본 이론 (2)







  


weekly ps
[BOJ 4008] 특공대

DP[i] = 1 ~ i 병사들로 얻을 수 있는 조정된 전투력의 최댓값 위와 같은 간단한 DP를 구하면 된다. SUM[i] = X[1]+X[2]+...+X[i] 로 미리 sum 배열을 구해 놓으면 SUM[i] - SUM[j] = X[j+1]+X[j+2]+...+X[i] 가 성립하므로 아래와 같이 DP[i]를 구할 수 있다. 이 식을 전개하여 컨벡스 헐 트릭을 사용할 수 있게 i 와 관련된 함수( = SUM[i]가 곱해진 항) , j와 관련된 함수, 상수를 나누면 위와 같이 된다. 이제 A[i] = SUM[i], B[j] = -2*a*sum[j]+b, C[j] = DP[j]-b*sum[j]+a*sum[j]^2, D[i] = a*sum[i]^2+c 로 대응시킬 수 있다. min 함수가 아닌 max 함수이지만..

문제 풀이 2017. 10. 31. 17:32
문의 rikang93@gmail.com | Blog is powered by Tistory / Designed by Tistory

티스토리툴바