UVA 10026 Shoemaker's Problem】的更多相关文章

Shoemaker's Problem Shoemaker has N jobs (orders from customers) which he must make. Shoemaker can work on only one job in each day. For each ith job, it is known the integer Ti (1<=Ti<=1000), the time in days it takes the shoemaker to finish the jo…
题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排序,如果比例一样就按序号排序(要求字典序). 解释我就不献丑了,附上Staginner大神的证明: 对于为什么贪心策略是这个样子的,我们不妨拿相邻的两个事件a.b来说明一下.由于a.b之后的事件是固定的,所以我们无论排成ab还是排成ba后面部分的损失都是固定的,那么损失的差别主要来源于究竟是排成ab…
题目连接:10026 Shoemaker's Problem 题目大意:有一个鞋匠接了n双要修的鞋子, 修每双鞋需要d天,每推迟一天修将亏损val元,问按什么样的顺序修鞋可以保证损失最少,如果有多种情况输出字典序最小的. 解题思路:最开始把损失钱数最大的放在前面,后来发现每层子问题是相互有影响的,所以不能从整体的损失来看,所以后来改成对两个鞋的装态比较,只要考虑哪双鞋放前和哪双鞋放后就可以了. #include <stdio.h> #include <string.h> #incl…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=967 对价钱与天数比例排序,贪心即可. #include <cstdio> #include <cstring> #include <algorithm> #define maxn 2000 using namespace std; int n; struc…
/* * UVA_10026.cpp * * Created on: 2013年10月10日 * Author: Administrator */ #include <iostream> #include <cstdio> #include <algorithm> using namespace std; const int maxn = 1010; struct job{ double a; int num; }p[maxn]; bool cmp(job x, job…
题意:鞋匠现在有n个工作要做,每个工作要x天,没延迟一天需要付款y,鞋匠每天只能做一个工作,问使得鞋匠最少赔款的工作顺序. 思路:工作和工作之间排序,如果a.value*b.day>b.value*a.day  a工作应该排在前面 #include <iostream> #include<cstdio> #include<algorithm> using namespace std; #define N 1010 struct node{ int day; int…
Greedy. 证明: Let's say we have job 1, 2, ..., n, and they have time and fine as t1, f1, t2, f2, ..., tn, fn and they are in the order of t1/f1 <= t2/f2 <= t3/f3 <= ... <= tn/fn So this is the objective schedule. Now we change 1 with m (1 < m…
题意,给出n个点的坐标,找出两点间最近的距离,如果小于10000就输出INFINITY. 纯暴力是会超时的,所以得另辟蹊径,用分治算法. 递归思路将点按坐标排序后,分成两块处理,最近的距离不是在两块中的一块中,就会存在于跨越中线的点对中. 查找跨越中线的点比较麻烦,之前已经求出两块中的最小距离,只要在x范围在[m-d,m+d]的点中找对,更新最小距离,最后返回最小距离即可. 代码: /* * Author: illuz <iilluzen[at]gmail.com> * Blog: http:…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=970 通过对每一个字符串,每一个位置进行枚举三个操作,然后二分查找操作后的字符串是否存在,dp记录. #include <cstdio> #include <cstring> #include <algorithm> #define N 25000 usin…
Description Problem D The Book-shelver's Problem Input: standard input Output: standard output Time Limit: 5 seconds Memory Limit: 32 MB You are given a collection of books, which must be shelved in a library bookcase ordered (from top to bottom in t…