zoukankan      html  css  js  c++  java
  • [归并] [STL] [洛谷] P1309 瑞士轮

    朴素算法每轮都sort会tle

    所以要优化 用归并

    难点在于想明白为什么是归并

    比赛过程中 

    输赢持续有序 

    这是归并的前提条件

    所以才可以归并

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    const int MAXN = 2e5 + 10;
    
    struct team
    {
    	int soc;
    	int ce;
    	int num;
    	
    }arr[MAXN], brr[MAXN], crr[MAXN];
    
    bool cmp(team a, team b)
    {
    	if(a.soc != b.soc)
    		return a.soc > b.soc;
    	else
    		return a.num < b.num;
    }
    
    int main()
    {
    	
    	ios::sync_with_stdio(false);
    	
    	int N, R, Q;
    	cin>>N>>R>>Q;
    	
    	for(int i = 1; i <= 2 * N; i++)
    	{
    		cin>>arr[i].soc;
    		arr[i].num = i;
    	}
    	
    	for(int i = 1; i <= 2 * N; i++)
    	{
    		cin>>arr[i].ce;
    	}
    	
    	sort(arr + 1, arr + 1 + (2 * N), cmp);
    	
    	while(R--)
    	{
    		
    		int tf = 1;
    		
    		for(int i = 1; i <= 2 * N; i += 2, tf ++)
    		{
    			if(arr[i].ce > arr[i + 1].ce) 
    			{
    				brr[tf] = arr[i];
    				brr[tf].soc ++;
    				crr[tf] = arr[i + 1]; 
    			}
    			
    			else
    			{
    				brr[tf] = arr[i + 1];
    				brr[tf].soc ++; 
    				crr[tf] = arr[i];
    			}
    		}
    		
    		merge(brr + 1, brr + tf, crr + 1, crr + tf, arr + 1, cmp);
    	}
    	
    	cout<<arr[Q].num<<endl;
    	return 0;
    }
  • 相关阅读:
    超媒体
    超文本
    视频文件格式
    web.py 模板错误记录
    pip常用记录
    微信公众号绑定服务器 Flask版
    scrapy 简单防封
    python 手写队列
    jQuery个人总结
    PHP用url传递数组
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270596.html
Copyright © 2011-2022 走看看