UVA
111111用户昵称不存在00000
这个作者很懒,什么都没留下…
展开
-
UVA10006->素数筛&&快速幂取模
UVA10006->素数筛&&快速幂取模题意: 判断输入的数是否是Carmichael number 如果一个数n,比它小的所有数a^n%n=a,并且这个数不是质数,则称这个数是Carmichael number题解: 先用素数筛打表,每次先判断输入的数是不是质数,如果不是,再接着判断这个数是否符合费马定理,如果符合则该数为Carmichael number代码:#includ原创 2016-08-10 00:12:57 · 338 阅读 · 0 评论 -
次小生成树->UVA10600
次小生成树->UVA10600次小生成树可由最小生成树换一条边得到算法: 1)先用prim求出最小生成树T,在prim的同时,用一个矩阵maxij[u][v]记录在树中连接u-v的路径中权值最大的边. 2)枚举所有不在T中的边u-v,加入边u-v,删除权值为maxij[u][v]的边,不断枚举找到次小生成树.模板:Prime1()用于求最小生成树,Prime2()用于求次小生成树。#原创 2016-08-08 22:39:39 · 355 阅读 · 0 评论 -
UVA10440->贪心||DP
UVA10440->贪心||DP题意: 一些摆渡船运送汽车,给出往返需要的时间和每辆汽车到渡口的时间,每次最多能装几辆车,求所有汽车都到达对岸的最少次数和最短时间。题解: 毋庸置疑,所有汽车都到达对岸的最少次数就是汽车总数除以船每次能装的汽车的最多数量,然后向上取整。 时间的计算,每辆车可以是以自己的到达时间为起始时间来计算摆渡船这趟往返后到达渡口的时间;若是运输前一趟汽车后摆渡原创 2016-08-19 10:09:32 · 509 阅读 · 0 评论 -
UVA10090->扩展欧几里得
UVA10090 扩展欧几里得题意: 现在有两种盒子要装n个珠子,给出每种盒子的容量和价值,求每个盒子恰好能装满的需要花费。题解: 要求最少花费,就要考虑每种盒子装单个珠子的花费,并且求最优解时让花费较高的那种盒子尽可能少,即先求出这种盒子的最小正整数解。 题目可以等价成一个线性方程求解的问题: n1*num1 + n2*num2 = n 解法使用扩展欧几里得定理。原创 2016-07-28 11:37:05 · 788 阅读 · 0 评论 -
UVA10154->区间DP
题意:给出一些乌龟的重量和力量,求这些乌龟能叠出的龟塔的最大高度题解:区间DP,dp[i][j]代表前i只乌龟叠j层的最小重量,从层数开始扩展转移,先求从1-n每个区间叠一层的质量,再求叠两层,以此类推 状态转移方程:if(turtle[i].strength >= dp[i-1][j-1])dp[i][j] = min(dp[i-1][j] , dp[i-1][j-1]+原创 2016-07-26 11:04:34 · 388 阅读 · 0 评论 -
UVA10020->贪心
题意:给一些区间,求能把[0,M]所有点覆盖需要的最少区间个数,并输出这些区间的左右端点题解:贪心,关键在于贪心策略能不能想对。 贪心策略:把所有可能有用的区间按照左端点递增的顺序排序,然后依次去找能够缩小区间右边界范围的区间,直到区间的左端点也被覆盖,这里枚举的复杂度为O(N^2),这样的贪心策略就能保证每次选取的区间都是最优的解#include #include原创 2016-07-26 01:27:01 · 302 阅读 · 0 评论 -
UVA10128->线性DP
UVA10128->线性DP题意: 有n个身高不同的人排队,从队头能看见p个人,从队尾能看见q个人,求这些人有多少种不同的排列题解: 这道题可以用DP做,也可以用组合数学做,但是组合数学的做法比较不容易 这里介绍DP的思路: dp[i][j][k]代表队伍里现在一共有i个人,从队头看能看见j个人,从队尾看能看见k个人; 所有人从高到低开始入队,则进来的人可以选择站原创 2016-08-10 00:24:17 · 343 阅读 · 0 评论