cf 12C Fruits(贪心【简单数学】)

题意:

m个水果,n个价格。每种水果只有一个价格。

问如果给每种水果分配价格,使得买的m个水果总价格最小、最大。

输出最小值和最大值。

思路:

贪心。

代码:

bool cmp(int a,int b){
    return a>b;
}

string name;
map<string,int> mp;
int price[200],fruit[200];
int cn;
int n,m;

int main(){

    cin>>n>>m;

    mp.clear();
    cn=0;
    mem(fruit,0);
    mem(price,0);

    rep(i,1,n) scanf("%d",&price[i]);
    rep(i,1,m){
        cin>>name;
        if(mp[name]==0){
            fruit[++cn]=1;
            mp[name]=cn;
        }
        else{
            fruit[mp[name]]++;
        }
    }
    sort(price+1,price+1+n);
    sort(fruit+1,fruit+1+cn,cmp);
    ll ans1=0;
    ll ans2=0;
    rep(i,1,cn){
        ans1+=((ll)1*price[i]*fruit[i]);

    }
    sort(price+1,price+1+n,cmp);
    rep(i,1,cn){
        ans2+=((ll)1*price[i]*fruit[i]);
    }
    printf("%I64d %I64d\n",ans1,ans2);

    return 0;
}
时间: 2024-11-03 03:31:32

cf 12C Fruits(贪心【简单数学】)的相关文章

hdu 2200 Eddy&#39;s AC难题(简单数学。。)

题意: N个人,每个人AC的题数都不一样. Eddy想从中选出一部分人(或者全部)分成两组.必须满足第一组中的最小AC数大于第二组中的最大AC数. 问共有多少种不同的选择方案. 思路: 简单数学.. 代码: ll C(int n,int x){ ll ans=1; rep(i,1,x){ ans = ans*(n+1-i)/i; } return ans; } int main(){ int n; while(cin>>n){ ll ans = 0; rep(i,2,n){ ans += (C

编译器--简单数学表达式计算器

做了一个能够计算简单数学表达式值的小计算器,算不上是编译器,但用到了编译器的知识.最近在看一些编译器的东西,所以动手写这个最简单的计算器,既是对那些抽象的编译器知识有个形象的认识,也为后面添加复杂的东西--语句打下基础.此计算器是以<编译原理与实践>中实现的tiny编译器为参考写的,tiny是一个值得去研究的编译器,可以说是麻雀虽小,五脏俱全.从词法分析到代码生成都有,并且代码非常清晰易懂.我觉得想要了解编译器,可以从tiny入手,去将它跑起来并分析.废话不多说,开始记录这个小计算器. 先说下

CF 332 C 贪心

题目链接:http://codeforces.com/problemset/problem/332/C 参考  链接: http://blog.csdn.net/cc_again/article/details/9471465 题目意思: 有n个命令,要通过p个,某主席要在通过的p个中选择k个接受. 每个任务有两个值ai,bi, ai表示如果该主席接受该命令,她的头发变灰的数量,bi表示如果该主席不接受该命令时,议员不高兴值. 对于通过的p个命令,该主席要使议员的不高兴值和最小,在相同的情况下,

HDU 1018 Big Number (简单数学)

Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25649    Accepted Submission(s): 11635 Problem Description In many applications very large integers numbers are required. Some of these

【龙书笔记】用Python实现一个简单数学表达式从中缀到后缀语法的翻译器(采用递归下降分析法)

上篇笔记介绍了语法分析相关的一些基础概念,本篇笔记根据龙书第2.5节的内容实现一个针对简单表达式的后缀式语法翻译器Demo. 备注:原书中的demo是java实例,我给出的将是逻辑一致的Python版本的实现. 在简单后缀翻译器代码实现之前,还需要介绍几个基本概念. 1. 自顶向下分析法(top-down parsing) 顾名思义,top-down分析法的思路是推导产生式时,以产生式开始符号作为root节点,从上至下依次构建其子节点,最终构造出语法分析树.在具体实现时,它会把输入字符串从左到右

SGU - 123 - The sum (简单数学!)

SGU - 123 The sum Time Limit: 250MS   Memory Limit: 4096KB   64bit IO Format: %I64d & %I64u Submit Status Description Here is your second problem, keep calm and solve it . Nacci sequence of numbers is known to all : F1 = 1; F2 = 1; Fn+1 = Fn + Fn-1,

简单数学(组合数+求数列通项公式)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6467 看到这题,简单数学???对不起我给数学老师丢脸了! 这里解释一下第二步到第三步:假设n=3,第二步{1*C(1,1)+1*C(1,2)+1*C(1,3)+2*C(2,2)+2*C(2,3)+3*C(3,3)},第三步{1*C(1,1)+1*C(1,2)+2*C(2,2)+1*C(1,3)+2*C(2,3)+3*C(3,3)}.可以发现是相等的 之后最后一步就是组合数求和公式2^n. 之后便可以

CF 500 C. New Year Book Reading 贪心 简单题

New Year is coming, and Jaehyun decided to read many books during 2015, unlike this year. He has n books numbered by integers from 1 to n. The weight of the i-th (1 ≤ i ≤ n) book is wi. As Jaehyun's house is not large enough to have a bookshelf, he k

cf 11B Jumping Jack(贪心,数学证明一下,,)

题意: 给一个数X. 起始点为坐标0.第1步跳1格,第2步跳2格,第3步跳3格,.....以此类推. 每次可以向左跳或向右跳. 问最少跳几步可以到坐标X. 思路: 假设X是正数. 最快逼近X的方法是不停向右走.如果越过了X,假设到了X1,则必有X1-X小于最后一步d. 如果X1-X是偶数,将之前的某个x变为-x.则可以到X. 如果X1-X是奇数,因为将之前的某个x变为-x,实际是后退2x格.所以必定要再向右走一步.直到X1-X是偶数.(其实只要走一步或两步) X是负数的情况和X是正数的情况一样.