POJ 2313
来源:互联网 发布:淘宝选品数据分析 编辑:程序博客网 时间:2024/06/09 21:58
Sequence
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 3885 Accepted: 1537
Description
Given a sequence with N integers A(1), A(2), ..., A(N), your task is to find out a sequence B(1), B(2), ..., B(N), such that
is minimum.
V = (|A(1) – B(1)| + |A(2) – B(2)| + ... + |A(N) – B(N)|) + (|B(1) – B(2)| + |B(2) – B(3)| + ... +|B(N-1) – B(N)|)
is minimum.
Input
The first line in the input contains an integer N (1 <= N <= 100). Then follow N lines, the i-th of which contains an integer A(i) (-10000 <= A(i) <= 10000).
Output
The output only contains an integer, which is the minimum value of V.
Sample Input
3358
Sample Output
5这道题是一个数学归纳的贪心题,
最主要的就是根据a[i],a[i+1],b[i-1]三者之间的关系来推出b[i]的数值即可;
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){ int a[101],b[101]; int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } b[1]=a[1]; for(int i=2;i<n;i++) { if(a[i]>b[i-1]&&a[i]>a[i+1]) b[i]=max(a[i+1],b[i-1]); else if(a[i]<b[i-1]&&a[i]<a[i+1]) b[i]=min(a[i+1],b[i-1]); else b[i]=a[i]; } b[n]=a[n]; int sum=0; for(int i=1;i<=n;i++) { sum=sum+fabs(a[i]-b[i]); } for(int i=2;i<=n;i++) { sum=sum+fabs(b[i-1]-b[i]); } printf("%d\n",sum); return 0;}
0 0
- POJ 2313
- POJ 2313
- poj 2313 Sequence 贪心
- POJ 2313 Sequence 笔记
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- 用node.js写的http小爬虫
- 1010: "水仙花数"问题1
- 菜鸟学习Spring——SpringMVC注解版控制层重定向到控制层
- PHP中include()与require()的区别
- Asp.Net Core 连接MySQL
- POJ 2313
- 计算几何 基础知识~具体的图像解决方案前导知识
- acm威佐夫博弈(裸题代码)
- 多线程下的单例模式
- 求fibonacci数列前五十个数或者求出前50个数中的某个数的fibonacci数
- 1011: "水仙花数"问题2
- 【Java集合类源码分析】ArrayList源码分析
- 内存栅栏:软件高手的硬件观(一)
- 26. Remove Duplicates from Sorted Array