[topcoder]TheConsecutiveIntegersDivOne
1144 단어 topcoder
우선 맨 해 튼 거리 최소 치 문 제 를 기억 하면 1 차원 상황 이 떠 오 르 고 점 이 중위 수 에 나타 나 는 것 이 가장 작다.여기 서도 네 개의 점 이 중위 자리 에 나타 나 는 것 이 가장 작 다 는 것 을 증명 할 수 있다.
문제 풀이 에 서 는 줄 이 고 싶 은 절대 치 를 최소 화 하 는 모든 상황 을 탐색 하 는 것 이다.
내 코드 는 좀 못 생 겼 지만 지 나 쳤 다.
#include <vector>
#include <algorithm>
using namespace std;
class TheConsecutiveIntegersDivOne {
public:
int find(vector <int> numbers, int k) {
sort(numbers.begin(), numbers.end());
int d = k / 2;
int left = 0;
int sumL = 0;
for (int i = left; i < left + d; i++) {
sumL += numbers[i];
}
int sumR = 0;
int right = left + d;
if (k % 2 == 1) {
right++;
}
for (int i = right; i < right + d; i++) {
sumR += numbers[i];
}
int result = sumR - sumL - d * d;
while (right + d < numbers.size()) {
sumL += numbers[left + d];
sumL -= numbers[left];
sumR += numbers[right + d];
sumR -= numbers[right];
result = min(result, sumR - sumL - d * d);
left++;
right++;
}
return result;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SRM 574먼저 연결 블록, 왼쪽 또는 오른쪽으로 나누어 다음과 같은 그림을 연결할 수 있다. 다섯 번째 줄을 이어서 세 번째 줄을 하나로 만들 수 있다. 이것은 욕심으로 해결할 수 있다. 그러나 위의 이런 두 번째 줄은 어느...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.