题目链接: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:

 #include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <queue>
#define MAX_N 100005
#define INF 10000000 using namespace std; struct Edge
{
int dest;
int len;
Edge(int _dest,int _len)
{
dest=_dest;
len=_len;
}
Edge(){}
}; struct Node
{
int idx;
int dis;
Node(int _idx,int _dis)
{
idx=_idx;
dis=_dis;
}
Node(){}
friend bool operator > (const Node &a,const Node &b)
{
return a.dis>b.dis;
}
}; int n,m;
int s,t1,t2;
int ans=INF;
int dis[MAX_N];
vector<Edge> edge[MAX_N];
priority_queue<Node,vector<Node>,greater<Node> > q; void djikstra(int start)
{
memset(dis,-,sizeof(dis));
dis[start]=;
q.push(Node(start,));
while(!q.empty())
{
Node now=q.top();
q.pop();
if(dis[now.idx]<now.dis) continue;
for(int i=;i<edge[now.idx].size();i++)
{
Edge temp=edge[now.idx][i];
if(dis[temp.dest]==- || dis[temp.dest]>dis[now.idx]+temp.len)
{
dis[temp.dest]=dis[now.idx]+temp.len;
q.push(Node(temp.dest,dis[temp.dest]));
}
}
}
} void read()
{
cin>>m>>n>>s>>t1>>t2;
int a,b,v;
for(int i=;i<m;i++)
{
cin>>a>>b>>v;
edge[a].push_back(Edge(b,v));
edge[b].push_back(Edge(a,v));
}
} void solve()
{
djikstra(t1);
ans=min(ans,dis[s]+dis[t2]);
djikstra(t2);
ans=min(ans,dis[s]+dis[t1]);
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

BZOJ 2020 [Usaco2010 Jan]Buying Feed,II:贪心【定义价值】的更多相关文章

  1. 2020: [Usaco2010 Jan]Buying Feed, II

    2020: [Usaco2010 Jan]Buying Feed, II Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 220  Solved: 162[ ...

  2. 【BZOJ】2020: [Usaco2010 Jan]Buying Feed, II (dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2020 和背包差不多 同样滚动数组 f[j]表示当前位置j份食物的最小价值 f[j]=min(f[j- ...

  3. BZOJ2020: [Usaco2010 Jan]Buying Feed II

    [传送门:BZOJ2020] 简要题意: 约翰开车回家,遇到了双十一节,那么就顺路买点饲料吧.回家的路程一共有E 公里,这一路上会经过N 家商店,第i 家店里有Fi 吨饲料,售价为每吨Ci 元.约翰打 ...

  4. bzoj 1783: [Usaco2010 Jan]Taking Turns【贪心+dp】

    不知道该叫贪心还是dp 倒着来,记f[0][i],f[1][i]分别为先手和后手从n走到i的最大值.先手显然是取最大的,当后手取到比先手大的时候就交换 #include<iostream> ...

  5. 洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II https://www.luogu.org/problemnew/show/P2616 题目描述 Farmer ...

  6. USACO Buying Feed, II

    洛谷 P2616 [USACO10JAN]购买饲料II Buying Feed, II 洛谷传送门 JDOJ 2671: USACO 2010 Jan Silver 2.Buying Feed, II ...

  7. 【P2616】 【USACO10JAN】购买饲料II Buying Feed, II

    P2616 [USACO10JAN]购买饲料II Buying Feed, II 题目描述 Farmer John needs to travel to town to pick up K (1 &l ...

  8. bzoj 1783: [Usaco2010 Jan]Taking Turns

    1783: [Usaco2010 Jan]Taking Turns Description Farmer John has invented a new way of feeding his cows ...

  9. BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...

随机推荐

  1. 实战c++中的vector系列--vector的遍历(stl算法、vector迭代器(不要在循环中推断不等于end())、operator[])

    遍历一个vector容器有非常多种方法.使用起来也是仁者见仁. 通过索引遍历: for (i = 0; i<v.size(); i++) { cout << v[i] << ...

  2. 【甘道夫】Ubuntu14 server + Hadoop2.2.0环境下Sqoop1.99.3部署记录

    第一步.下载.解压.配置环境变量: 官网下载sqoop1.99.3 http://mirrors.cnnic.cn/apache/sqoop/1.99.3/ 将sqoop解压到目标文件夹,我的是 /h ...

  3. Android UI开源框架

    1.Side-Menu.Android 分类側滑菜单,Yalantis 出品. 项目地址:https://github.com/Yalantis/Side-Menu.Android 2.Context ...

  4. 宜信开源|微服务任务调度平台SIA-TASK入手实践

    引言 最近宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行 ...

  5. u-boot 学习系列 1 - SPL

    u-boot这个东西从自我N年前使用到现在,变化好多,今天开始重新研究下,本系列的研究都是基于BeagleBoneBlack(bbb)开发板和 u-boot v201801版本的. SPL介绍 在源代 ...

  6. Xenomai for Debian Jessie

    安装内核源码包 apt install linux-source-3.16 安装其他编译需要的工具: apt install build-essential libc-dev libc6-dev pk ...

  7. mysql 相关博客地址

    MySQL概念学习与逐步上手操作系列(一套完整)   https://www.cnblogs.com/zlslch/category/962962.html

  8. Docker入门系列8

    commit docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser ...

  9. leetCode 90.Subsets II(子集II) 解题思路和方法

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  10. python入门常用方法(转json,模拟浏览器请求头,写入文件)

    转json import jsonjson = json.loads(html) 模拟浏览器请求头 import urllib.request req = urllib.request.Request ...