첫 번째 질문
루프에 대해 3으로 시작하여 값을 얻었지만 범위가 1e5에서 최대로 초과되어 시간이 초과되었습니다:
#include <iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int res;
int main()
{
// 여기에 코드를 입력하세요.
int Max=-1;
int n=0;cin>>n;
intt;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;++i)
{
for(int j=i+1;j<=n;j++)
{
for(int k=j+1;k<=n;k++)
{
res=(a[i]+a[k])/a[j];
Max=max(Max,res);
}
}
}
cout<<Max<<endl;
return 0;
}
그런 다음 문제에 대한 해결책을 살펴보세요:
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N],lmax[N],rmax[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
//먼저 lmax를 전처리합니다.,rmax
int mx=0;
//lmax[i]1-i에서 가장 큰 값이 무엇인지 확인합니다.
for(int i=1;i<=n;i++)
{
if(a[i]>mx) mx=a[i];
lmax[i]=mx;
}
mx=0;
//rmax[i]는 i-n 중 최대값을 나타냅니다.
for(int i=n;i>=1;i--)
{
if(a[i]>mx) mx=a[i];
rmax[i]=mx;
}
int res=0;
//각 분모와 비교의 최대값을 열거합니다.
for(int i=2;i<n;i++)
{
res=max(res,(lmax[i-1]+rmax[i+1])/a[i]);
}
cout<<res<<endl;
return 0;
}
질문 2
이 질문은 교환 횟수만 계산할 수 있으며, 실제 교환을 요구하지 않습니다.
0이 왼쪽에 있는 경우(000011111)와 오른쪽에 있는 경우(11110000), 총 두 가지 경우만 있습니다.
#include <bits/stdc++.h>
using namespace std;
string s;
int n;
int main()
{
cin >> n;
cin >> s;
int sum1 = 0,sum2 = 0;
long long ans1 = 0,ans2 = 0;
for (char c : s) {
if (c == '1') {
sum1++;
}
else {
ans1 += sum1;
}
}
for (char c : s) {
if (c == '0') {
sum2++;
}
else {
ans2 += sum2;
}
}
cout << min(ans1,ans2);
return 0;
}
문제 4
블루와 코바시 사이의 전투 횟수를 계산해야 합니다. 블루의 체력값이 A, 코바시의 체력값이 B, 코바시의 공격력이 C라고 가정합니다.
먼저 블루에게 필요한 공격 횟수를 계산합니다. 코바시의 공격이 블루의 스태미나 값을 완전히 커버하지 못할 수도 있으므로, A를 C로 나누고 가장 가까운 정수, 즉 / C로 반올림해야 합니다. 마지막 공격이 C를 커버하기에 충분하지 않을 수 있으므로 블루의 스태미나 값을 완전히 소비할 수 있도록 하기 위해 상향 반올림이 필요합니다.
그런 다음 코바시에 필요한 공격 횟수를 계산합니다. 코바시의 공격 횟수는 블루의 공격 횟수에 따라 달라지므로 블루의 공격 횟수에 B를 더하고 1을 뺀 다음 블루의 공격 횟수로 나눕니다. 여기서 num은 블루의 공격 횟수입니다. +1로 반올림되었으므로 이제 다시 빼야 합니다. 이것은 블루가 공격 횟수만큼 공격한 후 남은 코바시의 스태미나 값입니다. 이를 블루의 공격 횟수로 나누어 각 공격에 대한 코바시의 체력 감소량을 구한 다음, 이 값을 코바시의 남은 체력 값으로 나누어 코바시에게 필요한 공격 횟수를 구합니다.
#include <iostream>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int A, B, C;
cin >> A >> B >> C;
int num = (A + C - 1) / C; // 블루의 공격 횟수 계산하기
int result = (B + num - 1) / num; // 코바시에게 필요한 공격 횟수 계산하기
cout << result << endl;
}
return 0;
}




