关闭

pku 2455 Sticks Problem

477人阅读 评论(0) 收藏 举报

这道题是月赛题,有解题报告的。

用的是分治的做法。

当时想到了,但总感觉有点不够完美,所以没做,原来是没有正确估算时间复杂度……

#include <iostream>
#include <algorithm>
#define N 50001
using namespace std;
int n;
int a[N];
int b[N];

int bst;
void getLong(int low,int up)
{
	if (low>=up || up - low +1 <=bst) return;

	int i;
	int minV=1000000000,minP,maxV=-1,maxP;
	for (i=low; i<=up; ++i)
	{
		if (a[i]> maxV)
		{
			maxV = a[i];
			maxP = i;
		}
		if (a[i] < minV)
		{
			minV = a[i];
			minP = i;
		}
	}
	if (minP < maxP)
	{
		bst = max(bst,maxP-minP);
		getLong(low,minP);
		getLong(maxP+1,up);
	}
	else
	{
		getLong(low,maxP);
		getLong(maxP+1,minP-1);
		getLong(minP,up);
	}
}
int main()
{
	while (scanf("%d",&n)!=EOF)
	{
		for (int I=0; I<n; ++I)
		{
			scanf("%d",&a[I]);
		}
		memcpy(b,a,sizeof(a));
		if (next_permutation(b,b+n) == false)
		{
			cout<<-1<<endl;
			continue;
		}
		bst = 0;
		getLong(0,n-1);
		cout<<bst<<endl;
	}
}

 

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

hdu 1455(Sticks 经典深搜)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1455 Sticks Time Limit: 2000/1000 MS (Java/Others)  ...
  • liusuangeng
  • liusuangeng
  • 2014-09-04 17:00
  • 842

poj(1011)——Sticks(经典的dfs+剪枝)

题目的大致意思是: 现在有n根木棍,然后需要把它们拼成同样长度的木棍,问满足这个条件的最短的长度是多少? 想法嘛:那肯定是dfs把长度搜一遍就好,但问题的关键是这里会超时。那么就要用到剪枝的原理了...
  • ACMer_hades
  • ACMer_hades
  • 2015-07-26 17:12
  • 1090

[LightOJ 1342] Aladdin and the Magical Sticks (期望的线性性质+几何分布+邮票收集问题)

LightOJ - 1342 有 N根棍子,每根棍子都有一个权值 其中有若干根可识别的,若干根不可识别的 抽到了可识别的棍子,就不放回,抽到了不可识别的,就要放回 问所有棍子都至...
  • u012015746
  • u012015746
  • 2016-07-31 15:57
  • 278

hdu1455Sticks【深搜剪枝】

又是卡了3天的题,终于结束了,也是怪中己太不细心== 和上一篇博客之中做的点击打开链接 hdu1518拼正方形类似,这个题开始就一直超时,开始以为是只带入了一个表示木棍长度的参数,根数每次都算导致的...
  • zhou_yujia
  • zhou_yujia
  • 2015-12-16 14:54
  • 375

NYOJ 293 Sticks 【深搜】+【剪枝】

这是一道让人泪奔的题,它深刻的说明了什么是剪枝,哪怕是再小的一个细节,一旦递归规模增大都会引发巨大的时间消耗,真是神题~ Sticks 时间限制:3000 ms  |  内存限制:65...
  • u012846486
  • u012846486
  • 2014-06-14 18:37
  • 1178

网络编程学习笔记

TCP是面向连接的可靠传输协议,UDP是数据报协议。 TCP的几个名词:三次握手、慢启动、滑动窗口、超时重传。 客户端与服务器的联接 客户端与服务器的应用程序通过Socket链接 。 建立Socket...
  • lpf870826
  • lpf870826
  • 2015-01-09 08:37
  • 218

hdu 5914 Triangle【斐波那契数列】

Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot...
  • mengxiang000000
  • mengxiang000000
  • 2016-10-11 16:41
  • 349

poj2653Pick-up sticks【判断线段相交】

Language:Default Pick-up sticks Time Limit: 3000MS   Memory Limit: 65536K Total Submis...
  • R1986799047
  • R1986799047
  • 2015-09-03 23:39
  • 531

Pick-up sticks(线段相交判断+剪枝)

Link:http://poj.org/problem?id=2653 Pick-up sticks Time Limit: 3000MS   ...
  • Enjoying_Science
  • Enjoying_Science
  • 2015-08-19 01:24
  • 682

HDOJ 5914 Triangle(打表找规律)

Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total...
  • hhu1506010220
  • hhu1506010220
  • 2016-10-05 00:26
  • 360
    个人资料
    • 访问:42815次
    • 积分:837
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:6篇
    • 译文:0篇
    • 评论:4条
    文章分类