1 条题解

  • 1
    @ 2024-11-21 20:51:33

    树状数组+大根堆=30分 (可能还需要一个贪心,但我不会)

    #include<bits/stdc++.h>
    using namespace std;
    int eee,ok[500001],x,yinfu,shuliang,zuixiao,zuida,zhi[500001],daan;
    priority_queue<int>p;
    int lobit(int w){return w&(-w);}
    void jia(int m,int n)
    {
    	while(m<=yinfu)
    	{
    		ok[m]+=n;
    		m+=lobit(m);
    	}
    }
    int shuchu(int z)
    {
    	int g=0;
    	while(z>0)
    	{
    		g+=ok[z];
    		z-=lobit(z);
    	}
    	return g;
    }
    int main()
    {
    	scanf("%d%d%d%d",&yinfu,&shuliang,&zuixiao,&zuida);
    	for(int i=1;i<=yinfu;i++)
    	{
    	scanf("%d",&eee);
    	jia(i,eee);
    	}
    	for(int i=zuixiao;i<=zuida;i++)
    	{
    		for(int j=1;j<=yinfu-i+1;j++)
    		{
    			x=shuchu(j+i-1)-shuchu(j-1);
    			p.push(x);
    		}
    	}
    	for(int i=1;i<=shuliang;i++)
    	{
    		daan+=p.top();
    		p.pop();
    	}
    	printf("%d",daan);
    	return 0;
    } 
    
    • 1

    信息

    ID
    1869
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    11
    已通过
    0
    上传者