• codeforce 1027C 贪心算法


    答题就是贪心算法,[题目链接](http://codeforces.com/problemset/problem/1027/C)
    笔者主要想借这个题谈一下如何缩短代码运行时间
    1.scanf与cin,优先选择scanf
    2.memset最好不要用
    3.本题中,不需要开一个1e6的数组储存输入数据
    4.本题中,不需要对legal[ ]每次初始化,会慢大约0.7s(总运行时间2s)
    5.玄学,改成<stdio.h><stlib.h>后大约快0.05s

    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    
    using namespace std;
    
    const int N=10010;
    
    int T;
    int n;
    
    int m;
    
    int legal[100*N];
    int bucket[N];
    int index;
    int x;
    
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    		index = 0;
    
    		// memset(legal, 0 ,sizeof(legal));
    		// memset(bucket, 0 ,sizeof(bucket));
    		// for(int i = 0 ; i < N ; i++)	legal[i] = 0;
    		for(int i = 0 ; i < N ; i++)	bucket[i] = 0;
    
    		scanf("%d",&n);
    
    		for(int i = 0 ; i < n ; i++)
    		{
    			scanf("%d",&m);
    
    			bucket[m]++;
    			if(bucket[m] == 2 || bucket[m] == 4)
    			legal[++index] = m;
    		}
    
    		sort(legal+1,legal+1+index);
    
    		double mini = N;
     		for(int i = 1 ; i < index ; i++)
     		{
     			if(legal[i] == legal[i+1])
     			{
     				x = i;
     				break;
     			}
    
    			double k = legal[i+1]*1.0/legal[i];
    			if(mini>k)
    			{
    				x = i;
    				mini = k;
    			}
    		}
    		printf("%d %d %d %d
    ",legal[x],legal[x],legal[x+1],legal[x+1]);
    
    	}
    	return 0;
    }
    
    透过泪水看到希望
  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    C语言基础知识【作用域规则】
  • 原文地址:https://www.cnblogs.com/ronnielee/p/9505705.html
Copyright © 2020-2023  润新知