Uvalive 6424 - 러시아 인형 (욕심)
[제목 부주의]:
모든 장난감 은 사용 할 수 있 는 공간 과 내부 에 수용 할 수 있 는 공간 이 있다.모든 장난감 은 하나의 장난감 만 직접 끼 워 넣 을 수 있 고 간접 적 으로 끼 워 넣 을 수 있다. 즉, A 세트 B, B 는 C 를 다시 끼 워 넣 을 수 있 지만 A 는 B 와 C 를 동시에 끼 워 넣 을 수 없다.A 가 B 를 채 울 수 있 는 조건 은 A 의 내부 공간 이 B 의 점용 공간 보다 엄 격 히 크다 는 것 이다.i 번 째 장난감 은 ci 를 사용 하 는 단위 가 있 는데 이 장난감 내부 에 남 은 공간 을 곱 하면 바로 비용 이다.적당 한 끼 워 넣 기 를 거 친 후 최소 비용 이 얼마 인지 물 어 봐 야 한다.
[사고]: 욕심 문제, 데이터 가 크 지 않 고 2 층 for 순환 판단 이 분명 하 며 매번 에 끼 워 넣 으 면 비용 이 줄어든다.모든 장난감 에 대해 서 는 다른 장난감 에 넣 으 려 면 조건 이 허락 되 는 상황 에서 단 위 를 찾 아 큰 세트 를 써 야 비용 이 줄 어 들 수 있다.단위 별 비용 은 큰 것 에서 작은 것 으로 정렬 되 며, 비용 이 같 을 때 내부 부 피 는 큰 것 에서 작은 것 으로 (ps: 실측 uvalive 부 피 는 작은 것 에서 큰 것 으로 도 맞습니다)
코드:
#include <bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m,t;
struct node
{
int out,in,c;
} p[N];
bool cmp(node a,node b)// sort the cost and volume
{
if(a.c==b.c) return a.in>b.in;
else return a.c>b.c;
}
bool vis[N];
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(vis,false,sizeof(vis));
int k,jj,sum,maxx=0;
for(int i=1; i<=n; ++i)
{
scanf("%d%d%d",&p[i].out,&p[i].in,&p[i].c);
}
sort(p+1,p+n+1,cmp);
sum=0;
for(int i=1; i<=n; ++i)
{
int maxx=0;
for(int j=1; j<=n; ++j)
{
if(i==j) continue;
if(!vis[j]&&p[j].out<p[i].in)
{
maxx=max(maxx,p[j].out);
}
}
if(maxx!=0)
{
for(int j=1; j<=n; ++j)
{
if(!vis[j]&&p[j].out==maxx)
{
vis[j]=true;
break;
}
}
}
sum+=(p[i].in-maxx)*p[i].c;
}
cout<<sum<<endl;
}
return 0;
}
/*
3
5 4 1
4 2 2
3 2 1
7
after sort:
4 2 2 // , =2*2=4
3 2 1 // , =2*1=2
5 4 1 // 3 , =(4-3)*1=1; =4+2+1=7
*/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Cognos 목록을 프롬프트에서 선택한 항목으로 오름차순 및 내림차순으로 정렬Cognos BI & Analytics에서 리스트의 정렬을 항목 지정 및 정렬 순서 지정으로 하고 싶을 때의 방법입니다. 정렬 항목 프롬프트에서 수량을 선택하고 정렬 순서 프롬프트에서 내림차순을 선택한 예입니다. 정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.