커뮤니티 활동

기술

바베큐 작업은 특히 각 교실의 그룹 활동에 할당 된 학교의 지역 사회 활동을 관리하는 것입니다. 제한 교실은 쉬운 일이 아닙니다,이 협회를 준비해야한다.

표현 T2 K, T1과 각 지역 사회 활동 : 일 T1의 사회 활동 ~ (T2, T1 포함) k 번째 클래스 내에서 필요 T2.

순서 지정 교실 바베큐에 따르면, 항상 지역 사회 활동에 적용됩니다. 언젠가는 사회의 요구 사항을 충족하기 위해 교실의 남은 개수가 충분하지 않은 경우, 교실의 배포를 중지합니다. 사회에 알리기 위해 바베큐 필요성, 지역 사회 활동의 시간은 수행 할 수 없습니다.

입력

각 그룹은 제 1 입력 데이터 선 두 양의 정수 N, M, 일 커뮤니티 활동의 총 수의 총 수를 포함한다.

두번째 라인은 R이 i 번째는 양의 정수, N을 포함
나는
그것은 내가-하늘 교실의 수를 나타냅니다.

그 다음 세 개의 양의 정수 K, T있어서 m 열, 사회 활동의 각 동작의 정보가있다 . 1 , T 2. (K는, T1, T2는 제목에 기재되어 있음).

 

규정 :

일 번호 및 지역 사회 활동은 1에서 정수를 시작한다.

1≤n, m≤10
6
, 0≤ri≤10
9
, 0≤k≤10 9 1≤t 1 ≤t 2 ≤n.

산출

응용 프로그램이 모든 사회를 충족 할 수있는 경우, 출력은 0입니다.

그렇지 않으면, 출력 양의 정수, 지역 사회 활동 번호가 할 수없는 바베큐 활동을 알려야합니다.

샘플 입력

4 3
2 5 4 3
1 2 3
3 2 4
4 2 4

샘플 출력



사용법 #include <iostream> 
#INCLUDE <CString을>
 사용  스페이스 성병;
CONST  INT N = + 1E6 (50) ;
 길이 N, m;
 길이 A [N], 실 [N] T1 [N], T2 [N], 합계 [N];
