热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

BZOJ4240Gym102082G:贪心算法与树状数组的综合应用

BZOJ4240Gym102082G题目"有趣的家庭菜园"结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在10秒的时间限制和256MB的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为756次,成功解决次数为349次,体现了该题目的挑战性和实际应用价值。

4240: 有趣的家庭菜园

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 756  Solved: 349
[Submit][Status][Discuss]

Description

对家庭菜园有兴趣的JOI君每年在自家的田地中种植一种叫做IOI草的植物。JOI君的田地沿东西方向被划分为N个区域,由西到东标号为1~N。IOI草一共有N株,每个区域种植着一株。在第i个区域种植的IOI草,在春天的时候高度会生长至hi,此后便不再生长。
为了观察春天的样子而出行的JOI君注意到了IOI草的配置与预定的不太一样。IOI草是一种非常依靠阳光的植物,如果某个区域的IOI草的东侧和西侧都有比它高的IOI草存在,那么这株IOI草就会在夏天之前枯萎。换句话说,为了不让任何一株IOI草枯萎,需要满足以下条件:
对于任意2<&#61;i<&#61;N-1&#xff0c;以下两个条件至少满足一个&#xff1a;
1. 对于任意1<&#61;j<&#61;i-1&#xff0c;hj<&#61;hi
2. 对于任意i&#43;1<&#61;j<&#61;N&#xff0c;hk<&#61;hi
IOI草是非常昂贵的&#xff0c;为了不让IOI草枯萎&#xff0c;JOI君需要调换IOI草的顺序。IOI草非常非常的高大且纤细的植物&#xff0c;因此JOI君每次只能交换相邻两株IOI草。也就是说&#xff0c;JOI君每次需要选择一个整数i(1<&#61;i<&#61;N-1)&#xff0c;然后交换第i株IOI草和第i&#43;1株IOI草。随着夏天临近&#xff0c;IOI草枯萎的可能性越来越大&#xff0c;因此JOI君想知道让所有IOI草都不会枯萎的最少操作次数。
现在给出田地的区域数&#xff0c;以及每株IOI草的高度&#xff0c;请你求出让所有IOI草的不会枯萎的最少操作次数。

Input

第一行一个正整数N&#xff0c;代表田地被分为了N个区域。
接下来N行&#xff0c;第i行(1<&#61;i<&#61;N)一个整数hi&#xff0c;表示第i株植物在春天时的高度

Output

输出一行一个整数&#xff0c;表示最少需要的操作次数

Sample Input

6
2
8
4
5
3
6

Sample Output

3

HINT

最终的高度序列为2 4 5 8 6 3&#xff0c;共需要操作三次。

 

3<&#61;N<&#61;3*10^5

 

