UVA 11389(贪心问题)
UVA 11389
Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu
Description
II U C ONLINE C ON TEST 2 008 |
|
The Bus Driver Problem |
|
Input: standard input Output: standard output |
|
In a city there are n bus drivers. Also there are n morning bus routes & n afternoon bus routes with various lengths. Each driver is assigned one morning route & one evening route. For any driver, if his total route length for a day exceeds d, he has to be paid overtime for every hour after the first d hours at a flat r taka / hour. Your task is to assign one morning route & one evening route to each bus driver so that the total overtime amount that the authority has to pay is minimized. |
|
Input |
|
The first line of each test case has three integers n, d and r, as described above. In the second line, there are n space separated integers which are the lengths of the morning routes given in meters. Similarly the third line has n space separated integers denoting the evening route lengths. The lengths are positive integers less than or equal to 10000. The end of input is denoted by a case with three 0 s. |
|
Output |
|
For each test case, print the minimum possible overtime amount that the authority must pay. |
|
Constraints |
|
- 1 ≤ n ≤ 100 - 1 ≤ d ≤ 10000 - 1 ≤ r ≤ 5 |
|
Sample Input |
Output for Sample Input |
2 20 5 10 15 10 15 2 20 5 10 10 10 10 0 0 0 |
50 0 |
|
|
|
题解:本题是解决实际问题,有n个上午的任务和下午的任务,分配给司机,如果工作总时间超过d,超过的部分要给加班费;
现在让你安排任务,问最小的加班分花费。
分析:贪心问题。将两个任务分别按递增和递减序排序,每个对应边号的一组即可。
设序列中的两组配对的元素为m1,a1,m2,a2 且 m1≤m2,a1≤a2;
则配对方式<m1,a2>,<m2,a1>优于<m1,a1>,<m2,a2>
代码如下:
#include<iostream>
#include<algorithm>
using namespace std; int a[],b[]; int main()
{ int i,x,y,z;
while(cin>>x>>y>>z&&x&&y&&z)
{
int s=;
for(i=; i<=x; i++)
{
cin>>a[i];
}
for(int i=; i<=x; i++)
{
cin>>b[i];
}
sort(a,a+x);
sort(b,b+x);
for(i=; i<=x; i++)
{
if(a[i]+b[x+-i]>y)
{
s=(a[i]+b[x-i+]-y)*z;
s+=s;
}
}
cout<<s<<endl;
}
return ;
}
咳咳,其实上面是错的。。虽然可以输出正确结果,但是提交不会AC。
以下是正确的代码,请注意改动的地方!!
#include<iostream>
#include<algorithm>
using namespace std;
int a[],b[];
int main()
{ int i,j,k,x,y,z;
while(cin>>x>>y>>z&&x&&y&&z)
{
int s=;
for(i=; i<=x; i++)
{
cin>>a[i];
}
for(int k=; k<=x; k++)
{
cin>>b[k];
}
sort(a,a+x);
sort(b,b+x);
for(int j=; j<=x; j++)
{
if(a[j]+b[x+-j]>y)
{
s=(a[j]+b[x-j+]-y)*z;
s+=s;
}
}
cout<<s<<endl;
}
return ;
}
可以仔细想一想为什么会出现这样的情况
UVA 11389(贪心问题)的更多相关文章
- UVa 11389 (贪心) The Bus Driver Problem
题意: 有司机,下午路线,晚上路线各n个.给每个司机恰好分配一个下午路线和晚上路线. 给出行驶每条路线的时间,如果司机开车时间超过d,则要付加班费d×r. 问如何分配路线才能使加班费最少. 分析: 感 ...
- UVA 11389 The Bus Driver Problem 贪心水题
题目链接:UVA - 11389 题意描述:有n个司机,n个早班路线和n个晚班路线,给每个司机安排一个早班路线和一个晚班路线,使得每个早班路线和晚班路线只属于一个司机.如果一个司机早班和晚班总的驾驶时 ...
- 01_传说中的车(Fabled Rooks UVa 11134 贪心问题)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P81: 问题描述:你的任务是在n*n(1<=n<=5000)的棋盘上放n辆车,使得任意两辆车不相互攻击,且第i辆车在一个给定 ...
- uva 10154 贪心+dp
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVa 1467 (贪心+暴力) Installations
题意: 一共有n项服务,每项服务有安装的时间s和截止时间d.对于每项任务,如果有一项超出截止时间,惩罚值为所超出时间的长度.问如何安装才能使惩罚值最大的两个任务的惩罚值之和最小. 分析: 如果是求总惩 ...
- UVa 11389 - The Bus Driver Problem 难度:0
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- Party Games UVA - 1610 贪心
题目:题目链接 思路:排序后处理到第一个不同的字符,贪心一下就可以了 AC代码: #include <iostream> #include <cstdio> #include ...
- UVa 1149 (贪心) Bin Packing
首先对物品按重量从小到大排序排序. 因为每个背包最多装两个物品,所以直觉上是最轻的和最重的放一起最节省空间. 考虑最轻的物品i和最重的物品j,如果ij可以放在一个包里那就放在一起. 否则的话,j只能自 ...
- 【策略】UVa 11389 - The Bus Driver Problem
题意: 有司机,下午路线,晚上路线各n个.给每个司机恰好分配一个下午路线和晚上路线.给出行驶每条路线的时间,如果司机开车时间超过d,则要付加班费d×r.问如何分配路线才能使加班费最少. 虽然代码看起来 ...
随机推荐
- Spring 报错:Error creating bean with name
org.springframework.beans.factory.BeanCreationException: 原因是在autowire时,找不到相应的类,上述问题是因为XXXXX的实现类中没有加相 ...
- Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程
上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.on ...
- python 之路,Day27 - 主机管理+堡垒机系统开发
python 之路,Day27 - 主机管理+堡垒机系统开发 本节内容 需求讨论 构架设计 表结构设计 程序开发 1.需求讨论 实现对用户的权限管理,能访问哪些机器,在被访问的机器上有哪些权限 实 ...
- 初识html、css时随笔记录
css部分样式 圆框效果:border-radius:5px; 固定样式:position:fixed;悬浮窗在IE6中position:absolute其余浏览器可以用fixed: 使table中的 ...
- (转)php5中类的学习
类的结构: 类的内部能可能有三种东西,就是常量(constant),属性(property)和方法(method),功能可以理解成类外部的常量,变量和函数. 复制代码代码如下: <?ph ...
- Swift - 14 - 字符串的基础操作
//: Playground - noun: a place where people can play import UIKit // 拼接 var str = "Hello, playg ...
- [置顶] Spring的DI依赖实现分析
DI(依赖注入)是Spring最底层的核心容器要实现的功能之一,利用DI可以实现程序功能的控制反转(控制反转即程序之间之间的依赖关系不再由程序员来负责,而是由Spring容器来负责) 一个简单的例子( ...
- Semaphore (通常用于限制可以访问某些资源(物理或逻辑的)的线程数目)
Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目.例如,下面的类使用信号量控制对内容池的访问: 方法详解: 构造方法摘要 Semaphore(int permits) ...
- 关闭C#主窗体弹出是否关闭对话框
在开发系统时,常常有这样一个问题,就是当关闭主窗体,也即退出系统时,如果想提示是否关闭,以免误操作,可以在主窗体的Main_FormClosing事件中添加一个对话框,代码如下: private vo ...
- C++11中int,float,double与string的转化
在C++11中可以使用std::to_string()函数将数值转换为string格式,十分方便. 以下部分来选自cplusplus.com. std::to_string string to_str ...