Skip to content

RyanJeong/CP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CP

Resources for competitive programming

profile

Algorithm


Mathematics


Etc.


추천 문제집

사소한 팁

  • std::ios::sync_with_stdio(false); std::cin.tie(NULL);
    • 입력이 많은 CP 문제에서 사용할 수 있는 최적화
    • std::ios::sync_with_stdio(false) 명령을 통해 C 스트림과 C++ 스트림의 버퍼 동기화를 해제(동기화는 비용이 발생하므로 이를 해제하는 것이 좋으며, 대부분 CP 플랫폼은 싱글 스레드를 사용하므로 해제해도 무방)
    • std::cin.tie(NULL) 명령을 통해 std::cin의 입력 스트림과 std::cout의 출력 스트림의 연결을 해제한다. 스트림을 해제하는 이유는 두 스트림이 기본적으로 연결되어 있어 std::cin 명령을 통해 입력을 받으면 출력 스트림의 버퍼를 flush 한다. flush는 비용이 발생하므로, std::cin.tie(NULL) 명령을 사용해 두 스트림 간 연결을 해제하면 출력 스트림의 flush를 방지할 수 있다.

    the cout is tied to the cin object, which means every time we want to input data through the cin object, the cout object is flushed (emptied)

  • std::endl vs. '\n'
    • std::endl은 매번 flush 연산을 하므로 비용이 발생하지만, '\n'은 flush 연산을 하지 않아 출력이 많은 문제에서는 '\n'을 사용하는 것이 비용적으로 효율적임
  • 재귀함수 내 상대적으로 비용이 큰 지역변수는 static을 사용해 최초 한 번 생성을 보장하거나 재귀함수에서만 접근 가능한 위치에 변수를 선언하는 것이 비용적으로 효율적임
  • 알고리즘 문제 해결 전략
    • 4.6 수행 시간 어림짐작하기

      입력의 크기를 시간 복잡도에 대입해서 얻은 반복문 수행 횟수에 대해, 1초 당 반복문 수행 횟수가 1억(108)을 넘어가면 시간 제한을 초과할 가능성이 있다.

유용한 사이트

About

Resources for competitive programming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages