안녕하세요. 오늘은 피자게임을 할 거예요.

문제

https://www.acmicpc.net/problem/14606

아이디어

dp로 풀면 dp[i]=max(dp[a]+dp[b]+ab for a+b=i and a,b>0)이 됩니다.
수학으로 풀면 i개의 피자가 있을때 하나만 내리는것이 이득므로 1+2+3+...+(i-1)=i(i-1)/2가 됩니다.

소스코드

#include <iostream>
#define ll long long
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N;
    cin >> N;
    cout << N * (N - 1) / 2;
}


감사합니다.

0개의 댓글