HDOJ 4223 (DP)
题目: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)相关推荐
- HDOJ树形DP专题之Centroid
题目链接 这题跟Balance Act那题差不多,求图的质点.我直接将那题改了一下提交,结果PE了一次,又WA了一次,最后发现是单case,多case的提交为什么WA呢? View Code 1 #i ...
- HDOJ 1227 DP
这题参考了别人的思路. dist是二维数组.dist[i,j]存放"如果i和j两个restaurants之间只有一个depot,则它们之间(包括i和j)的所有restaurants到这个de ...
- java sql 写入 float_SQL Server的小数数值类型(float 和 decimal)用法
在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值.其他小数类型,都可以使用float和decimal来替代,例如,双精度(double ...
- HDOJ 5087 Revenge of LIS II DP
HDOJ 5087 Revenge of LIS II DP DP的时候记录下能否够从两个位置转移过来. ... Revenge of LIS II Time Limit: 2000/1000 MS ...
- 找规律/数位DP HDOJ 4722 Good Numbers
题目传送门 1 /* 2 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () 3 http://www.cnblogs.com/crazyapple/p/3315436. ...
- 递推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 ...
- 宋体节点hdoj 1520 Anniversary party(树形dp)
每日一贴,今天的内容关键字为宋体节点 标题链接 按照级等我们可以建一颗树,如图 我们可以把一个节点当作一个人,每一个节点都有一个权重.按照标题意思,如果我们取了某个节点,那么他的父节点和子节点都是不能 ...
- hdoj 1114 Piggy-Bank(完全背包+dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114 思路分析:该问题要求为多重背包问题,使用多重背包的解法即可:假设dp[v]表示容量为v的背包中能 ...
- HDOJ 4734 数位DP
链接: http://acm.hdu.edu.cn/showproblem.php?pid=4734 题意: 题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ...
- HDOJ 4003 Find Metal Mineral (树DP)
题意:给定一棵树,边权表示通过此边的代价,给k个机器人,指定从点s出发,求遍历所有结点的最小代价和. 分析:设计状态时不难想到用dp[i][j]表示从结点 i 出发遍历以它为根的子树的最小代价,但是转 ...
最新文章
- mysql事务并发控制_MySQL之事务及并发控制
- on a null object reference 问题的解决办法
- Python Day11
- python time模块
- ListView的两种使用方法--Android学习笔记
- 多线程有几种实现方法?同步有几种实现方法?
- Pytorch——循环神经网络层、损失函数、优化器
- https的安装(基于阿里云)
- python名称空间_一篇文章搞懂Python的类与对象名称空间
- 双向BUCK BOOST DCDC变换器仿真模型 BUCK BOOST 拓扑结构,电压电流双闭环控制策略
- discuzx2.5php7.0,discuz!X2.5新浪微博登陆
- Java项目:体育用品商城(java+SpringBoot+jsp+html+maven+mysql)
- java 程序暂停_java程序运行过程中如何暂停,恢复?
- Google ArCode官网 ARCode支持机型
- 【观察】阿里云栖大会究竟好在哪里?
- oracle水仙花,希腊神话中的水仙花和回声
- Flash鼠绘教程:临摹徐悲鸿的骏马图
- Equalize the Array
- linux 内存清理 释放命令,linux 内存清理/释放命令总结
- 转行做数据分析的心路历程