BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心定义价值
Posted Leohh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心定义价值相关的知识,希望对你有一定的参考价值。
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2020
题意:
FJ开车去买K份食物。
如果他的车上有X份食物,每走一里就花费X元。
FJ的城市是一条线,总共n里路,有n+1个地方,标号0~n。
FJ从0开始走,到n结束(不能往回走),要买m份食物。
城里有t个商店,每个商店的位置是x[i](一个点上可能有多个商店),有f[i]份食物,每份c[i]元。
问到达n并买m份食物的最小花费。
题解:
贪心。
每一份食物实际的话费 = 它的价格 + 剩下的路程
所以按照实际花费排序,然后依次选够m个就好啦。
AC Code:
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <vector> 5 #include <queue> 6 #define MAX_N 100005 7 #define INF 10000000 8 9 using namespace std; 10 11 struct Edge 12 { 13 int dest; 14 int len; 15 Edge(int _dest,int _len) 16 { 17 dest=_dest; 18 len=_len; 19 } 20 Edge(){} 21 }; 22 23 struct Node 24 { 25 int idx; 26 int dis; 27 Node(int _idx,int _dis) 28 { 29 idx=_idx; 30 dis=_dis; 31 } 32 Node(){} 33 friend bool operator > (const Node &a,const Node &b) 34 { 35 return a.dis>b.dis; 36 } 37 }; 38 39 int n,m; 40 int s,t1,t2; 41 int ans=INF; 42 int dis[MAX_N]; 43 vector<Edge> edge[MAX_N]; 44 priority_queue<Node,vector<Node>,greater<Node> > q; 45 46 void djikstra(int start) 47 { 48 memset(dis,-1,sizeof(dis)); 49 dis[start]=0; 50 q.push(Node(start,0)); 51 while(!q.empty()) 52 { 53 Node now=q.top(); 54 q.pop(); 55 if(dis[now.idx]<now.dis) continue; 56 for(int i=0;i<edge[now.idx].size();i++) 57 { 58 Edge temp=edge[now.idx][i]; 59 if(dis[temp.dest]==-1 || dis[temp.dest]>dis[now.idx]+temp.len) 60 { 61 dis[temp.dest]=dis[now.idx]+temp.len; 62 q.push(Node(temp.dest,dis[temp.dest])); 63 } 64 } 65 } 66 } 67 68 void read() 69 { 70 cin>>m>>n>>s>>t1>>t2; 71 int a,b,v; 72 for(int i=0;i<m;i++) 73 { 74 cin>>a>>b>>v; 75 edge[a].push_back(Edge(b,v)); 76 edge[b].push_back(Edge(a,v)); 77 } 78 } 79 80 void solve() 81 { 82 djikstra(t1); 83 ans=min(ans,dis[s]+dis[t2]); 84 djikstra(t2); 85 ans=min(ans,dis[s]+dis[t1]); 86 } 87 88 void print() 89 { 90 cout<<ans<<endl; 91 } 92 93 int main() 94 { 95 read(); 96 solve(); 97 print(); 98 }
以上是关于BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心定义价值的主要内容,如果未能解决你的问题,请参考以下文章
bzoj2021[Usaco2010 Jan]Cheese Towers*
bzoj1784: [Usaco2010 Jan]island
BZOJ1783: [Usaco2010 Jan]Taking Turns
BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心