1 条题解

  • 0
    @ 2025-5-7 14:59:26

    题意分析

    N位裁判对P个问题按难度打分,每行是某裁判对问题打出的分数。简单问题定义为一半以上裁判认为最简单,没有人认为最难。求简单问题列表。

    解题思路

    1. 统计评分
      • 对每位评委,记录其评分的最小值("最简单")和最大值("最困难")。
    2. 判断条件
      • 对于每道题,统计被评为"最简单"的次数 SS 和"最困难"的次数 HH
      • S>N2S > \frac{N}{2}H=0H = 0,则该题属于"非常简单"。
    3. 输出结果
      • 将所有符合条件的题目编号排序后输出。

    C++代码实现

    #include <iostream>
    using namespace std;
    int a[102][102];
    int b[102];
    int s[102];
    int main()
    {
    	int N,P;
    	cin>>N>>P;
    	for(int i=0;i<N;i++)
    	{
    		cin>>a[i][0];
    		b[i]=a[i][0];
    		s[i]=a[i][0];
    		for(int j=1;j<P;j++)
    		{
    			cin>>a[i][j];
    			if(a[i][j]>b[i])
    			{
    				b[i]=a[i][j];
    			}
    			if(a[i][j]<s[i])
    			{
    				s[i]=a[i][j];
    			}
    		}
    	}
    	int flag=0;
    	for(int j=0;j<P;j++)
    	{
    		int js_s=0;//最简单数的计数 
    		int js_b=0; 
    		for(int i=0;i<N;i++)
    		{
    			if(a[i][j]==b[i])
    			{
    				js_b++;
    			}
    			if(a[i][j]==s[i])
    			{
    				js_s++;
    			}
    		} 
    		if((js_b==0)&&(js_s>(N/2)))
    		{
    			cout<<j+1<<" ";//谢谢博友 
    			flag=1;
    		}
    	}
    	if(flag==0)
    	{
    		cout<<0<<endl;
    	}else
    	{
    		cout<<endl;
    	}
    	return 0;
    }
    
    • 1

    信息

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