poj 2231Moo Volume
2337 단어 dp
Memory Limit: 65536K
Total Submissions: 20699
Accepted: 6249
Description
Farmer John has received a noise complaint from his neighbor, Farmer Bob, stating that his cows are making too much noise.
FJ's N cows (1 <= N <= 10,000) all graze at various locations on a long one-dimensional pasture. The cows are very chatty animals. Every pair of cows simultaneously carries on a conversation (so every cow is simultaneously MOOing at all of the N-1 other cows). When cow i MOOs at cow j, the volume of this MOO must be equal to the distance between i and j, in order for j to be able to hear the MOO at all. Please help FJ compute the total volume of sound being generated by all N*(N-1) simultaneous MOOing sessions.
Input
* Line 1: N
* Lines 2..N+1: The location of each cow (in the range 0..1,000,000,000).
Output
There are five cows at locations 1, 5, 3, 2, and 4.
Sample Input
5
1
5
3
2
4
Sample Output
40
Hint
INPUT DETAILS:
There are five cows at locations 1, 5, 3, 2, and 4.
OUTPUT DETAILS:
Cow at 1 contributes 1+2+3+4=10, cow at 5 contributes 4+3+2+1=10, cow at 3 contributes 2+1+1+2=6, cow at 2 contributes 1+1+2+3=7, and cow at 4 contributes 3+2+1+1=7. The total volume is (10+10+6+7+7) = 40.
문제풀이 사고방식: 본 문제는 임의의 두 수의 차이의 합을 요구한다.만약 직접 두 층의 순환이 틀림없이 시간을 초과할 것이다. 여기서 동태 기획의 사상을 이용하여 해답을 구할 수 있다.
우선 우리는 이 수를 작은 것부터 큰 것까지 순서를 정할 것이다. 우리는 dp[i]를 첫 번째 i개수와 전 i-1개의 수차의 합이라고 가정하면 우리는 추이 공식을 유도할 수 있다.
dp[i] = dp[i-1]+(i-1)*(a[i] - a[i-1])..마지막으로 dp[i]를 모두 합치면 2를 곱해야 한다는 것을 기억해라. 양방향이기 때문에 dp[i]는 단방향일 뿐이다.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 10010;
int n;
__int64 dp[maxn],a[maxn];
int cmp(__int64 a,__int64 b)
{
return a < b;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i = 1; i <= n; i++)
scanf("%I64d",&a[i]);
sort(a+1,a+n+1,cmp);
for(int i = 1; i <= n; i++)
{
dp[i] = dp[i-1]+(i-1)*(a[i]-a[i-1]);
}
__int64 sum = 0;
for(int i = 1; i <= n; i++)
sum += dp[i];
printf("%I64d
",sum<<1);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.