P3143 [USACO16OPEN] 다이아몬드 컬렉터 Diamond Collector
4620 단어 동적 기획
The first line of the input file contains and (). The next lines each contain an integer giving the size of one of the diamonds. All sizes will be positive and will not exceed .
출력 형식:
Output a single positive integer, telling the maximum number of diamonds that Bessie can showcase in total in both the cases.
입력 출력 예제 입력 예제 #1:7 3 10 5 1 12 9 5 14 출력 예제 #1:5
동적 기획: f[i]를 설정하면 i로 시작하는 최대 연장 길이를 표시하고 g[i]는 i로 시작하는 최대 연장 길이를 나타낸다.답은max{f[i+1]+g[i]}입니다.f, g를 구할 때 직접 폭력을 행사할 수 없기 때문에 최적화가 필요하다.
#include
#include
#include
using namespace std;
int n,k,ans,pos,cnt,a[50005],f[50005],g[50005];
int main()
{
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
sort(a+1,a+n+1);
cnt=0,pos=n;
for(int i=n;i>=1;i--)
{
cnt++;
int tmp=pos;
for(int j=tmp;j>=1;j--)
{
tmp--;
if(a[j]-a[i]<=k)
break;
else
cnt--;
}
pos=tmp+1;
f[i]=max(f[i+1],cnt);
}
cnt=0,pos=1;
for(int i=1;i<=n;i++)
{
cnt++;
int tmp=pos;
for(int j=tmp;j<=n;j++)
{
tmp++;
if(a[i]-a[j]<=k)
break;
else
cnt--;
}
pos=tmp-1;
g[i]=max(cnt,g[i-1]);
}
for(int i=1;i<=n;i++)
ans=max(ans,f[i+1]+g[i]);
printf("%d
",ans);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
01 가방, 완전 가방, 다중 가방 dp(동적 기획 입문 dp)01 가방은 2진법으로 직접 표시할 수 있지만 데이터 양이 너무 많으면 시간을 초과하는 것이 폭력이다.01 가방의 사상은 바로 이 물품에 대해 내가 넣은 가치가 큰지 안 넣은 가치가 큰지 비교하여 방정식 f[i][v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.