C++에서 이진 리프팅을 사용하여 N 숫자의 접두사 합계에서 X보다 크거나 같은 첫 번째 요소를 찾습니다.
이 문제에서는 N개의 숫자와 정수 값 x로 구성된 배열 arr[]을 얻습니다. 우리의 임무는 X보다 크거나 같은 N 숫자의 접두어 합에서 첫 번째 요소 를 찾기 위해 이진 부스팅을 사용하는 프로그램을 만드는 것입니다.
접두사 sum 数组元素的强>은 각 요소가 해당 인덱스까지 초기 배열의 모든 요소의 합계인 배열입니다.
예제 - array[] = {5, 2, 9, 4, 1}
prefixSumArray[] = {5, 7, 16, 20, 21}
이 문제를 이해하기 위해 예를 들어 보겠습니다.
Input: arr[] = {5, 2, 9, 4, 1}, X = 19 Output: 3
Solution
여기에서는 Binary Boost 개념을 사용하여 문제를 해결하겠습니다. 이진 승격은 주어진 숫자의 값을 0에서 N까지 2의 거듭제곱(비트 뒤집기에 의해 수행됨)으로 증가시킵니다.
"P" 인덱스의 초기 값을 찾는 부스트 이진 트리와 유사한 개념을 고려해 보겠습니다. 이는 비트를 뒤집어 값이 X보다 크지 않도록 함으로써 증가됩니다. 이제 이 위치 "P"에서의 양력을 고려해 보겠습니다.
이를 위해 숫자의 비트를 뒤집기 시작합니다. 예를 들어 i번째 비트를 뒤집어도 합이 X보다 크지 않습니다. 이제 'P' 값에 따라 두 가지 경우가 있습니다.
대상 위치는 'position + 2^i'과 'position + 2^(i+1)' 사이에 있습니다. 여기서 i-th 부스팅하면 값이 증가합니다. 또는 대상 위치는 "position + 2^i" 사이입니다. 이를 사용하여 우리 솔루션 프로그램
#include <iostream> #include <math.h> using namespace std; void generatePrefixSum(int arr[], int prefSum[], int n){ prefSum[0] = arr[0]; for (int i = 1; i < n; i++) prefSum[i] = prefSum[i - 1] + arr[i]; } int findPreSumIndexBL(int prefSum[], int n, int x){ int P = 0; int LOGN = log2(n); if (x <= prefSum[0]) return 0; for (int i = LOGN; i >= 0; i--) { if (P + (1 << i) < n && prefSum[P + (1 << i)] < x) { P += (1 << i); } } return P + 1; } int main(){ int arr[] = { 5, 2, 9, 4, 1 }; int X = 19; int n = sizeof(arr) / sizeof(arr[0]); int prefSum[n] = { 0 }; generatePrefixSum(arr, prefSum, n); cout<<"The index of first elements of the array greater than the given number is "; cout<<findPreSumIndexBL(prefSum, n, X); return 0; }
이 어떻게 작동하는지 설명하기 위해 인덱스 위치
를 고려합니다. 출력
The index of first elements of the array greater than the given number is 3
위 내용은 C++에서 이진 리프팅을 사용하여 N 숫자의 접두사 합계에서 X보다 크거나 같은 첫 번째 요소를 찾습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











iPhone에서 나의 찾기를 끄면 어떻게 되나요? 나의 iPhone 찾기는 분실했거나 도난당한 기기를 찾는 데 도움이 됩니다. 나의 iPhone 찾기를 활성화하면 지도에서 기기의 위치를 추적하고, 소리를 재생하고, 기기를 찾는 데 도움을 줄 수 있습니다. 나의 찾기에는 다른 사람이 귀하의 iPhone을 사용하는 것을 방지하는 활성화 잠금 기능도 포함되어 있습니다. 나의 iPhone 찾기를 끄면 이러한 모든 기능이 손실되어 분실된 Apple 기기를 복구하기 어려울 수 있습니다. 나의 iPhone 찾기는 매우 유용하지만 휴대폰을 판매, 기부, 교환하거나 배터리 교체 또는 기타 서비스를 위해 보낼 때는 비활성화해야 합니다. 이렇게 하면 누구도 귀하에 관한 정보에 접근할 수 없습니다.

Apple의 나의 찾기 앱을 사용하면 iPhone이나 기타 기기의 위치를 찾아 분실하거나 잊어버리는 일을 방지할 수 있습니다. 나의 찾기는 장치를 추적하는 데 유용한 도구이지만 개인 정보 보호 문제가 우려되거나 배터리 소모를 원하지 않는 경우 또는 기타 이유로 비활성화할 수 있습니다. 다행히도 iPhone에서 나의 찾기를 끄는 방법에는 여러 가지가 있으며, 이 기사에서는 이에 대해 모두 설명하겠습니다. iPhone에서 나의 찾기를 끄는 방법 [4가지 방법] 네 가지 방법으로 iPhone에서 나의 찾기를 끌 수 있습니다. 방법 1을 사용하여 찾기를 끈 경우 비활성화하려는 장치에서 이 작업을 수행할 수 있습니다. 방법 2, 3, 4를 진행하려면 Find Finder를 끄려는 iPhone의 전원을 끄거나

