zoukankan      html  css  js  c++  java
  • (hzau)华中农业大学第四届程序设计大赛网络同步赛 G: Array C

    题目链接:http://acm.hzau.edu.cn/problem.php?id=18

    题意是给你两个长度为n的数组,a数组相当于1到n的物品的数量,b数组相当于物品价值,而真正的价值表示是b[i]*k*k(k表示取的数量),给你m表示最少取m个物品。然后让你求取m个的最小的价值和。

    一个物品的价值是b[i] , 两个物品的价值是b[i] * 3 + b[i] ... 

    所以每个物品的价值是b[i] , b[i] * 3 , b[i] * 5 , b[i] * 7 ...

    每个物品数量a[i]不超过100,所以总共不超过1e5个。所有的物品价值存到数组中,sort一下取前m个即可。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 using namespace std;
     6 typedef long long LL;
     7 LL cost[100005] , a[1005] , b[1005];
     8 int main()
     9 {
    10     int n , m;
    11     while(~scanf("%d %d" , &n , &m)) {
    12         for(int i = 1 ; i <= n ; ++i) {
    13             scanf("%lld" , a + i); 
    14             a[i] = min(a[i] , (LL)m);
    15         }
    16         int cnt = 0;
    17         for(int i = 1 ; i <= n ; ++i) {
    18             scanf("%lld" , b + i);
    19             for(int j = 1 ; j <= a[i] ; ++j)
    20                 cost[cnt++] = (LL)(2 * j - 1) * b[i];
    21         }
    22         sort(cost , cost + cnt);
    23         LL sum = 0;
    24         for(int i = 0 ; i < m ; ++i) {
    25             sum += cost[i];
    26         }
    27         printf("%lld
    " , sum);
    28     }
    29 }
  • 相关阅读:
    django之上传
    djano的ORM操作
    Python中的分页管理
    MySQL作业
    socket操作
    python的os模块
    django-debug-toolbar的配置及使用
    logging模板及配置说明
    使用StrictRedis连接操作有序集合
    学习总结
  • 原文地址:https://www.cnblogs.com/Recoder/p/5496144.html
Copyright © 2011-2022 走看看