Challenge
Careers
Class
Connect
로그인 후 문제풀이가 가능합니다.
JS
이번 문제는 수학적 방법을 통해 중복 연산을 없애고, 실패 지점을 기록하는 방법으로 설계했습니다 증가된 성능들이 a b c d e 로 존재한다면 비용은 a^2 + b^2 + ...이 됩니다. 그럼 여기서 1을 증가시킨다면 (a+1)^2 + ... 이 되고, 이 식을 전개시키면 a^2 + b^2 +... +2(a+b+c+...) + 1*n 이 됩니다. 문자로 치환해보자면 (이전 비용) + 2 * (전체 성능 향상 값 합) + (성능 향상된 컴퓨터 개수) 이것을 기반으로 설계하고 코딩했습니다. // 입력처리 const fs = require('fs') const input = fs.readFileSync('input.txt', 'utf8') .trim() .split(/\n+/) const [computerNum, budget] = input[0].split(' ').map(BigInt) const clusterObj = {} const clust...
두 코드의 차이가 뭔지 모르겠습니다.
A 코드와 B 코드의 차이는 cal 함수의 return false가 for문의 안에 있는 것과 밖에 있는 차이 뿐입니다. return false가 for문 안에 있는 A코드는 정답이 맞으며 return false가 for문 밖에 있는 B 코드는 오답이 발생합니다. (시간 초과가 아닌 그냥 오답입니다.) 왜 이런 차이가 발생하는지 모르겠습니다. A 코드) #include <iostream> #include <cmath> #include <algorithm> using namespace std; #define ll long long int n; ll arr[100001]; ll b; bool cal(ll k) { ll mini = arr[0] + k; ll sum = 0; if (k == 0) return true; for (int i = 0; i < n; i++) { if (arr[i] < mini) sum += (ll)pow(mini - arr[i], 2); else break...
해당 문제에 엣지케이스가 존재하는 것 같습니다.
예산이 10^18일 때, 최대 증가할 수 있는 컴퓨터의 성능은 10^9입니다. 따라서, 입력값으로 주어지는 컴퓨터의 최대 성능인 10^9 + 최대 증가할 수 있는 컴퓨터의 성능 10^9 = 2 * 10^9가 나와야 합니다. 허나, 해당 값이 나오지 않는데도 테스트 케이스 전체가 통과되는 경우가 있습니다. 해당 테스트 케이스를 추가하면 좋을 것 같습니다.
수퍼컴퓨터 클러스터 문제 시간 초과의 원인을 모르겠습니다
#include #include using namespace std; int vCom[100001]; typedef long long ll; int main(int argc, char** argv) { ios::sync_with_stdio(0); cin.tie(0); int n; ll B; cin >> n >> B; for ( int i = 0 ; i < n ; ++i ) { cin >> vCom[i]; } ll answer = 0; int temp; int min = 0; int max = 2000000000; while(min <= max) { int mid = (max + min) / 2; ll cost = 0; bool bPossible = true; for ( int i = 0 ; i < n ; ++i ) { if (...
[인증평가(4차) 기출] 슈퍼컴퓨터 클러스터 문제 질문
안녕하세요 [인증평가(4차) 기출] 슈퍼컴퓨터 클러스터 문제 질문있습니다 이진탐색으로 코드 작성했는데 성능의 max값을 잘못 설정한 것 같습니다 예산 N = 1이고, B가 10^18이고, a[1] = 10^9일 때 가능한 성능의 max 값이 2*10^9 인것 같습니다 그런데 이진탐색의 max값을 무작정 20억으로 하면 N이 높을 때 오버플로우가 발생하는 것 같습니다 그래서 이진탐색의 max값을 잘 설정해야 하는데 제 개인적인 생각으로는 루트(예산 나누기 n) + 기존 최대성능 하면 나올 수 있는 성능의 max가 된다고 생각하는데 제 생각이 어디가 틀렸는지 알려주시면 정말 감사하겠습니다 #include #include #include #include using namespace std; int n; long long coin; vector a; void solve() { long long money = 0; long long start = a.front()...