题意:鞋匠一口气接到了不少生意,但是做鞋需要时间,鞋匠只能一双一双地做,根据协议每笔生意如果拖延了要罚钱. 给出每笔生意需要的天数和每天的罚钱数,求出最小罚钱的排列顺序. 只要按罚款/天数去从大到小排序,如果比例一样就按序号排序(要求字典序). 解释我就不献丑了,附上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…
题意:鞋匠现在有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…
/* * 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…
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…
UVa 101 The Blocks Problem 一道纯模拟题 The Problem The problem is to parse a series of commands that instruct a robot arm in how to manipulate blocks that lie on a flat table. Initially there are nblocks on the table (numbered from 0 to n-1) with block bi…
 UVa 1380 A Scheduling Problem 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=41557 思路:   给出一个任务调度树,单向边u->v表示u必须在v之前完成,双向边u-v表示无所谓方向. 题目给出定理,首先dfs求得忽略无向边后的最长链点数k,那么问题就是判断是否可以通过无向边定向从而使得最长链点数不超过k.用dp的判断. 设f[i]表示以i为根的子树中所有的边定向后最长链点数不超过…
UVA - 524 Prime Ring Problem Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description A ring is composed of n (even number) circles as shown in diagram. Put natural numbers  into each circle separately, and the sum of number…
题目链接:uva 10837 - A Research Problem 题目大意:给定一个phin.要求一个最小的n.欧拉函数n等于phin 解题思路:欧拉函数性质有,p为素数的话有phip=p−1;假设p和q互质的话有phip∗q=phip∗phiq 然后依据这种性质,n=pk11(p1−1)∗pk22(p2−1)∗⋯∗pkii(pi−1),将全部的pi处理出来.暴力搜索维护最小值,尽管看上去复杂度很高,可是由于对于垒乘来说,增长很快,所以搜索范围大大被缩小了. #include <cstdi…
UVA 810 - A Dicey Problem 题目链接 题意:一个骰子,给你顶面和前面.在一个起点,每次能移动到周围4格,为-1,或顶面和该位置数字一样,那么问题来了,骰子能不能走一圈回到原地,输出路径,要求最短,假设有多个最短,依照上下左右输出 思路:读懂题就是水题,就记忆化搜一下就可以,记录状态为位置和骰子顶面.正面(由于有两面就能确定骰子了) 代码: #include <cstdio> #include <cstring> #include <vector>…
/** 题目:UVA 1640 The Counting Problem UVA1640 链接:https://vjudge.net/problem/UVA-1640 题意:求[a,b]或者[b,a]区间内0~9在里面各个数的数位上出现的总次数. 思路:数位dp: dp[leadzero][i][j][k]表示前面是否选过非0数,即i长度之后可以第一个出现0,而不是前导0,长度为i,前面出现j,k次,j出现的次数. */ #include<iostream> #include<cstri…
Uva 101 the block problem 题目大意: 输入n,得到编号为0~n-1的木块,分别摆放在顺序排列编号为0~n-1的位置.现对这些木块进行操作,操作分为四种. 1.move a onto b:把木块a.b上的木块放回各自的原位,再把a放到b上: 2.move a over b:把a上的木块放回各自的原位,再把a发到含b的堆上: 3.pile a onto b:把b上的木块放回各自的原位,再把a连同a上的木块移到b上: 4.pile a over b:把a连同a上木块移到含b的…
option=com_onlinejudge&Itemid=8&page=show_problem&category=648&problem=5158&mosmsg=Submission+received+with+ID+1708713">https://icpcarchive.ecs.baylor.edu/index.php? option=com_onlinejudge&Itemid=8&page=show_problem&…
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…
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=41 解题思路: 当看到题目时,仔细想想感觉用暴力方法挺复杂的.需要判断建筑是否重叠,找到高度的变化位置,找出对应的左值,找出对应的右值.能这么想就很接近我要讲的解题方法了. 我们是需要找到高度转折点,找到最大的右值. 高度转折点的寻找:判断高度是否和前…
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=37   The Blocks Problem  Background Many areas of Computer Science use simple, abstract domains for both analytical and empiric…
 A Puzzling Problem  The goal of this problem is to write a program which will take from 1 to 5 puzzle pieces such as those shown below and arrange them, if possible, to form a square. An example set of pieces is shown here. The pieces cannot be rota…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4109 题意: 输入正整数n和k(1≤n,k≤1e9),计算sum(k mod i)(1≤i≤n). 分析: 被除数固定,除数逐次加1,直观上余数也应该有规律.假设k/i的整数部分等于d,则k mod i = k-i*d.因为k/(i+1)和k/i差别不大,如果k/(i+1)的整数部…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4515 题意: 给出整数a.b,统计a和b(包含a和b)之间的整数中,数字0,1,2,3,4,5,6,7,8,9分别出现了多少次.1≤a,b≤1e8. 分析: 解决这类题目的第一步一般都是:令f(n,d)表示0-n中数字d出现的次数,则所求的就是f(b,d)-f(a-1,d).例如,…
