• GCJ 2008 Round 1A Minimum Scalar Product( 水 )



    **链接:****传送门 **

    题意:给两个向量 v1 = { x1 , x2 , x3 , x4 .... } , v2 = { y1 , y2 , y3 , y4 ...... } 允许任意交换 v1 和 v2 各自向量的分量顺序,计算 v1,v2 内积 ( x1 * y1 + x2 * y2 .... )的最小值

    思路:根据样例可大胆猜测内积最小值应该为 v1 的最小值 × v2 的最大值 , v1 的次小值 × v2 的次大值 ...... 也就是需要排两次序即复杂度为 O( nlogn )是可以通过大数据的


    /*************************************************************************
        > File Name: gcj_2008_round1_A.cpp
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年06月19日 星期一 14时10分49秒
     ************************************************************************/
    
    #include<bits/stdc++.h>
    using namespace std;
    
    #define ll long long
    const int MAX_N = 1002;
    int v1[MAX_N] , v2[MAX_N];
    int n;
    
    bool cmp(int a,int b){
    	return a > b;
    }
    int main(){
    	int t , kase = 0;
    	freopen("A-small-practice.in","r",stdin);            // 测试小数据
    	freopen("A-small-practice.out","w",stdout);      // 测试小数据
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d",&n);
    		for(int i = 0 ; i < n ; i++)	scanf("%d",v1+i);
    		for(int i = 0 ; i < n ; i++)	scanf("%d",v2+i);
    		sort(v1,v1+n);
    		sort(v2,v2+n,cmp);
    		ll ret = 0;
    		for(int i = 0 ; i < n ; i++){
    			ret += (ll)v1[i]*v2[i];
    		}
    		printf("Case #%d: %lld
    ",++kase , ret);
    	}
    	return 0;
    }
  • 相关阅读:
    石家庄地铁线路查询系统(补)
    构建之法阅读笔记03
    构建之法阅读笔记02
    Day 3-3 内置方法
    Day3-2 函数之递归
    Day3-1 函数
    Day2 列表,元组,字典,集合
    Day1 基础知识
    Day1. Python基础知识
    iptables防火墙配置
  • 原文地址:https://www.cnblogs.com/WArobot/p/7048607.html
Copyright © 2020-2023  润新知