1 条题解

  • 1
    @ 2024-8-31 11:45:22

    其实我们只要观察一下数据范围就会发现,分数的范围非常小!(只有600)

    于是就顺理成章的想到了桶排。

    思路非常简单,而且不存在超时。

    #include<bits/stdc++.h>
    using namespace std;
    int t[605];
    int n,w;
    int main()
    {
    	int x;
    	cin>>n>>w;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>x;
    		t[x]++;
    		int sum=0;
    		for(int j=600;j>=0;j--)
    		{
    			sum+=t[j];
    			if(sum>=max(1,i*w/100))
    			{
    				cout<<j<<' ';
    				break;
    			}
    		}
    	}
    	return 0;
     } 
    
    • @ 2024-8-31 12:17:26

      这个做法很巧妙的一点就是,同时实现了同分段的人会一起拿奖这个要求

    • @ 2024-9-1 13:10:11

      非常好懂,谢谢了,之前没想到能直接暴力枚举

  • 1

信息

ID
743
时间
1000ms
内存
256MiB
难度
9
标签
递交数
14
已通过
4
上传者