• HDU计算机学院大学生程序设计竞赛(2015’12)1003 The collector’s puzzle


    题意:

    有N个珠宝 M个箱子 珠宝价值a  箱子价值b

    每个珠宝放在箱子里,花费abs(a-b)

    箱子可以无限放珠宝

    求最小花费

    水题

    预处理每个价值的珠宝所放的箱子O(n)

    从左往右找到最接近的左箱子l  从右往左找到最接近的右箱子r

    取min

    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<iostream>
    #include<algorithm>
    #include<map>
    using namespace std;
    const int N=20005;
    int n,k,m;
    int l[N],r[N];
    int v[10*N],s[N];
    int main()
    {
        int i,j;
        int T;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            memset(l,0,sizeof(l));
            memset(r,0,sizeof(r));
            memset(v,0,sizeof(v));
            memset(s,0,sizeof(s));
            for(i=1;i<=n;i++)
            {
                scanf("%d",&v[i]);
            }
            while(m--)
            {
                scanf("%d",&i);
                s[i]=1;
            }
            int now=-10000;
            for(i=1;i<=10000;i++)
            {
                if(s[i]) now=i;
                l[i]=i-now;
            }
            now=30000;
            for(i=10000;i>=1;i--)
            {
                if(s[i]) now=i;
                r[i]=now-i;
            }
            long long ans=0;
            for(i=1;i<=n;i++)
            {
                ans+=min(r[v[i]],l[v[i]]);
            }
            cout<<ans<<endl;
    
        }
        return 0;
    }
  • 相关阅读:
    换个角度看Salesforce之基础配置学习笔记(二)
    换个角度看Salesforce之基础配置学习笔记(一)
    C# LINQ学习笔记
    Oracle使用总结
    UML图及Visio 2010使用总结
    常见的DOS命令
    ansible笔记
    jsoncpp1.9.4源码解析
    fabric链码
    fabric数据结构
  • 原文地址:https://www.cnblogs.com/Woo95/p/5078341.html
Copyright © 2020-2023  润新知