1<&#61;hi<&#61;10^9

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
//#pragma GCC optimize(2)
using namespace std;
#define maxn 300005
#define inf 0x7fffffff
//#define INF 1e18
#define rdint(x) scanf("%d",&x)
#define rdllt(x) scanf("%lld",&x)
#define rdult(x) scanf("%lu",&x)
#define rdlf(x) scanf("%lf",&x)
#define rdstr(x) scanf("%s",x)
#define mclr(x,a) memset((x),a,sizeof(x))
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int U;
#define ms(x) memset((x),0,sizeof(x))
const long long int mod &#61; 1e9 &#43; 7;
#define Mod 1000000000
#define sq(x) (x)*(x)
#define eps 1e-5
typedef pair pii;
#define pi acos(-1.0)
//const int N &#61; 1005;
#define REP(i,n) for(int i&#61;0;i<(n);i&#43;&#43;)
typedef pair pii;inline int rd() {int x &#61; 0;char c &#61; getchar();bool f &#61; false;while (!isdigit(c)) {if (c &#61;&#61; &#39;-&#39;) f &#61; true;c &#61; getchar();}while (isdigit(c)) {x &#61; (x <<1) &#43; (x <<3) &#43; (c ^ 48);c &#61; getchar();}return f ? -x : x;
}ll gcd(ll a, ll b) {return b &#61;&#61; 0 ? a : gcd(b, a%b);
}
int sqr(int x) { return x * x; }/*ll ans;
ll exgcd(ll a, ll b, ll &x, ll &y) {if (!b) {x &#61; 1; y &#61; 0; return a;}ans &#61; exgcd(b, a%b, x, y);ll t &#61; x; x &#61; y; y &#61; t - a / b * y;return ans;
}
*/ll ans;
int n, l, r;
struct node {int v, p;
}t[maxn];
int tr[maxn];
bool cmp(node a, node b) {return a.v > b.v;
}
void add(int x) {while (x <&#61; n) {tr[x]&#43;&#43;; x &#43;&#61; x & -x;}}int query(int x) {int rs &#61; 0;while (x > 0) {rs &#43;&#61; tr[x]; x -&#61; x & -x;}return rs;
}int main()
{// ios::sync_with_stdio(0);n &#61; rd();for (int i &#61; 1; i <&#61; n; i&#43;&#43;)t[i].v &#61; rd(), t[i].p &#61; i;sort(t &#43; 1, t &#43; 1 &#43; n, cmp);for (int i &#61; 1; i <&#61; n; i&#43;&#43;) {int tp &#61; i; while (t[tp].v &#61;&#61; t[tp &#43; 1].v&&tp }

 


转:https://www.cnblogs.com/zxyqzy/p/10375968.html



推荐阅读
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 在高清节目的高比特率传输过程中,使用外接USB硬盘进行时间平移(timeshift)时,出现了性能不足和流数据丢失的问题。通过深入研究,我们发现通过对图像组(GOP)和图像头(I-frame)的精确定位技术进行优化,可以显著提升系统的性能和稳定性。本研究提出了改进的图像组与图像头定位算法,有效减少了数据丢失,提高了流媒体传输的效率和质量。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • BZOJ1034 详细解析与算法优化
    本文深入解析了BZOJ1034问题,并提出了优化算法。通过借鉴广义田忌赛马的贪心策略,当己方当前最弱的马优于对方最弱的马时进行匹配;同样地,若己方当前最强的马优于对方最强的马,也进行匹配。此方法在保证胜率的同时,有效提升了算法效率。 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 抖音AI特效风靡网络,真人瞬间变身动漫角色,吴亦凡、PDD和戚薇纷纷沉迷其中
    近期,抖音推出的一款名为“变身漫画”的AI特效在社交媒体上迅速走红,吸引了大量用户尝试。不仅普通网友积极参与,连吴亦凡、PDD和戚薇等明星也纷纷加入,体验将真人瞬间转化为动漫角色的神奇效果。这一特效凭借其高度的趣味性和创新性,迅速成为网络热议的话题。 ... [详细]
  • 题目描述:小K不幸被LL邪教洗脑,洗脑程度之深使他决定彻底脱离这个邪教。在最终离开前,他计划再进行一次亚瑟王游戏。作为最后一战,他希望这次游戏能够尽善尽美。众所周知,亚瑟王游戏的结果很大程度上取决于运气,但通过合理的策略和算法优化,可以提高获胜的概率。本文将详细解析洛谷P3239 [HNOI2015] 亚瑟王问题,并提供具体的算法实现方法,帮助读者更好地理解和应用相关技术。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 本文研究了基于MATLAB实现的CRC16 Modbus协议优化算法。通过MATLAB对IAI电缸进行控制时,发现CRC16—Modbus通信协议存在一定的优化空间。经过广泛查阅资料和深入研究,最终提出了一种有效的优化方案,显著提升了通信效率和稳定性。该方案不仅适用于IAI电缸的控制,还可推广至其他需要使用CRC16 Modbus协议的工业控制系统中。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 如何在 Python 编程中实现各种数据类型的字符串转换? ... [详细]
  • 2017广西邀请赛复盘:NWAFU全国邀请赛训练赛第八场
    本次训练赛(NWAFU全国邀请赛复盘之一)基于2017年广西邀请赛的赛题,重点解析了A、E、F、G等关键题目,旨在通过复盘帮助参赛者深入理解相关知识点和技术应用,为后续比赛提供宝贵经验。 ... [详细]
author-avatar
hi347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有