zoukankan      html  css  js  c++  java
  • nyoj 47 江 河问题 【贪婪】

    经典的贪婪。

    两种方案:一个:让我们来最快,第二快,在过去的第一,最快的回。然后最慢,最慢第二,在过去。次最快的回来a[0]+a[1]+a[1]+a[n-1]

    二:最快的和最慢的过去,最快的回来,最快的和当前最慢的过去,最快的回来。

    a[0]+a[n-1]+a[0]+a[n-2]

    每次取最优解。

    注意:最后剩余没过的人小于等于3的时候。要特殊推断。

    代码:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #define INF 0x3f3f3f3f
    using std::sort;
    int s[1005], ans, n;
    
    void solve(){
    	ans = 0;
    	int st = 0, en = n, len = 0;
    	while(en > 3){
    		int temp1 = s[en-1]+2*s[1]+s[0];
    		int temp2 = 2*s[0]+s[en-1]+s[en-2];
    		ans += temp1<temp2 ?temp1:temp2;
    		en -= 2;
    	}
    	if(en == 3) ans += s[0]+s[2];
    	ans += s[1];
    	printf("%d
    ", ans);
    }
    int main(){
    	int t, i, j;
    	scanf("%d", &t);
    	while(t --){
    		scanf("%d", &n);
    		for(i = 0; i < n; i ++) scanf("%d", &s[i]);
    		sort(s, s+n);
    		if(n<3) printf("%d
    ", s[n-1]);
    		else solve();
    	}
    	return 0;
    }          
    

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=47


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    人事面试测试篇25
    人事面试测试篇19
    人事面试测试篇24
    人事面试测试篇20
    人事面试测试篇18
    人事面试测试篇23
    人事面试测试篇21
    人事面试测试篇17
    明天……
    重装系统
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4711701.html
Copyright © 2011-2022 走看看