洛谷P3045 [USACO12FEB]牛券Cow Coupons

P3045 [USACO12FEB]牛券Cow Coupons

    • 71通过
    • 248提交
  • 题目提供者洛谷OnlineJudge
  • 标签USACO2012云端
  • 难度提高+/省选-
  • 时空限制1s / 128MB

 提交  讨论  题解  

最新讨论更多讨论

  • 86分求救

题目描述

Farmer John needs new cows! There are N cows for sale (1 <= N <= 50,000), and FJ has to spend no more than his budget of M units of money (1 <= M <= 10^14). Cow i costs P_i money (1 <= P_i <= 10^9), but FJ has K coupons (1 <= K <= N), and when he uses a coupon on cow i, the cow costs C_i instead (1 <= C_i <= P_i). FJ can only use one coupon per cow, of course.

What is the maximum number of cows FJ can afford?

FJ准备买一些新奶牛,市场上有N头奶牛(1<=N<=50000),第i头奶牛价格为Pi(1<=Pi<=10^9)。FJ有K张优惠券,使用优惠券购买第i头奶牛时价格会降为Ci(1<=Ci<=Pi),每头奶牛只能使用一次优惠券。FJ想知道花不超过M(1<=M<=10^14)的钱最多可以买多少奶牛?

输入输出格式

输入格式:

 

  • Line 1: Three space-separated integers: N, K, and M.

  • Lines 2..N+1: Line i+1 contains two integers: P_i and C_i.

 

输出格式:

 

  • Line 1: A single integer, the maximum number of cows FJ can afford.

 

输入输出样例

输入样例#1:
4 1 7 
3 2 
2 2 
8 1 
4 3 
输出样例#1:
3 

说明

FJ has 4 cows, 1 coupon, and a budget of 7.

FJ uses the coupon on cow 3 and buys cows 1, 2, and 3, for a total cost of 3 + 2 + 1 = 6.

分析:其实很容易发现这就是一道背包题,对于每头牛我们都有用与不用优惠券两种选择,然而会发现,这个m不是一般的大,所以不能用dp.dp和贪心是差不多的,考虑到dp不行,试试贪心。因为我们的目标是要使买的牛最多,也就是花的钱最少,于是我当时想了一种贪心:我们可以取前k个用优惠券的价格(从小到大排序),然后和不排序的放在一起排序一下,然后遍历求解.这样的话有一个问题:我们已经假定前k个用优惠券的牛用优惠券,然而有时候不用优惠券比用优惠券要好,那就是用不用价格都相等的情况,所以我们不再取前k个,我们把每头牛拆成2头牛,一头用优惠券,一头不用,然后排序求解即可.

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <functional>using namespace std;int n, k,p[50010],c[50010],vis[50010],ans;
long long m;struct node
{int id, use, money;
}e[100010];bool cmp(node a, node b)
{if (a.money == b.money)return a.use < b.use;return a.money < b.money;
}int main()
{scanf("%d%d%lld", &n, &k, &m);for (int i = 1; i <= n; i++){scanf("%d%d", &p[i], &c[i]);e[i * 2 - 1].id = i;e[i * 2 - 1].use = 1;e[i * 2 - 1].money = c[i];e[i * 2].id = i;e[i * 2].use = 0;e[i * 2].money = p[i];}sort(e + 1, e + n * 2 + 1, cmp);for (int i = 1; i <= n * 2; i++){if (vis[e[i].id])continue;if (e[i].use && k <= 0)continue;if (m <= 0)break;if (m >= e[i].money){vis[e[i].id] = 1;ans++;m -= e[i].money;if (e[i].use)k--;}}printf("%d", ans);return 0;
}

 

转载于:https://www.cnblogs.com/zbtrs/p/7071526.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据挖掘电影评分分析_Pyhon数据分析项目——男女电影评分差异比较

《用Python玩转数据》数据分析项目一、程序功能基于MovieLens100k数据集中男性女性对电影的评分来判断男性还是女性电影评分的差异性更大。二、数据来源数据集下载&#xff1a;http://files.grouplens.org/datasets/movielens/ml-100k.zip数据含义&#xff1a;u.data表示100k条…

发掘Apache Camel的力量

最近几年&#xff0c;ESB软件越来越受欢迎。 如果大多数人通常知道什么是ESB&#xff0c;那么他们很少会清楚地了解这种体系结构的不同组件的确切作用。 例如&#xff0c;Apache ServiceMix由三个主要组件组成&#xff1a;Apache Karaf&#xff08;OSGI容器&#xff09;&#…

unix/linux系统中文件分为哪些类型?,到底该如何理解 Unix/Linux 的文件系统?看这篇就知道了...

原标题&#xff1a;到底该如何理解 Unix/Linux 的文件系统&#xff1f;看这篇就知道了作者&#xff1a;舠

【Luogu】P1131时态同步(树形DP)

题目链接 甚矣吾衰也&#xff01;这么简单的DP我都不会了 太恐怖了 树形DP&#xff0c;从子树里选出时间最长的来&#xff0c;剩下的调到这个最长时间即可。 #include<cstdio> #include<cctype> #include<algorithm> #include<cstring>using std::max;…

HTML小记

1、页面内跳转 当<a>元素用于页面内的锚点跳转时&#xff0c;应该先为该页面设置一些锚点&#xff0c;而定义锚点有两种办法&#xff1a; 通过<a>元素的name属性来定义&#xff0c;如&#xff1a;<a name"anchor-name">name属性的值就是锚点的名…

