1 条题解

  • 0
    @ 2023-1-21 21:49:05
    #include<bits/stdc++.h>
    using namespace std;
    /*
    使用连续性元素统计的方法统计连续相同的数出现的次数,然后根据题意计分
    再使用数组下标计数法,统计出每个队伍的得分
    最后统计得分的队伍的得分值
    x:存储每场比赛的胜队
    cnt:存储每个队伍总得分 
    */
    int x[110],cnt[110];
    int main()
    {
    	int n,c = 0;
    	cin >> n >> x[1];//第一场胜利的队伍
    	for(int i = 2; i <= n; i++){
    		x[i] = ((x[i-1]*3703+1047)%n)+1;
    	} 
    	//算分:知道每个队伍是第几场连胜
    	for(int i = 1; i <= n; i++){
    		c++;
    		//算分
    		if(c <= 3) cnt[x[i]] += c;
    		else cnt[x[i]] += 3;
    		//判断连胜结束
    		if(i == n || x[i] != x[i+1]){
    			c = 0;
    		} 
    	} 
    	//求cnt数组的最大数
    	int ma = 0;
    	for(int i = 1; i <= n; i++){
    		if(cnt[i] > ma) ma = cnt[i];
    	} 
    	cout << ma;
    	return 0;
    }
    
    
    
    • 1

    信息

    ID
    556
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    25
    已通过
    21
    上传者