题目链接:  http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/K 题目需求:鞋匠有n个任务,第i个任务要花费ti天,同时第i个任务每耽误一天要有fi的罚金.求完成所有任务的最小罚金. 题目解析: 这题看了题解,解法如下: 这个是一个贪心的题目首先按照fine/time降序排列,值相同的再按序号升序排列. 对于为什么贪心策略是这个样子的,我们不妨拿相邻的两个事件a.b来说明一下.由于a.b之后的事件是固定的,所…
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4126 $LRJ$紫书例题$9-26$ 题目大意: 给定一颗树 有些边已经标好方向 现在要给其余的边标上方向 使得最长的有向链最短 $HIT:$ 题目额外给了一个结论 假设已经确定方向的边所能得到的最长链为$k$ 最后的最长链一定$k$ 或$k + 1$ 不知道是自己太久没有写树形…
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=967 描述:要做n双鞋子,第 i 双鞋子要做Ti天,每天消耗Si的钱(当前正在做第 i 双鞋子时不耗钱).求在最少消耗钱的情况下做鞋子的顺序. 思路:贪心 明显是一个排序的模型,然后我们就思考顺序怎么确定.考虑当前两双鞋子a和b,它们的顺序对它们前后的鞋子都没有影响,它们所创造的影响仅仅…
  Prime Ring Problem  A ring is composed of n (even number) circles as shown in diagram. Put natural numbers into each circle separately, and the sum of numbers in two adjacent circles should be a prime. Note: the number of first circle should always…
题目链接:10401 - Injured Queen Problem 题目大意:给出一个字符串,要求在n * n(n为字符串的长度)的棋盘上摆放n个受伤的皇后,受伤的皇后只能攻击到同一列和它周围8个格子,如果字符串中第i个字符为'?'表示第i + 1个皇后可以摆放在任意行,如果为1 ~ F表示第i+1个皇后必须摆放在第str[i]行, 问,有多少种不同的摆法? 解题思路:一开始用递归 + 记忆化, 结果超时了, 后来发现其实可以写成递推,dp[i][j]代表第i个皇后摆放在第j行的摆法种类, d…
题目链接:Uva 552 思路分析:时间限制为3s,数据较小,使用深度搜索查找所有的解. 代码如下: #include <iostream> #include <string.h> using namespace std; ; int n; int A[MAX_N], vis[MAX_N]; int is_prime( int n ) { ) return true; ; i * i <= n; ++i ) ) return false; return true; } voi…
11490 - Just Another Problem option=com_onlinejudge&Itemid=8&page=show_problem&category=474&problem=2485&mosmsg=Submission+received+with+ID+13809788" target="_blank" style="">题目链接 题意:有S个士兵.排成一个矩阵,矩阵中能够有两个洞,要…
题意  把1到n这n个数以1为首位围成一圈  输出全部满足随意相邻两数之和均为素数的全部排列 直接枚举排列看是否符合肯定会超时的  n最大为16  利用回溯法 边生成边推断  就要快非常多了 #include<cstdio> using namespace std; const int N = 50; int p[N], vis[N], a[N], n; int isPrime(int k) { for(int i = 2; i * i <= k; ++i) if(k % i == 0)…
这个问题并计算质数了一下相间隔似的.思想上一致. 注意问题: 1 i 可能 大于或等于j -- 这里上传.小心阅读题意,我没有说这个地方不能保证.需要特殊处理 2 计算过程中可能溢出,的整数大于最大值,需要使用long long 关于效率和时间问题: 1 能够使用数组保存中间结果,这样执行快了.内存消耗大了, 2 能够不使用中间数组. 这样执行肯定比較慢了.可是内存消耗小,一样能够AC的. 全部没有个标准吧.看情况而定.假设须要速度就添加数组,假设省内存就不使用数组吧. 这样的题目一般都使用数组…
题目大意:一个鞋匠,有n只鞋要修,修某只鞋的时间ti已知,某只鞋晚修一天要交的罚款fi也已知.现在让找个修鞋顺序使得罚款最少. 题目分析:本来想水一下这道题,没想到真的AC啦.后来又查的题解,找的解释.一个比较能说服我的解释是这样的:这个鞋匠不管怎样都要赔本,他每修一只鞋能降低的最大损失是fi/ti,只需要按fi/ti从大到小的顺序来修即可. 代码如下: # include<iostream> # include<cstdio> # include<cstring> #…