INT 검사 ( INT의 중간) {
    memset 함수 (합계 0 , 는 sizeof (합));
    위한 ( INT 난 = 1 ; I <= 미드; I ++ ) {
        합 [T1 [I] - = 방 [I];
        합 [T2 [I] + 1 ] + = 방 [I];
    }
    INT CNT = 0 ;
    위한 ( INT 난 = 1 ; I <= N; I ++ ) {
        CNT + = 합 [I];
        경우 (a [I] + CNT < 0 )
             복귀  0 ;
    }
    반환  1 ;
}
값 int () {메인
    CIN >> >> N m;
    위한 ( INT 난 = 1 ; I <= N; I ++ ) {
        CIN >> A [I];
    }
    위한 ( INT 나 = 1 ; I <= m; I ++ ) {
        CIN >> 방 [I] >> T1 [I] >> T2 [I];
    }
    INT의 L = 1 , R = m + 1 ;
    반면 (L < R) {
         INT 중간 = (L + R) >> 1 ;
        경우 (검사 (중간))
            L = 중간 + 1 ;
        다른 
            R = 중간;    
    }
    경우 (L == m + 1 )
        COUT << 0 << ENDL;
    다른 
        COUT << L << ENDL;    
    반환  0 ;
} 
코드보기

 

첫째,이 질문의 의미를 명확히하기 위해, 나는 여러 번 읽고 그를 싶습니다.

문제의 영향이 지역 사회에게 교실 할당을주고 있다고하지만, 총 학급이 제한되고, 매일 다른 교실의 나머지 부분은, 노골적으로 넣어, 그것은 문제의 샘플을 채취하기 위해, 뺄셈의 범위에있을입니다 제 4 행의 총 일수는 4,3의 숫자로 표시되는 그룹 활동을 나타낸다. 두 번째 줄은 매일 교실에서 사일 남아의 수를 나타내며, 다음 3 개 행이 필요한 교실의 수를 포함하여 지역 사회 활동의 정보를 나타내며, 며칠 동안 계속했다. 첫 번째 커뮤니티 활동 정보를 가지고, 213 매일 사용이 개 교실에서 처음으로 1-3일을 나타냅니다의이 시간은 2,543,254 각각 마이너스은 2

이 교실 대신이 점유,이 시간이 남아있는 교실 0323에 대한 정보를 업데이트 한 다음 첫 번째 2-4일에서 클럽 활동을 대신하여 제 2 정보 (324) 지역 사회 활동을보고, 세 개의 교실을 매일 사용하는, 각 빼기 3 (323)에 0,323을 넣어 시간 후 교실의 나머지 셋째 날이 찾을 수 있습니다,하지에 3, 다음, 할당 교실 활동 정지, 바베큐 빼기 이 보고서는 사회 활동, 그래서 그냥 라인에 부정적인 값 때문에 사회 활동의 범위의 첫 번째 발견, 다음 프로그램이 끝나고, 요구 사항을 충족시킬 수 없다 말한다.

이 지식 질문에 대한 답변과 관련된 두 점 차이 배열이 있습니다

i 번째 지역이 충족되지 필요한 정도 문제 결과 모노톤, 당신은 해결하기 위해 반 답을 사용할 수있는 대답의 첫 번째 절반, 아래,,,의 다음 미래에이 질문을 난을 번째 사회는 모든 사회가되어 있어야합니다 충족시킬 수 없다, 이것에 대해 생각합니다. 우리가 라인에 사회 활동의 첫 번째 대회를 찾을 수 있도록, 다음, 절반의 답을 사용

 

 최소 간격과 최대 값 (L)의 R에 대한 답을 찾기 위해 이진 응답 요구를 사용하여, 다음 2로 나눈 1 의미 (L + R) >> 1 표시 미드, (L + R) >> (L + R)로 처리 정수 부분은, 그것은 또한 체크 기능이 기능에 중간 패스를 필요로하는 기능 중반 자격을 결정하기 위해, 대답의 절반은 쓰기 확인 기능이 더 중요하다, 또한 때문에 특정 주제의 체크 기능 대답의 나머지 절반 부분은 템플릿 수있다

 

 

 

이 질문을 가지고, 우리는 (만족되지 않는 1과 0으로 표시 조건을 만족, 위 참조 체크 기능이 활동이 충족 중반이라고하면 만족 할 수없는 협회의 활동을 결정하는 데 사용됩니다 쓰기 조건), 우리는이 리터 = 중간 + 1, 우리는 만족을 찾고 있습니다와 국경 지역을 만족하지 않고, 우리가 처음 활동을 찾고있는 것이 충족되지 않기 때문에, 중반 + 1이 만족 될 수도 있고되지 않을 수도 있습니다 대회.

 

 (위 그림 참조) 활성 중반이 충족되지 언급 경우, 중간이 충족되지 않기 때문에 우리는 R = 중간, 우리는 오른쪽 테두리, 유료 관심의 경계를 변경해야이 시간을 가지고, 우리는 만족하지 않습니다 찾고 있습니다 우리가 할 수있는 그렇게하지 잃게 중반, R = 중간 1, 당신이있는 거 잘못된 경우.

그래서 L = 종료 시간에 R 2 분의 단부 좁혀 있었다.

코드 R = m + 1, 커뮤니티 활동의 수 m가 아직 종료되지 않은에가, 그 대답의 범위가 할 플러스 1 왜 m 아에되어야하는 이유 다른 있기 때문에 여기서 설명하는 우리는이 사건을 표시하기 위해 m + 1을 사용하므로 경우, 즉, 모든 사회 활동은 답의 범위는 m에 m + 1 대신에 1-1 것을, 만족하고 있습니다.

 

 

 

쓰기 기능, 차이 배열의 여기에 자연에 확인합니다. 첫 번째 차이 배열이 무엇인지 설명한다.

이 두 경우는, 상기 어레이 A와 B, B의 경우 [I] = A [i]를 -a [I-1], B는 다음 배열의 배열 차동 배열이라한다.

1 2 3 2 3 4 5 6 7 4; 예를 들어, 어레이 A를 존재

어레이 B 후 차분이다 1201-2311-3

배열 b는 특성을 갖고 그 값 (B [0] + B [1] +```+ B [I]) B A [I]의 값과 동일하게 배열을 추가

방법은 유용 배열 간격 감산 어드레싱에서 차이가가이 문제의 샘플을 채취하는 상기 2,5,4,3는 [4] 상기에 배열 A [1]에 기탁

 

 

 

 

추천

출처www.cnblogs.com/fate-/p/12239140.html