NYOJ -304 절전 DP
6999 단어 dp
에너지 절약
시간 제한: 1000ms | 메모리 제한: 65535KB
난이도
묘사
Dr.Kong이 디자인한 로봇 카드는 갈수록 똑똑해진다.최근 시정 회사는 카드에게 매일 아침 5시부터 ZK대로 오른쪽에 있는 모든 가로등을 끄는 임무를 맡겼다.
카도는 아침 5시가 되면 틀림없이 ZK 대로의 한 가로등 옆에 있을 것이다. 그리고 그는 불을 끄기 시작한다.모든 등은 일정한 출력을 가지고 로봇 카드는 자각적인 에너지 절약 의식을 가지고 불을 끄는 동안 ZK대로 오른쪽에 있는 모든 가로등의 소모 전력량이 가장 적기를 바란다.
로봇 카드는 1m/s의 속도로 걷는다.가령 불을 끄는 동작은 어떤 가로등을 통과할 때 불을 끄는 데 시간이 걸리지 않는다고 가정하면 된다.
프로그램을 작성하여 가로등 설정, 전구 출력과 로봇 카드가 많은 시작 위치에서 카드를 많이 끄는 동안 ZK대로의 모든 불이 소모하는 최소 에너지를 계산해 보세요.
입력
EOF를 입력으로 끝낸 여러 테스트 데이터가 있습니다.
그룹당 테스트 데이터 첫 줄: N은 ZK 대로 오른쪽 가로등의 수량을 나타낸다(2≤ N≤1000)
두 번째 줄: V는 로봇 카드가 불을 끄기 시작한 가로등 번호를 나타낸다.(1≤V≤N)
다음 N행에는 각 램프의 매개변수를 설명하기 위해 공백으로 구분된 두 개의 정수 D와 W가 포함됩니다.
D는 가로등과 ZK 대로의 시작점의 거리를 나타냅니다.
W는 전구의 전력, 즉 초당 이 전구가 소모하는 에너지의 수를 나타낸다.가로등은 순서대로 정해져 있다.
( 0≤D≤1000, 0≤W≤1000 )
출력
에너지를 소모하는 합의 최소값인 정수를 출력하다.200000000 미만의 결과 확인
샘플 입력
4
3
2 2
5 8
6 1
8 7
샘플 출력
56
:
#include<stdio.h>
#include<string.h>
struct node
{
int d;
int w;
}f[1001];
int dp[1001][1001][2];
int w[1001][1001];
int min(int a,int b)
{
return a<b?a:b;
}
int main()
{
int n,v,fw,i,j;
while(scanf("%d%d",&n,&v)!=EOF)
{
fw=0;
for(i=1;i<=n;++i)
{
scanf("%d%d",&f[i].d,&f[i].w);
fw+=f[i].w;
}
// memset(dp,0,sizeof(dp));
memset(w,0,sizeof(w));
for(i=1;i<=n;++i)
for(j=i;j<=n;++j)
w[i][j]=w[i][j-1]+f[j].w;
for(i=v-1;i>0;i--)
{
dp[i][v][0]=dp[i+1][v][0]+(fw-w[i+1][v])*(f[i+1].d-f[i].d);
dp[i][v][1]=dp[i][v][0]+(fw-w[i][v])*(f[v].d-f[i].d);
}
for(i=v+1;i<=n;i++)
{
dp[v][i][1]=dp[v][i-1][1]+(fw-w[v][i-1])*(f[i].d-f[i-1].d);
dp[v][i][0]=dp[v][i][1]+(fw-w[v][i])*(f[i].d-f[v].d);
}
for(i=v-1;i>0;i--)
for(j=v+1;j<=n;++j)
{
dp[i][j][0]=min(dp[i+1][j][0]+(fw-w[i+1][j])*(f[i+1].d-f[i].d),
dp[i+1][j][1]+(fw-w[i+1][j])*(f[j].d-f[i].d));
dp[i][j][1]=min(dp[i][j-1][0]+(fw-w[i][j-1])*(f[j].d-f[i].d),
dp[i][j-1][1]+(fw-w[i][j-1])*(f[j].d-f[j-1].d));
}
printf("%d
",min(dp[1][n][0],dp[1][n][1]));
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.