C#에서 Array.IndexOf 함수를 사용하여 배열에 있는 요소의 인덱스를 찾습니다. C# 프로그램에서 배열에 있는 요소의 인덱스를 찾아야 하는 경우 Array.IndexOf 함수를 사용할 수 있습니다. Array.IndexOf 함수는 지정된 배열 범위 내에서 지정된 요소를 찾고 해당 요소가 처음 나타나는 인덱스를 반환합니다. 요소를 찾을 수 없으면 -1이 반환됩니다. 다음은 Array.IndexOf 함수를 사용하여 배열에서 요소를 찾는 방법을 보여 주는 샘플 코드입니다.

하드 드라이브 일련 번호와 MAC 주소는 컴퓨터 하드웨어의 중요한 식별자이며 컴퓨터 시스템을 관리하고 유지하는 데 매우 유용합니다. 이 문서에서는 하드 디스크 일련 번호와 MAC 주소를 찾는 방법을 소개합니다. 1. 하드 드라이브 일련 번호를 찾으십시오. 하드 드라이브 일련 번호는 하드 드라이브 제조업체가 하드 드라이브를 식별하고 추적하는 데 사용하는 고유 식별자입니다. 운영 체제에 따라 하드 드라이브 일련 번호를 찾는 방법이 약간 다릅니다. Windows: 명령 프롬프트를 열고(시작 메뉴에서 "cmd" 검색) 다음 명령을 입력하고 Enter를 누릅니다. wmicdisk

PHP의 glob() 함수는 파일이나 디렉터리를 찾는 데 사용되며 강력한 파일 작업 함수입니다. 지정된 패턴 일치를 기반으로 파일 또는 디렉터리의 경로를 반환할 수 있습니다. glob() 함수의 구문은 다음과 같습니다. glob(pattern, flags) 여기서 패턴은 일치할 패턴 문자열을 나타내며 *.txt(.txt로 끝나는 일치 파일)와 같은 와일드카드 표현식일 수 있습니다. 특정 파일 경로. 플래그는 함수를 제어하는 데 사용되는 선택적 매개변수입니다.

이 문제에서는 n개의 정렬되지 않은 정수 값과 정수 val을 포함하는 배열 aar[]가 제공됩니다. 우리의 임무는 정렬되지 않은 배열에서 요소의 시작 및 끝 인덱스를 찾는 것입니다. 배열에 요소가 나타나면 "시작 인덱스와 끝 인덱스"를 반환합니다(배열에서 두 번 이상 발견된 경우). "단일 인덱스"(발견된 경우) 배열에 없으면 "요소가 존재하지 않습니다". 문제를 이해하기 위해 예를 들어 보겠습니다. 예 1Input:arr[]={2,1,5,4,6,2,3},val=2Output:startingindex=0,endingindex=5에서는 요소 2가 두 번 나타나는 것을 설명합니다. , 처음에는 인덱스 = 0에 나타나고 두 번째에는

컴퓨터 하드 드라이브의 일련번호를 확인하는 방법 컴퓨터 기술의 발달로 컴퓨터 하드 드라이브는 우리 삶에 없어서는 안 될 부분이 되었습니다. 중요한 파일을 저장하거나 운영 체제 및 소프트웨어를 설치하는 등의 작업을 완료하려면 하드 디스크에 의존해야 합니다. 하드 드라이브의 일련 번호와 같은 컴퓨터 하드 드라이브에 대한 몇 가지 기본 정보를 이해하면 컴퓨터 시스템을 더 잘 관리하고 유지하는 데 도움이 될 수 있습니다. 그렇다면 컴퓨터 하드디스크의 일련번호를 확인하는 방법은 무엇일까요? 이 기사에서는 몇 가지 일반적인 방법을 소개합니다. 방법 1: Windows 시스템과 함께 제공되는 명령줄 도구 사용 Windows 시스템

Python에서 해시 조회 알고리즘을 작성하는 방법은 무엇입니까? 해시 검색 알고리즘이라고도 알려진 해시 검색 알고리즘은 해시 테이블을 기반으로 한 데이터 검색 방법입니다. 선형 검색 및 이진 검색과 같은 기존 검색 알고리즘과 비교하여 해시 검색 알고리즘은 검색 효율성이 더 높습니다. Python에서는 사전을 사용하여 해시 테이블을 구현한 다음 해시 조회를 구현할 수 있습니다. 해시 검색 알고리즘의 기본 개념은 검색하려는 키워드를 해시 함수를 통해 인덱스 값으로 변환한 후, 인덱스 값을 기준으로 해시 테이블에서 검색하는 것이다.
