1 条题解

  • 0
    @ 2025-8-24 21:36:13

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar FQR_
    不拿金钩不改个签 | CF不上IM不改个签

    搬运于2025-08-24 21:36:13,当前版本为作者最后更新于2022-04-24 22:29:41,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    看到题解区的大佬们有用线段树的,有用单调队列的,只会暴力的本蒟蒻大受震撼。


    题目简化:

    给定长度为 nn 的数组 aa ,求 axa_xaya_y 之间最大的数的位置。


    思路:

    首先,读入,不必多说。

    然后,我们用maxn表示最大数的值,用 ans 表示最大数的位置。遍历 axa_xaya_y 之间的所有数。如果 aia_imaxn大,就把maxn替换为 aia_i ,把ans替换为 i

    最后,输出ans,就得到答案了。


    AC代码:

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    	int n,m,a[100005],x,y;
    	cin>>n;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	cin>>m;
    	while(m--)//循环m次
    	{
    		cin>>x>>y;
    		int maxn=-1,ans=0;//maxn为最大数的值,ans为最大数的位置
    		for(int i=x;i<=y;i++)//从x遍历到y
    		{
    			if(a[i]>maxn)
    			{
    				maxn=a[i];ans=i;
    			}//如果a[i]大于当前最大数的值,就把最大值替换为a[i],位置替换成i
    		}
    		cout<<ans<<endl;
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    1261
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    (无)
    递交数
    0
    已通过
    0
    上传者