博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(hzau)华中农业大学第四届程序设计大赛网络同步赛 G: Array C
阅读量:5050 次
发布时间:2019-06-12

本文共 1132 字,大约阅读时间需要 3 分钟。

题目链接:

题意是给你两个长度为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 
2 #include
3 #include
4 #include
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\n" , sum);28 }29 }

 

转载于:https://www.cnblogs.com/Recoder/p/5496144.html

你可能感兴趣的文章
GridView数据导出到excel
查看>>
python爬煎蛋妹子图
查看>>
linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
查看>>
在不安装oracle客户端的情况下,使用PLSQL
查看>>
python之做一个简易的翻译器(二)
查看>>
python-appium520-3引入unittest,编写自动化用例
查看>>
2-1:Print date(p28)
查看>>
hdu 1542
查看>>
【BZOJ2698】染色
查看>>
effective c++条款11 在operator=中处理“自我赋值”
查看>>
写在前面
查看>>
AppUi自动化框架thread_page.py代码
查看>>
晚风吹来一阵冷
查看>>
Live555实战之交叉编译live555共享库
查看>>
Android 外部存储权限分析
查看>>
全然同态加密
查看>>
php 接口类与抽象类的实际作用
查看>>
Beta答辩总结
查看>>
fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
查看>>
[模板]洛谷T3383 线性筛素数 欧拉筛法
查看>>