Moo Volume


发现动态规划的大致特点,关键在于思维,找关系式子,代码倒是简单,主要是过思维关!
思路一:
从动态规划的角度入手
首先我们要知道这道题是让求一组数的所有的数的差的绝对值的和(双向的),也就是单向最后乘以二就好了,可能一开始就想到这特么还不简单,直接暴力二层 for 循环!没错,如我所愿超时了,哪能那么容易呢?下面先说说动态规划怎么想,哎!我可怜我的脑细胞啊,我们将输入的一组位置按从小到大排序(还记得 algorithm 中的 sort 吗),然后只让后面的牛给前面的叫,最后二倍就好了,怎么找关系呢?很显然从下标 0 开始,第 i 头牛叫了 i 次,每一次计算差一定包括 loc[i]-loc[i-1] 的绝对值,如果我们减去这些和呢?你会发现其实就是算第 i-1 头牛的总加和了!这样的话我们就找到了关系(说起来容易,过程折磨人啊~):dp[i]=dp[i-1]+i*(loc[i]-loc[i-1])(已经排好序就不用绝对值了),其实呢,精髓我认为在于排序不是吗??求出来各个 dp[i] 后求和再乘以二就 over 啦~
这样的话可以体会到动态规划的高效性了,需要不断练习体会该思想!
这样的话代码就水到渠成了:

#include<iostream>
#include<cstdio>
#include<algorithm>//内置 sort 函数为数值数组从小到大排序
using namespace std;
typedef long long ll;
ll loc[10010];
ll dp[10010] = { 0 };//包含了 dp[0]=0  的初始化
int n;
int main() {cin >> n;for (int i = 0;i < n;i++) cin >> loc[i];sort(loc, loc + n); //从小到大排序 for (int i = 1;i < n;i++) dp[i] = dp[i - 1] + i * (loc[i] - loc[i - 1]);//关系式 ll sum = 0;for (int i = 1;i < n;i++) sum += dp[i];//因为 dp[0]=0,加不加不影响 cout << sum * 2 << endl;return 0;
}

思路二:
我们首先意识到这么一点:不管求那两个数之间的差,注意这里的数是有其各自的编号下标的,这里我们仍然先排序,如果说是 loc[i] 与 loc[j] (j>i) 的差(绝对值),我们可以将问题分解,最小的单位就变成了 abs(loc[i)-loc[i+1])+abs(loc[i+1]-loc[i+2])+......+abs(loc[j-1]-loc[j])(只有先排序才会这样!!),这意味着什么呢?我们是不是只需要算相邻的数的差(绝对值)呢?没错!然后我们乘以使用该差值的次数就大功告成了!!!突然好简单了有木有,我愿称之为思维的力量,那么使用了几次呢?我们规定 i 从 0 开始,且 j>i,j<n;这样的话不难得出 loc[i]-loc[j](绝对值)会用到 (i+1)(n-j) 次,而这里我们只需要 j-i==1,因此 loc[i]-loc[i+1](绝对值)用到 (i+1)(n-i-1) 次!!代码也就很好写了:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
int n;
ll loc[10010];
int main() {cin >> n;for (int i = 0;i < n;i++) cin >> loc[i];sort(loc, loc + n);ll sum = 0;for (int i = 0;i < n - 1;i++) {if (loc[i] - loc[i + 1] > 0) sum += (loc[i] - loc[i + 1]) * (i + 1) * (n - i - 1);else sum += (loc[i + 1] - loc[i]) * (i + 1) * (n - i - 1);}cout << sum * 2 << endl;return 0;
}

Moo Volume相关推荐

  1. POJ 2231 Moo Volume(递推、前缀和)

    题外话: POJ 2231 Moo Volume 题意: 解题过程: AC代码: 题外话: emm--第三套题好像综合了其他OJ的题目蛤,那么我就把题目分开了发了蛤蛤-- POJ 2231 Moo V ...

  2. bzoj1679[Usaco2005 Jan]Moo Volume 牛的呼声*

    bzoj1679[Usaco2005 Jan]Moo Volume 牛的呼声 题意: N只牛,每只牛都与其他N-1只牛聊着天.一个对话的进行,需要两只牛都按照和她们间距离等大的音量吼叫,计算音量和.N ...

  3. 【BZOJ】1679: [Usaco2005 Jan]Moo Volume 牛的呼声(数学)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1679 水题没啥好说的..自己用笔画画就懂了 将点排序,然后每一次的点到后边点的声音距离和==(n-i ...

  4. poj-2231(Moo Volume) 递推

    题意:给你n个数求n个数任意一个数与其他数之差的绝对值之和的和 题解:例如: 6 1 2 5 7 8 9 先排序 正向: 1 --->9                             ...

  5. 【转】别人整理的DP大全

    为什么80%的码农都做不了架构师?>>>    动态规划 动态规划 容易: 1018 , 1050 , 1083 , 1088 , 1125 , 1143 , 1157 , 1163 ...

  6. 基础算法 —— 递推算法

    [概述] 递推算法:通过已知条件,利用相邻的数据项间的关系(即:递推关系),得出中间推论,直至得到结果的算法. 递推关系:给定一个数的序列H0,H1,-,Hn,若存在整数N0,使当n>N0时,可 ...

  7. bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声(单调栈)

    1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 848  Solved: 594 [Sub ...

  8. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

  9. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

最新文章

  1. visual studio 2008 快捷键
  2. Ucenter社区服务搭建
  3. Global.asax.cs中的方法(包括自定义方法)的含义
  4. 分类 Classification
  5. linux下软件的卸载,Linux下各种格式软件的安装及卸载方法
  6. appium启动app失败_Python学下教程:另辟蹊径,appium抓取app应用数据了解一下
  7. python tkinter 定时_如何使用tkinter创建计时器?
  8. python if elif else_Python 基础起步 (九) 条件语句 if elif else 其实很简单
  9. Allegro 制作 package
  10. endnote初始化数据库支持_学术干货:Endnote免费网页版竟如此强大!
  11. 只用一个div画一个小米logo
  12. OpenCV开发笔记(四十九):红胖子8分钟带你深入了解轮廓识别(图文并茂+浅显易懂+程序源码)
  13. 微信小程序图片在不同设备显示保持图片比例并且居中
  14. BH1621FVC-TR光环境传感器
  15. NOI2016 day1 总(xia)结(che)
  16. 【PostgreSQL】数据表的增删改查
  17. Very Deep Convolutional Networks for Large-Scale Image Recognition-VGGNet解读
  18. Java语句for(String string : strs)什么意思?
  19. JS中的数组过滤,从简单筛选到多条件筛选
  20. 连玉君-Marp:用Markdown快速写幻灯片

热门文章

  1. 【Axure视频教程】中继器版手风琴
  2. STM32CubeMX—PWM波输出实验
  3. informatica 学习日记整理(转)
  4. 关于存储优化型实例和大型数据仓库EC2实例选型
  5. docker构建国内镜像服务
  6. 搜索:搜索+优先队列
  7. 02 AC-DC整流器(AC Rectifer)简介
  8. php访问违例,关于UG内存访问违例的简单而有效的解决办法!!
  9. 高德地图 自动计算缩放_您应该了解的无服务器计算中的自动缩放模式
  10. 0-1背包问题:输出最小背包