python3连接数据库失败_python3使用pymysql连接mysql数据库报Keyerror

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼不好意思Traceback (most recent call last):File "d:\Python\practice2\mydbconn.py", line 5, in conn pymysql.connect(usertestuser, passwdtestpasswd,host192.168.1.3, dbtest,charsetutf8)File "C:\Users\t…

MantisBT 问题分配显示 姓名

MantisBT 在提交问题的时候&#xff0c;系统默认“分配”给备选账号&#xff0c;而不是姓名。这样在使用的时候很不便。能够通过改动配置文件来改变&#xff0c;找到MantisBT根文件夹下文件config_inc.php&#xff0c;用文本编辑器打开。代码例如以下&#xff1a; <?php $g…

使用多种MIME类型测试REST

1.概述 本文将重点介绍测试具有多种媒体类型/表示形式的RESTful服务。 这是关于使用Spring和基于Java的配置的Spring Security设置安全的RESTful Web Service的系列文章的第十篇。 REST with Spring系列&#xff1a; 第1部分 – 使用Spring 3.1和基于Java的配置引导Web应用程序…

firewallD卸载Linux,在Ubuntu 18.04/16.04系统上安装和使用Firewalld的方法

本文介绍Firewalld在Ubuntu 18.04或Ubuntu 16.04发行版上的安装方法及基本用法。简介Firewalld是Linux防火墙管理工具&#xff0c;支持IPv4、IPv6、以太网桥和IPSet防火墙设置&#xff0c;它充当Linux内核的netfilter框架的前端&#xff0c;同时Firewalld是RHEL 7系列上的默认防…

JavaWeb学习中的小问题

1. HttpServletRequest和ServletRequest之间的区别&#xff1f; 再看别人项目的时候突然看到一句&#xff1a; ServletRequest request&#xff1b;HttpServletRequest hsRequest (HttpServletRequest) request;// 获取HttpServletRequest对象瞬间就有一点懵逼 &#xff0c;赶…

python 结构数组_Python数组

数组是一个容器&#xff0c;它可以容纳一定数量的项目&#xff0c;这些项目是相同的类型。 大部分数据结构都使用数组来实现它们的算法。 以下是理解数组(Array)概念的重要术语。元素 - 存储在数组中的每个项目称为元素。索引 - 数组中元素的每个位置都有一个数字索引&#xff…

广播 布局文件代码

<?xml version"1.0" encoding"utf-8"?><RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:app"http://schemas.android.com/apk/res-auto" xmlns:tools"http://schemas.android.com/…

PCGen的垃圾收集分析

介绍 我决定结合我的两个软件爱好&#xff0c;并在PCGen上进行一些分析&#xff0c; PCGen是一种流行的基于Java的开放源代码角色生成器&#xff0c;用于角色扮演游戏。 我用Censum &#xff0c;我们&#xff08; jClarity的&#xff09;新的垃圾收集日志分析工具来进行分析。 …

THINKPHP增删改查--(改)

1.CURD 控制器?>namespace Home\Controller;use Think\Controller;class CurdController extends Controller{ public function index(){ $db_student D(Student); $data_student $db_student->relation(true)->select();// dump($data_student); $this->assign…

Linux监控CPU关闭服务器,监控Linux服务器CPU和内存

利用脚本获取Linux服务器的CPU和内存。需要安装bc计算器yum install -y bc创建执行脚本计算CPU利用率&#xff0c;配置了5秒采样。执行脚本&#xff0c;5秒后输出采集日期|CPU负载|可用内存|总内存#!/bin/sh##echo user nice system idle iowait irq softirqCPULOG_1$(cat /pro…

springboot不会运行gc_SpringBoot 和JVM 调优(深度好文,建议收藏)

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]项目调优作为一名工程师&#xff0c;项目调优这事&#xff0c;是必须得熟练掌握的事情。在SpringBoot项目中&#xff0c;调优主要通过配置文件和配置JVM的参数的方式进行。一、修改配置文件关于修改配置文件 application.p…

移动端原生js,css3实现轮播图

一、功能需求 1、自动播放2、滑动切换3、点击切换 二、思路分析 html代码&#xff1a; <div class"container">   <ul class"list clearfix">   <li class"item fl item5">图5</li>   <li class"item fl …

关于换行这个动作,win 和 mac 的实现

‘\r是回车&#xff0c;前者使光标到行首&#xff0c;&#xff08;carriage return&#xff09;\n是换行&#xff0c;后者使光标下移一格&#xff0c;&#xff08;line feed&#xff09;\r 是回车&#xff0c;return\n 是换行&#xff0c;newline对于换行这个动作&#xff1a;u…

你好骆驼:自动文件传输

Apache Camel在其主页上 &#xff08;以及Camel用户指南中 &#xff09;将其描述为“基于已知企业集成模式的通用开源集成框架”。 Camel框架基于《 企业集成模式 》一书&#xff0c;并提供了该书中描述的模式的实现 。 我看一下这篇文章中使用Camel的“ Hello World”类型示例…

Linux 常用命令二 pwd cd

一、pwd命令 显示整个路径名&#xff1a; wangwang:~$ pwd /home/wang 二、cd命令 切换到其他路径&#xff08;相对路径方式&#xff09;&#xff1a; wangwang:~$ cd workpalce/ wangwang:~/workpalce$ pwd /home/wang/workpalce 切换到其他路径&#xff08;绝对路径方式&…