2111 ACM 贪心 水题
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2111
题意:知道背包容量和物品单价、体积。问能买到的最大价值?
注意:单价指的是单位体积的价格
思路:先把单价由高到低排序,然后从单价高的商品开始买
代码:
#include<iostream> #include<algorithm> using namespace std; struct item { int pi,mi; }I[101]; bool cmp(item a,item b) { return a.pi>b.pi; } int main() { int v,n; while(scanf("%d %d",&v,&n)!=EOF&&v) { for(int i=0;i<n;i++) scanf("%d%d",&I[i].pi,&I[i].mi); sort(I,I+n,cmp); int value=0; for (int i=0;i<n&&v;i++){ if (v>=I[i].mi){ v-=I[i].mi; value+=I[i].mi*I[i].pi; } else { value+=I[i].pi*v; v=0; } } cout<<value<<endl; } }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步