uva-10026-贪心
题意:有N项工作,每项工作完成需要n天,如果不开始做每天罚fee,开始做即不罚钱,求任务的执行顺序,使得罚钱最少.如果有多组答案,取下标排列最小的那组
解题思路:
考虑工作tn(dn,fn) ,
假如先做工作tj, 0<j<n,0<i<n,那么罚的钱是 dj*f0+dj*f1+.....dj*fn+dj*fi = totalj1,
在做工作ti, di*f0+di*f1+....di*fn = totalj2, totalj1 + totalj2 = (di+dj)*fo + (di+dj)*f1 +....(di+dj)fn + (dj*fi)
假如先做工作ti,0<i<n,那么罚的钱是 di*f0+di*f1+....di*fn+di*fj = totali1,
再做tj,dj*f0+dj*f1+.....dj*fn=totali2, totali1+totali2 = (di+dj)*fo + (di+dj)*f1 +....(di+dj)fn +(di*fj)
差别就是di*fj和dj*fi
#include <algorithm>
#include <iostream> namespace cc
{
using std::cin;
using std::cout;
using std::endl;
using std::move;
using std::qsort;
const int N = ;
class Node
{
public:
int fee;
int day;
int index;
Node(int fee, int day, int index) : day(day), fee(fee), index(index)
{
}
Node() = default;
}; int cmp(const void *a, const void *b)
{
Node *n1 = (Node *)(a);
Node *n2 = (Node *)(b);
int total1 = n1->fee * n2->day;
int total2 = n2->fee * n1->day;
if (total1 == total2)
{
return n1->index - n2->index;
}
if (total1 < total2)
return ;
return -;
} void solve()
{
int n;
cin >> n;
int t = ;
while (n--)
{
if(t!=)
cout<<endl;
++t;
int k;
cin >> k;
int fee, day;
int total = ;
Node nodes[N];
for (int i = ; i < k; i++)
{
cin >> day >> fee;
Node node(fee, day, i + );
nodes[total++] = node;
}
qsort(nodes, total, sizeof(Node), cmp); cout << nodes[].index;
for (int i = ; i < total; i++)
cout << " " << nodes[i].index;
cout << endl;
}
} } // namespace cc int main()
{
#ifndef ONLINE_JUDGE
freopen("/Users/caicai/in", "r", stdin);
#endif // !ONLINE_JUDGE cc::solve();
return ;
}
uva-10026-贪心的更多相关文章
- UVA 10026 Shoemaker's Problem 鞋匠的难题 贪心+排序
题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排 ...
- (贪心5.2.1)UVA 10026 Shoemaker's Problem(利用数据有序化来进行贪心选择)
/* * UVA_10026.cpp * * Created on: 2013年10月10日 * Author: Administrator */ #include <iostream> ...
- uva 10026 Shoemaker's Problem _贪心
题意:鞋匠现在有n个工作要做,每个工作要x天,没延迟一天需要付款y,鞋匠每天只能做一个工作,问使得鞋匠最少赔款的工作顺序. 思路:工作和工作之间排序,如果a.value*b.day>b.valu ...
- 01_传说中的车(Fabled Rooks UVa 11134 贪心问题)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P81: 问题描述:你的任务是在n*n(1<=n<=5000)的棋盘上放n辆车,使得任意两辆车不相互攻击,且第i辆车在一个给定 ...
- UVA 11389(贪心问题)
UVA 11389 Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Description II ...
- uva 10154 贪心+dp
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 10026 Shoemaker's Problem
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVa 11389 (贪心) The Bus Driver Problem
题意: 有司机,下午路线,晚上路线各n个.给每个司机恰好分配一个下午路线和晚上路线. 给出行驶每条路线的时间,如果司机开车时间超过d,则要付加班费d×r. 问如何分配路线才能使加班费最少. 分析: 感 ...
- UVa 1467 (贪心+暴力) Installations
题意: 一共有n项服务,每项服务有安装的时间s和截止时间d.对于每项任务,如果有一项超出截止时间,惩罚值为所超出时间的长度.问如何安装才能使惩罚值最大的两个任务的惩罚值之和最小. 分析: 如果是求总惩 ...
- uva 10026 Problem C: Edit Step Ladders
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
随机推荐
- (转)oms系统安装php的redis扩展
lnmp自带redis安装程序 https://lnmp.org/faq/addons.html ======== 还需要关闭防火墙.如果出现redis server gone away. http: ...
- SSH实现隧道功能穿墙
Putty和SSH tunnel 目前寻求FQ的方式无非就几种: 寻找web代理(这个可以进我放置的在线代理进行测试) 自行寻找http/sock5代理(这个可以去网上搜索代理ip) vpnFQ(目前 ...
- 代码编辑器之sublime text
http://www.iplaysoft.com/sublimetext.html 1.特点: 中文乱码问题:另外,很多朋友反映表示打开中文会有乱码,其实是因为ST2本身只支持UTF-8编码,而我们常 ...
- 《JavaScript设计模式与开发》笔记 7.单例模式
废话一箩筐就这个原来 var instance; return function asdf(name){ if(!this.instance){ this.instance = new asdf(na ...
- 跟着未名学Office - 高效工作Outlook
目录 第一篇邮件与联系人 1 第一节 使用与技巧 1 第二节 高效 11 第二篇 事务助手 21 第一节 日程管理 21 第二节 任务 ...
- C++11--Tuple类<tuple>
#include "stdafx.h" #include <iomanip> #include <condition_variable> #include ...
- NGUI的数据绑定
ngui 的binding搜索结果 少之甚少 .即便去作者的youtube也收获不大 . 开发工作者更关心的是 数据的绑定,而不是一个显示控件简单属性的绑定. 说白了就是告诉用户 怎么绑定model吧 ...
- 在CentOS-6.9里安装openvswitch-2.5.4
第一步:安装依赖 yum install rpm-build openssl-devel gcc wgetyum install python-devel kernel-devel kernel-de ...
- mysql 意向锁的作用
直接copy知乎上的内容 https://www.zhihu.com/question/51513268 作者:尹发条地精链接:https://www.zhihu.com/question/51513 ...
- linux 查看进程启动路径
在linux下查看进程大家都会想到用 ps -ef|grep XXX 可是看到的不是全路径,怎么看全路径呢? 每个进程启动之后在 /proc下面有一个于pid对应的路径 例如:ps -ef|grep ...