FZU - 1492(Problem 1492 地震预测)
怀特先生是一名研究地震的科学家,最近他发现如果知道某一段时间内的地壳震动能量采样的最小波动值之和,可以有效地预测大地震的发生。
假设已知一段时间的n次地壳震动能量的采样值为a1,a2,…an,那么第i 次采样的最小波动值为min{ |ai-aj| , i小于j小于等于n}, 即第i 次采样的最小波动值是其后n-i次采样值与第i次采样值之差的绝对值中最小的值,特别地,第n次采样的最小波动值为an。
请编写一个程序计算这n次采样的最小波动值之和。
Input
本题有多组输入数据,你必须处理到EOF为止
输入数据第一行有一个数n(1<=n<=105) ,表示采样的次数。
第二行有n个整数,表示n次地壳震动能量的采样值a1,a2,…an (0<=ai<=107 )。
Output
输出n次采样的最小波动值之和。
Sample Input
4
2 0 3 10
Sample Output
21
题意很好理解不在阐述。。。
思路:
先写一个结构体,结构体中包含下标和值,这里要注意,如果想对结构体中的数据进行排序时,要写一个操作符重载(或者写一个cmp),不然运行不了,比如这份代码中的
bool operator <(const node &v) const
{
return num<v.num;
}
把每个数的值和坐标都存在结构体数组里面后,sort一下,然后把第i个数的前一个数和后一个数的坐标存在b[maxn][2]中,因为只有与i相邻的数的差才是最小的,把当前的数遍历后就把它擦去,用数组模拟链表。
比如:
b[b[i][0]][1]=b[i][1];
b[b[i][1]][0]=b[i][0];
//代码:
#include<queue>
#include<stack>
#include<vector>
#include<math.h>
#include<cstdio>
#include<sstream>
#include<numeric>//STL数值算法头文件
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<functional>//模板类头文件
using namespace std;
const int INF=100000000;
const int maxn=110000;
typedef long long ll;
int n;
struct node
{
int idx,num;
bool operator <(const node &v) const
{
return num<v.num;
}
} a[maxn];
int pos[maxn],b[maxn][2];
inline int min(int A,int B)
{
return A>B?B:A;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
int i,j,sum;
for(i=1; i<=n; i++)
{
scanf("%d",&a[i].num);
a[i].idx=i;
}
sort(a+1,a+n+1);
a[0].idx=0,a[0].num=INF;
a[n+1].idx=n+1,a[n+1].num=INF;
pos[0]=0,pos[n+1]=n+1;
for(i=1; i<=n; i++)
{
pos[a[i].idx]=i;
b[a[i].idx][0]=a[i-1].idx;
b[a[i].idx][1]=a[i+1].idx;
}
sum=a[pos[n]].num;
for(i=1; i<n; i++)
{
int t1=abs(a[pos[i]].num-a[pos[b[i][0]]].num);
int t2=abs(a[pos[i]].num-a[pos[b[i][1]]].num);
sum+=min(t1,t2);
b[b[i][0]][1]=b[i][1];
b[b[i][1]][0]=b[i][0];
}
printf("%d\n",sum);
}
return 0;
}
//同学代码(数组模拟链表)
FZU - 1492(Problem 1492 地震预测)的更多相关文章
- FZU oj Problem 2082 过路费
Problem 2082 过路费 Pro ...
- 【BZOJ】【1492】【NOI207】货币兑换Cash
DP/CDQ分治 orz Hzwer copy了下他的代码……结果在while(j<top......)这一句中把一个括号的位置打错了……找了我一个多小时才找到TAT 很神奇……顺便贴下CDQ的 ...
- NOI 2007 货币兑换Cash (bzoj 1492) - 斜率优化 - 动态规划 - CDQ分治
Description 小Y最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A纪念券(以下简称A券)和 B纪念券(以下 简称B券).每个持有金券的顾客都有一个自己的帐户.金券的数目可以是一个 ...
- bzoj 1492
这道题真好... 首先,感觉像DP,但是如果按照原题意,有无数个状态,每个状态又有无数个转移. 然后思考,我们每次买一部分和卖一部分的原因是什么,如果没有那个比例(就是rate=1恒成立),那么很容易 ...
- HDU 1695 GCD (欧拉函数+容斥原理)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HOJ题目分类
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...
- [ACM] HDU 1533 Going Home (二分图最小权匹配,KM算法)
Going Home Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 07_旅行商问题(TSP问题,货郎担问题,经典NPC难题)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P61 问题9: 问题描述:有n(n<=15)个城市,两两之间均有道路直接相连,给出每两个城市i和j之间的道路长度L[i][j],求 ...
- DP专题
最全DP总结 https://blog.csdn.net/cc_again/article/details/25866971 ACM题集 https://blog.csdn.net/liuqiyao_ ...
随机推荐
- 「6月雅礼集训 2017 Day4」暴力大神hxx
[题目大意] 给出一个n重循环,每重循环有范围$[l, r]$,其中$l$,$r$可能是之前的变量,也可能是常数.求循环最底层被执行了多少次. 其中,保证每个循环的$l$,$r$最多有一个是之前的变量 ...
- 【BZOJ】1598: [Usaco2008 Mar]牛跑步
[题意]给定有向图,边严格从大编号指向小编号,求前k短路.n<=1000,m<=10000,k<=100. [算法]归并+拓扑排序||A*求第k短路 [题解]因为此题自带拓扑序的特殊 ...
- Vuejs - 强大的指令系统
在 Vuejs 中,指令(Directives)是带有 v- 前缀的特殊属性.指令属性的预期值是 单个 Javascript 表达式(v-for 是个例外).指令的职责是,当表达式改变时,将其产生的连 ...
- 【洛谷 P2042】 [NOI2005]维护数列(自闭记第一期)
题目链接 首先,这题我是没A的..太毒瘤了 题目本身不难,都是\(Splay\)的基操,但是细节真的容易挂. 调了好久自闭了,果断放弃.. 希望本节目停更. 放上最终版本 #include <c ...
- (Git 钩子)自定义你的工作流 和引用日志
Git 钩子是在 Git 仓库中特定事件发生时自动运行的脚本.它可以让你自定义 Git 内部的行为,在开发周期中的关键点触发自定义的行为. Git 钩子最常见的使用场景包括推行提交规范,根据仓库状态改 ...
- 2017-2018-1 20179205《Linux内核原理与设计》第五周作业
<Linux内核原理与设计>第五周作业 视频学习及操作分析 一.用户态.内核态和中断 内核态在CPU执行中对应高执行级别,执行级别为0级,具有特权指令,可以访问任意物理地址:用户态执行级别 ...
- mysql之基本数据库操作(二)
环境信息 数据库:mysql-5.7.20 操作系统:Ubuntu-16.04.3 mysql的启动.退出.重启 # 启动 $ sudo service mysqld start # 停止 $ sud ...
- device tree source file position
android/kernel/msm-4.9/arch/arm64/boot/dts/qcom/
- python基础===字符串切片
字符串的子串可以通过切片标志来表示:两个由冒号隔开的索引. >>> word 'HelpA' >>> word[4] 'A' >>> word[0 ...
- Linux下用freetds执行SQL Server的sql语句和存储过程
Linux下用freetds执行SQL Server的sql语句和存储过程 http://www.linuxidc.com/Linux/2012-06/61617.htm freetds相关 http ...