UVA - 11235 Frequent values

本文深入探讨了信息技术领域的核心概念与应用实践,涵盖了从基础到进阶的多个技术领域,包括但不限于前端开发、后端开发、移动开发、游戏开发、大数据开发等。文章详细阐述了各领域内的关键技术和解决方案,旨在为读者提供全面的技术指导和实践洞察。
Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu

 Status

Description

Download as PDF
2007/2008 ACM International Collegiate Programming Contest 
University of Ulm Local Contest

Problem F: Frequent values

You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. In addition to that, you are given several queries consisting of indices i and j (1 ≤ i ≤ j ≤ n). For each query, determine the most frequent value among the integers ai , ... , aj.

Input Specification

The input consists of several test cases. Each test case starts with a line containing two integers n and q (1 ≤ n, q ≤ 100000). The next line contains n integers a1 , ... , an (-100000 ≤ ai ≤ 100000, for each i ∈ {1, ..., n}) separated by spaces. You can assume that for each i ∈ {1, ..., n-1}: ai ≤ ai+1. The following q lines contain one query each, consisting of two integers i and j(1 ≤ i ≤ j ≤ n), which indicate the boundary indices for the query.

The last test case is followed by a line containing a single 0.

Output Specification

For each query, print one line with one integer: The number of occurrences of the most frequent value within the given range.

Sample Input
10 3
-1 -1 1 1 1 1 3 10 10 10
2 3
1 10
5 10
0
Sample Output
1
4
3

A naive algorithm may not run in time!



分析:
树状数组RMQ问题。除了树状数组外,还涉及到了游程编码,初学还是比较难的。
还是没有完全理解,特点是自己敲代码的话,没把握ac。以后继续看。
ac代码:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100000+10;
int a[maxn],d[maxn][20];//a多余?
int n,q;
int size;
//int value[maxn],count0[maxn]={0};
int num[maxn],left0[maxn],right0[maxn];


void RLE()//游程编码,维护a,num,left0,right0四个数组.好好体会
{
    int x,cnt=-1,l;
    int maxnum=0xffffffff;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&x);
        if(x==maxnum)
        {
            a[cnt]++;
            num[i]=cnt;
            left0[i]=l;
        }
        else
        {
            if(cnt>=0)
            {
                for(int j=l;j<=i-1;j++)
                    right0[j]=i-1;
            }
            cnt++;
            l=i;
            num[i]=cnt;
            left0[i]=l;
            a[cnt]=1;
            maxnum=x;
        }
    }
    for (int i = l; i < n; i++)
        right0[i] = n-1;
    size = cnt + 1;
}


void RMQ_init()
{
    int n=size;//优化,缩小范围
    for(int i=0;i<n;i++)
    d[i][0]=a[i];
    for(int j=1;(1<<j)<=n;j++)
    for(int i=0;i+(1<<j)-1<n;i++)
    d[i][j]=max(d[i][j-1],d[i+(1<<(j-1))][j-1]);
}


int RMQ(int L,int R)
{
    if(L>R) return 0;//这句话的作用?
    int k=0;
    while((1<<(k+1))<=R-L+1)
    k++;
    return max(d[L][k],d[R-(1<<k)+1][k]);
}


int main()
{
    while(scanf("%d%d",&n,&q)&&n)
    {
        RLE();
        RMQ_init();
        while(q--)
        {
            int L,R;
            scanf("%d%d",&L,&R);
            L--;R--;//使得从0开始
            if(num[L]==num[R])//
            printf("%d\n",R-L+1);//多余
            else
            {
                int t1=right0[L]-L+1;
                int t2=R-left0[R]+1;
                int t3=RMQ(num[L]+1,num[R]-1);
                int ans=max(t1,max(t2,t3));
                printf("%d\n",ans);
            }
        }
    }
    return 0;
}
内容概要:本文介绍了一个基于冠豪猪优化算法(CPO)的无人机三维路径规划项目,利用Python实现了在复杂三维环境中为无人机规划安全、高效、低能耗飞行路径的完整解决方案。项目涵盖空间环境建模、无人机动力学约束、路径编码、多目标代价函数设计以及CPO算法的核心实现。通过体素网格建模、动态障碍物处理、路径平滑技术和多约束融合机制,系统能够在高维、密集障碍环境下快速搜索出满足飞行可行性、安全性与能效最优的路径,并支持在线重规划以适应动态环境变化。文中还提供了关键模块的代码示例,包括环境建模、路径评估和CPO优化流程。; 适合人群:具备一定Python编程基础和优化算法基础知识,从事无人机、智能机器人、路径规划或智能优化算法研究的相关科研人员与工程技术人员,尤其适合研究生及有一定工作经验的研发工程师。; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航与避障;②研究智能优化算法(如CPO)在路径规划中的实际部署与性能优化;③实现多目标(路径最短、能耗最低、安全性最高)耦合条件下的工程化路径求解;④构建可扩展的智能无人系统决策框架。; 阅读建议:建议结合文中模型架构与代码示例进行实践运行,重点关注目标函数设计、CPO算法改进策略与约束处理机制,宜在仿真环境中测试不同场景以深入理解算法行为与系统鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值