1 条题解

  • 0
    @ 2025-8-24 22:57:05

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar L01001101
    The world is splendid and grand, welcome home.

    搬运于2025-08-24 22:57:05,当前版本为作者最后更新于2024-07-11 20:29:07,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Update on 2024.12.19,感谢 imljyhahaHack,已修改(。

    P10341 [THUSC 2019] 紧急决策

    通过题目我们可以知道,只有 [1,ans][1,ans] 区间内的灯塔全被照亮才会对答案产生贡献。

    考虑贪心,查找第一个未被照亮的灯塔 ii,向右查找到最远且可以照亮灯塔 ii 的灯塔 pp,点亮灯塔 pp,并扩展灯塔 pp 可照亮的范围,重复上述操作直到点亮灯塔的次数用完。

    此时最后一个被照亮的灯塔编号即为答案。

    时间复杂度 O(n)O(n)

    #include<cstdio>
    const int N=7.5e6+10;
    int n,t,q;
    int a[N];
    inline int read(){
    	int x=0,f=1;char ch=getchar();
    	while(ch<'0'||ch>'9')ch=='-'?f=0:0,ch=getchar();
    	while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    	return f?x:-x;
    }
    int main()
    {
    	n=read(),t=read(),q=read();
    	for(int i=1;i<=n;++i)
    		a[i]=read();
    	int i=1,p=0;
    	while(t--){
    		++p;
    		while(i<n&&a[i+1]-a[p]<=q)++i;
    		p=i;
    		if(i==n)return !printf("%d\n",n);
    		while(p<n&&a[p+1]-a[i]<=q)++p;
    	}
    	printf("%d\n",p);
    	return 0;
    }
    
    • 1

    信息

    ID
    10037
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者