약 교 련 맹 11 대 결전 의 강력 한 몸 풀기 B Carries 2 점 + 시 뮬 레이 션 진입
10 ^ 5 개 두 개 를 더 해서 몇 자리 가 들 어 갔 는 지 물 어보 세 요.O (n * n) 의 알고리즘 을 생각하면 시간 이 현저히 초과 되 고 모든 사람의 중복 계산 으로 인 한 시간 초과 도 계산 하지 않 아야 합 니 다 = =
AC 코드 를 보고 upper 를 사용 합 니 다.bound 는 아직 2 점 이 떠 오 르 지 않 았 다 →→ 코드 를 보 는 것 도 어렵 지 않 은 데 생각 이 안 나 네요.
결론 적 인 방법: 예전 에 자신 이 계속 고민 하고 자리 에 들 어간 후에 비교적 높 은 운행 결과 에 영향 을 줄 수 있 으 며 진 위 를 모 의 하려 면 반드시 현재 위치 라 는 두 개의 0 ~ 9 숫자 를 더 해 야 한다 고 주장 했다.
그러나 사실은 자줏빛 T ^ T 를 더 할 때 현재 위치 와 아래 의 이 숫자 를 더 하면 상술 한 문 제 를 해결 할 수 있 는 것 이 아니다. 한 자리 씩 더 하면 반드시 높 은 정밀 도 를 모 의 해 야 하 는 것 은 아니다.
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define N 100005
int a[N],b[N],ans,n;
long long total;
int main()
{
// freopen("cin.txt","r",stdin);
while(~scanf("%d",&n))
{
int maxn=0;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(maxn<a[i]) maxn=a[i];
}
ans=1,total=0;
for(int i=0;i<9;i++)
{
ans*=10;
for(int j=0;j<n;j++) b[j]=a[j]%ans;
sort(b,b+n);
for(int j=0;j<n-1;j++)
{
int l=j+1,r=n-1,id=-1;
if(b[j]+b[n-1]<ans) continue;
while(l<=r)
{
int mid=(l+r)>>1;
if(b[j]+b[mid]>=ans) {
r=mid-1;
id=mid;
}
else l=mid+1;
}
total+=(n-id);
// printf("%d
",total);
}
if(ans>maxn) break;
}
printf("%lld
",total);
}
return 0;
}
p. s. 7 일간 의 제목 은 따로 분 류 했 는데 도 간장 을 치 는 구나 아아
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.