题目:http://acm.hdu.edu.cn/showproblem.php?pid=4223

题意很简单:n个数,找出连续m个数的最小绝对值。

先来个暴搜(N<=1000)

250MS

代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 1001int a[N];int main()
{int T,n,i,j,min,cnt;scanf("%d",&T);cnt = 1;do{scanf("%d",&n);scanf("%d",&a[0]);for(i = 1 ; i < n ; ++i)          {scanf("%d",&a[i]);a[i] += a[i-1];      }          min = 100000000;for(i = 0 ; i < n ; ++i)if(fabs(a[i]) < min)min = fabs(a[i]);for(i = 0 ; i < n ; ++i)for(j = i + 1 ; j < n ; ++j)if(fabs(a[j] - a[i]) < min)min = fabs(a[j] - a[i]);printf("Case %d: %d\n",cnt++,min);}while(--T); //system("pause");return 0;
}

   可以改进,改进思路:一个数组(第0个位置放一个多余的0),每个数组元素都存放的是前面所有数的和,然后把这些和从小到达排序。每两个相邻数做差必可得最小值。为什么?因为相邻,所以存在最小;再看连续,因为一个数表示0~i之间的数的和,另一个表示0~j之间的数的和。相减即可得(i+1)~j或者(j+1)~i之间的和。

因此最小和连续都可以得到保证,所以算法正确。

改进代码(15MS):

#include <cstdio>
#include <algorithm>
#define N 1001
using namespace std;int a[N];
int main()
{int n,i,T,tmp,min,cnt = 1;scanf("%d",&T);do{scanf("%d",&n);a[0] = 0;for(i = 1 ; i <= n; ++i){scanf("%d",&a[i]);a[i] += a[i-1];}sort(a,a+n+1);min =10000000;for(i = 1 ; i <= n;  ++i){tmp = a[i] - a[i-1];if(tmp < min) {min = tmp;if(!min) break;   }}printf("Case %d: %d\n",cnt++,min);}while(--T);return 0;
}

 

转载于:https://www.cnblogs.com/HpuAcmer/archive/2012/04/19/2456525.html

HDOJ 4223 (DP)相关推荐

  1. HDOJ树形DP专题之Centroid

    题目链接 这题跟Balance Act那题差不多,求图的质点.我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢? View Code 1 #i ...

  2. HDOJ 1227 DP

    这题参考了别人的思路. dist是二维数组.dist[i,j]存放"如果i和j两个restaurants之间只有一个depot,则它们之间(包括i和j)的所有restaurants到这个de ...

  3. java sql 写入 float_SQL Server的小数数值类型(float 和 decimal)用法

    在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值.其他小数类型,都可以使用float和decimal来替代,例如,双精度(double ...

  4. HDOJ 5087 Revenge of LIS II DP

    HDOJ 5087 Revenge of LIS II DP DP的时候记录下能否够从两个位置转移过来. ... Revenge of LIS II Time Limit: 2000/1000 MS ...

  5. 找规律/数位DP HDOJ 4722 Good Numbers

    题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436. ...

  6. 递推DP HDOJ 5459 Jesus Is Here

    题目传送门 题意:简单来说就是sn = sn-1 + sn-2递推而来,求其中所有c字符的:∑i<j:sn[i..i+2]=sn[j..j+2]=''cff"(j−i) mod 530 ...

  7. 宋体节点hdoj 1520 Anniversary party(树形dp)

    每日一贴,今天的内容关键字为宋体节点 标题链接 按照级等我们可以建一颗树,如图 我们可以把一个节点当作一个人,每一个节点都有一个权重.按照标题意思,如果我们取了某个节点,那么他的父节点和子节点都是不能 ...

  8. hdoj 1114 Piggy-Bank(完全背包+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 思路分析:该问题要求为多重背包问题,使用多重背包的解法即可:假设dp[v]表示容量为v的背包中能 ...

  9. HDOJ 4734 数位DP

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4734 题意: 题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ...

  10. HDOJ 4003 Find Metal Mineral (树DP)

    题意:给定一棵树,边权表示通过此边的代价,给k个机器人,指定从点s出发,求遍历所有结点的最小代价和. 分析:设计状态时不难想到用dp[i][j]表示从结点 i 出发遍历以它为根的子树的最小代价,但是转 ...

最新文章

  1. mysql事务并发控制_MySQL之事务及并发控制
  2. on a null object reference 问题的解决办法
  3. Python Day11
  4. python time模块
  5. ListView的两种使用方法--Android学习笔记
  6. 多线程有几种实现方法?同步有几种实现方法?
  7. Pytorch——循环神经网络层、损失函数、优化器
  8. https的安装(基于阿里云)
  9. python名称空间_一篇文章搞懂Python的类与对象名称空间
  10. 双向BUCK BOOST DCDC变换器仿真模型 BUCK BOOST 拓扑结构,电压电流双闭环控制策略
  11. discuzx2.5php7.0,discuz!X2.5新浪微博登陆
  12. Java项目:体育用品商城(java+SpringBoot+jsp+html+maven+mysql)
  13. java 程序暂停_java程序运行过程中如何暂停,恢复?
  14. Google ArCode官网 ARCode支持机型
  15. 【观察】阿里云栖大会究竟好在哪里?
  16. oracle水仙花,希腊神话中的水仙花和回声
  17. Flash鼠绘教程:临摹徐悲鸿的骏马图
  18. Equalize the Array
  19. linux 内存清理 释放命令,linux 内存清理/释放命令总结
  20. 转行做数据分析的心路历程

热门文章

  1. 医疗健康领域的短文本解析探索----文本纠错
  2. 只知道CS224N?斯坦福最新推出NLU公开课CS224U
  3. 6.6 AdaBoost实战
  4. Pytorch中RNN输出的h_n和output是什么
  5. 放之四海皆适用的设计原则(一)
  6. iPhone SDK开发基础之使用UINavigationController组织和管理UIView
  7. 博文视点大讲堂第30期——职场新人胜出的关键点
  8. 21天学通JAVA:如何使用现有类
  9. 1.3 jieba分词运用:词云、关键词抽取、TextRank、TF-IDF
  10. Scala:访问修饰符、运算符和循环