poj 2231Moo Volume
来源:互联网 发布:php app接口开发 编辑:程序博客网 时间:2024/06/06 00:31
Time Limit: 1000MS Memory Limit: 65536KTotal 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.
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).
* 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
515324
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.
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\n",sum<<1);}return 0;}
0 0
- poj 2231 Moo Volume
- poj 2231 Moo Volume
- poj 2231 Moo Volume
- POJ 2231 Moo Volume
- POJ -- 2231 Moo Volume
- POJ 2231 Moo Volume
- poj 2231 Moo Volume
- POJ 2231 Moo Volume
- poj 2231Moo Volume
- POJ 2231 Moo Volume
- POJ 2231-Moo Volume
- poj 2231 Moo Volume
- poj 2231 Moo Volume
- POJ 2231 Moo Volume (暴力)
- poj 杂题 - 2231 Moo Volume
- POJ 2231:Moo Volume【细心】
- POJ 2231 Moo Volume【求和】
- POJ 2231 Moo Volume 笔记
- First of all
- 连接中间件异常 需要重新注册 --------------运维日志10
- Android SDK Android NDK Android Studio 官方下载地址
- 浅谈安卓项目框架发展
- 010-spark standalone模式JAVA版本WordCount代码
- poj 2231Moo Volume
- UIImageView响应点击事件
- Android实时监听网络状态
- NSOperation简单用法汇总
- Spring 整合 Hibernate(注解方式)
- AutoCAD二次开发的学习者快速掌握基于.NET的开发技术
- Android 反射Construct应用
- js小知识
- Masonry介绍与使用实践:快速上手Autolayout