HDU 3916 Sequence Decomposition 【贪心】

这道题目的题意就是使用题目中所给的Gate 函数,模拟出输入的结果

当然我们分析的时候可以倒着来,就是拿输入去减

每次Gate 函数都会有一个有效范围

这道题目求的就是,找出一种模拟方法,使得最小的有效范围最大化。

是一道【贪心】题

参考了https://github.com/boleynsu/acmicpc-codes 的做法

b 数组中存放是 Sequence 的下标
这是一个O(n)的算法if (a[i-1]<a[i]){int k=a[i]-a[i-1];while (k--) b[++bt]=i;
}
就是把 i 加进 b 数组,加 a[i] - a[i - 1]次
比如 a[i - 1] 为3 a[i] 为 5
那么在 b[ ] 中就会加两次 3 else if (a[i-1]>a[i]){int k=a[i-1]-a[i];while (k--){++bh;}answer = min(answer,i - b[bh - 1]);
}
bh 指针右移 k 次, 由于b 数组为非递减数组,故最后一位一定是最大的
取i - b[bh - 1] 与 answer比较,这个意思就是比较 Gate 函数的有效范围
如果有更小的范围,那么更新一遍
这里的 i 就是当前的位置, b[bh - 1]的意思……

  

 

//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
#include <stdio.h>
#include <iostream>
#include <cstring>
#include <cmath>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#define ll long long
#define Max(a,b) (((a) > (b)) ? (a) : (b))
#define Min(a,b) (((a) < (b)) ? (a) : (b))
#define Abs(x) (((x) > 0) ? (x) : (-(x)))
using namespace std;const int MAXN = 2000000;int N;
int a[MAXN];
int b[MAXN];
int bh,bt;int main(){int T;scanf("%d",&T);while (T--){scanf("%d",&N);for (int i=1;i<=N;i++)scanf("%d",a+i);bh=0,bt=-1;int answer=N;a[0]=a[N+1]=0;for (int i=1;i<=N+1;i++){if (a[i-1]<a[i]){int k=a[i]-a[i-1];while (k--) b[++bt]=i;}else if (a[i-1]>a[i]){int k=a[i-1]-a[i];while (k--){++bh;}answer = min(answer,i - b[bh - 1]);}}printf("%d\n",answer);}
}

 当然在这里,也有一种更简单的方法也能过,不知道是不是算是数据水呢

#include<stdio.h>
int main(){int t, n, i, j, k, cnt;int a[10010], ans;scanf("%d",&t);while(t--){scanf("%d",&n);for(i = 1; i <= n; ++i){scanf("%d",&a[i]);}i = 1;ans = 0x3f3f3f3f;while(i <= n){j = i;while(a[j+1] >= a[j]){--a[j];++j;}--a[j];cnt = j - i + 1;if(cnt < ans)ans = cnt;while(a[i] == 0)++i;}printf("%d\n",ans);}return 0;
}

 

转载于:https://www.cnblogs.com/wushuaiyi/p/4236406.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爆胎

定义 即轮胎爆裂。车辆的缺气(轮胎胎压低于标准胎压)行驶时&#xff0c;随着胎压的下降&#xff0c;轮胎与地面的摩擦成倍增加&#xff0c;胎温急剧升高&#xff0c;轮胎变软&#xff0c;强度急剧下降。这种情况下&#xff0c;如果车辆高速行驶&#xff0c;就可能导致爆胎。…

不要再问我跨域的问题了

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 跨域这两个字就像一块狗皮膏药一样黏在每一个前端开发者身上&#xff0c;无论你在工作上或者面试中无可避免会遇到这个问题。为了应付面…

SSM集合

SSM集成 1. Spring和各个框架的整合 Spring目前是JavaWeb开发中最终的框架&#xff0c;提供一站式服务&#xff0c;可以其他各个框架整合集成 Spring整合方案 1.1. SSH ssh是早期的一种整合方案 Struts2 &#xff1a; Web层框架 Spring &#xff1a; 容器框架 Hibernate &#…

浅谈 CSRF 攻击方式

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一.CSRF是什么&#xff1f; CSRF&#xff08;Cross-site request forgery&#xff09;&#xff0c;中文名称&#xff1a;跨站请求伪造&a…

C++之运算符重载(上)

1、概念 所谓重载&#xff0c;就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义&#xff0c;使之实现新功能&#xff0c;因此&#xff0c;一个函数名就可以用来代表不同功能的函数&#xff0c;也就是”一名多用”。 运算符也可以重载。实际上&#xff0c;我们…

