POJ1002: 대규모 데이터 처리의 첫 번째 단계는 I/O

출처: 인터넷
작성자: 사용자
키워드: nbsp; 첫 번째 단계는 큰 데이터를이

이 문제는 어려운, 하지만 http://www.aliyun.com/zixun/aggregation/20522.html "> 테스트 데이터 (http://www.ntnu.edu.tw/acm/ProblemSetArchive / b_us_eastcen/1999/index.html) 아주 잔인 한, 있다 테스트 데이터의 여러 1 백만 라인.

아니 2000 밀리초도 처음 알 았 어, 프로그램의 첫 번째 버전의 결과 많은 함수, 전역 변수, 가능한 한 많이 피하와 동적 메모리 할당 및 구조체를 사용 하 여 작성 되었습니다. 나중에 항상 초과 된 발견. 다른 사람들의 답변 온라인 확인, 가정, 더 강한 입력 포맷 발견 다음 완료 메인에 가능한 한 멀리 너무 많은 스타일 원칙을 제어 하지 않습니다. 다른 입력 및 출력 흐름을 사용 하지 않는, 흐름 조금 느린 것 같다.

인터넷 (http://www.cnblogs.com/mobileliker/archive/2013/05/26/3099748.html)에서 더 나은 구조는 가로 막대형 차트의 0-9999999 하기 10 백만의 스파스 배열 NLGN 순서 제거. 메모리 한계는 꽉, 65536 KB,이 배열을 형성 하는 단어는 40 백만 바이트, 약 35000 K 바이트, 그래서 충분 한 메모리가.

이 솔루션에서 다른 장소는 그가 그것을 읽는 방식으로, 그는 읽고는 문자에 단일 문자에 그것을 읽고, 부주의 보이는 하지만 단일 읽기 라인을 저장 하 고 각 문자의 반복 반복. I/O 효율은 키

내 솔루션은 방법, 그리고 그의 솔루션은 또한 처럼, 작성 사실 위에서 배워야 푸시 더 극단적인 상태로이 메서드.

#include "stdio.h"


int _n, _nodup = 0, _idx [10000000];


int _mapint [25] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9};


int main () {


Int _i, _j, _x; 등록


레지스터 int _k;


레지스터 char _c;


scanf ("%d\n" & _n);

대 한
(_i = 0; _i < _n; + + _i) {


_x = 0; _j = 0;

(_j < 7) 동안
{


_c = GetChar ();


경우 (_c &gt; = '0' &amp; &amp; _c &lt; = '9') {


_x _x = * + _c-'0';


+ + _j;


} else if (_c &gt; = 'A' &amp; &amp; _c &lt; = 'Y' &amp; &amp; _c! = 'Q') {


_x _x = * + _mapint [_c-' A '];


+ + _j;


            }


        }


_idx [_x] + +;

동안
(GetChar ()! = ' \ n ');


    }




대 한
(_i _i &lt; 10000000; 0 = + + _i) {


_k = _idx [_i];


경우 (_k &gt; 1) {


printf ("%03d-%04d%d\n", (_i/10000), (_i %10000), _k);


_nodup = 1;


        }


    }





경우 (_nodup = = 0) printf ("아무 중복. \n");


반환 0;


}

1 편집: 아마도 더 가속 수행할 수 있습니다 나머지 연산자 "%"의 바이패스 출력 부분에.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.