手刹

定义 考手刹的专业称呼是辅助制动器&#xff0c;与制动器的原理不同&#xff0c;其是采用钢丝拉线连接到后制动蹄上&#xff0c;以对车子进行制动。作用 用于平地斜坡停车时制动&#xff0c;防止车子在无人状态下自动滑跑&#xff0c;逼免发生交通事故。工作原理 其原…

关于[super dealloc]

销毁一个对象时&#xff0c;需要重写系统的dealloc方法来释放当前类所拥有的对象&#xff0c;在dealloc方法中需要先释放当前类中所有的对象&#xff0c;然后再调用[super dealloc]释放父类中所拥有的对象。如先调用[super dealloc]将释放掉父类中所拥有的对象&#xff0c;当前…

C++之运算符重载(下)

4.提高 1.运算符重载机制 编译器实现运算符重载实际上就是通过函数重载实现的&#xff0c;可分为全局函数方式&#xff0c;也可分为成员函数方式进行重载&#xff0c;并没有改变原操作符的属性和语义。只是针对某个特定类定义一种新的数据类型操作。 2.重载赋值运算符 赋值…

Cookie / Session 的机制与安全

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Cookie和Session是为了在无状态的HTTP协议之上维护会话状态&#xff0c;使得服务器可以知道当前是和哪个客户在打交道。本文来详细讨论C…

手动挡

定义 手动挡&#xff0c;即用手拨动变速杆才能改变变速器内的齿轮啮合置&#xff0c;改变传动比&#xff0c;从而达到变速的目的。作用 一方面提供了手动的乐趣 另外一方面就是通过手动自主控制转速&#xff0c;还可以迟延或提前换档。驾驶技巧 市区内应直视前方五…

Servlet快速入门及运行流程

一、Servlet快速入门 1.创建一个web工程 2.在JavaResource中src下创建一个包名称为com.myxq.servlet 3.在创建的servlet包当中创建一个class文件起名为FirstServlet 4.进入该class实现一个Servlet接口&#xff0c;实现它未实现的方法 重点看service方法在该方法当中写入一句话进…

C++之多继承

1.基础知识 1.1 类之间的关系 has-A&#xff0c;uses-A 和 is-A has-A 包含关系&#xff0c;用以描述一个类由多个“部件类”构成。实现has-A关系用类成员表示&#xff0c;即一个类中的数据成员是另一种已经定义的类。 常和构造函数初始化列表一起使用 uses-A 一个类部分地…

自动挡

定义 所谓自动挡&#xff0c;就是不用驾驶者去手动换档&#xff0c;车辆会根据行驶的速度和交通情况自动选择合适的档位行驶。作用 能根据路面状况自动变速&#xff0c;使驾驶者可以全神贯地注视路面交通而不会被换档搞得手忙脚乱。工作原理 自动变速器&#xff0c…

聊一聊 cookie

我们看到的 cookie 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我自己创建了一个网站&#xff0c;网址为http://ppsc.sankuai.com。在这个网页中我设置了几个cookie&#xff1a;JS…

跨域资源共享 CORS 详解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 CORS是一个W3C标准&#xff0c;全称是"跨域资源共享"&#xff08;Cross-origin resource sharing&#xff09;。 它允许浏览…

油门

定义 油门是内燃机上控制燃料供量的装置。作用 是汽车发动机与摩托车油箱之间的阀门&#xff0c;控制汽油的量。操作注意 1.空车起步勿用大油门&#xff0c;以小油门为宜&#xff0c;负荷起步则以中油门为宜。 2.启动时将油门放在合适位&#xff0c;使机件不易磨损。…

C++之泛型编程(模板)

1.模板综述 背景 有时候许多函数或子程序的逻辑结构是一样的&#xff0c;只是要处理的数据类型不一样有时候多个类具有相同逻辑的成员函数和成员变量&#xff0c;只是成员变量的数据类型以及成员函数的参数类型不一样模板就是解决数据类型不一致造成代码冗余的一种机制&#xf…

Base64转PDF、PDF转IMG(使用pdfbox插件)

--添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --><dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.12</version></dependency&…

const的用法,特别是用在函数后面

原文出处&#xff1a;http://blog.csdn.net/zcf1002797280/article/details/7816977

图解 Linux 安装 JDK1.8 、配置环境变量

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 到官网下载 JDK 1.8 https://www.oracle.com/technetwork/java/javase/downloads/index.html 2. 用 rz 命令把 jdk-8u191-linux-x6…