- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 大学总结
0. 序章毕业时,就准备写一篇关于大学期间的总结。很多人是这样做了。由于当时的思绪有点混乱,所以这个总结就拖延至今。前几日,回了趟学校。故国重游,颇生感触,往事总总,历历在目。于是就决定补上这两年前所拖欠的事情。谨以此作为对大学生活的总结。1. 换学校与转专业2008年高考之后,我只报了兰州大学的物理专业,结果被提档后退档。就在准备复读之际,平行志愿给了我另一个选择。当时,
2014-11-12 09:33:29 3484 17
原创 UVa 10490 - Mr. Azad and his Son!!!!!
题目:给你一个数k判断2^(k-1)*(2^k-1)是不是完全数(真因数之和和自身相等),不是判断k是不是素数。分析:数论。欧拉证明了所有偶完全数都满足式子2^(k-1)*(2^k-1);其中2^k-1为素数时,上式为完全数。 满足2^k-1形式的素数叫梅森素数,这里打表计算50000内的素数判断2^k-1是不是素数即可。 (入股存在,超过50
2014-11-28 00:14:54 1249
原创 UVa 11389 - The Bus Driver Problem
题目:有n个上午的任务和下午的任务,分配给司机,如果工作总时间超过d,超过的部分要给加班费; 现在让你安排任务,问最小的加班分花费。分析:贪心。将两个任务分别按递增和递减序排序,每个一组即可。 设序列中的两组配对的元素为m1,a1,m2,a2 且 m1≤m2,a1≤a2; 则配对方式,优于,(浪费的可能更少)。说
2014-11-27 18:11:26 1754
原创 UVa 469 - Wetlands of Florida
题目:给你一个矩阵和某些点,找到给的点所处连续的W区域的面积(八个方向)。分析:搜索。floodfill算法,利用搜索直接求解就可以了。说明:注意读入数据的格式。#include #include #include using namespace std;char maps[111][111];int used[111][111];int dxy[8][2] = {
2014-11-26 00:34:12 1786
原创 UVa 628 - Passwords
题目:给你一个单词的字典,一个由0与#组成的字符串,0代表数字0-9,#代表字典中的单词; 输出所有的0#串的表示方式,统一句子中的#代表一个单词。分析:搜索。打表计算出所有的数字的排列情况,然后枚举输出即可。说明:P(10,7)当成P(7,7)数字开小了,RE了好几次。#include #include #include #include #incl
2014-11-25 11:59:04 1360
原创 UVa 423 - MPI Maelstrom
题目:n个机器之间传递信息,求最长的传递时间。分析:最短路。数据较小,任何一种最短路算法都可以解决。说明:单源最短路(⊙_⊙)。#include #include #include #include #include #include using namespace std;#define Inf 0x7fffffffint g[101][101];int m
2014-11-23 23:12:59 1108
原创 UVa 11729 - Commando War
题目:一个长官给n个人安排任务,每个人描述问题和解决问题的时间分别为Bi、Ji,求所有人完成任务的最早时间。分析:贪心。案结束时间递减排序即可。说明:最近打钢铁雄心影响进度了(⊙_⊙)。#include #include #include #include #include #include using namespace std;typedef struct nod
2014-11-23 22:35:08 1041
原创 UVa 10642 - Can You Solve It?
题目:二维平面上的整数点,用路径链接起来(0,0)->(1,0)->(0,1)->(2,0)->.. 给你两点坐标,求两点间步长(在路径上的距离)。分析:简单题。 我们发现点是按照x+y的递增序,且y的递增序(x+y相同时)排列的; 所以每个点对应的路径上的位置为:(x+y)*(x+y+1)/ 2 + y。说明:
2014-11-21 09:11:34 3948
原创 UVa 10763 - Foreign Exchange
题目:给你一个图的边集,问是不是多有的边都有回边。分析:图论,排序。直接排序查找判定即可。 按照边的最小端点,和最大端点排序,则成对的边(或者相同的边)一定相邻。说明:(⊙_⊙)。#include #include #include #include #include #include using namespace std;typedef
2014-11-20 12:34:36 1078
原创 UVa 10700 - Camel trading
题目:给你一个只有加法和乘法的计算式,可以改变计算的优先级,求式子的最大值和最小值。分析:dp,区间动态规划。矩阵想成类似物。 状态:f(s,e)为区间[s, e]上计算式最大值,t(s,e)为区间[s, e]上计算式最小值; 方程:f(s,e)= max(f(s,k)+ f(k+1,e)) { s ≤ k ≤ e };
2014-11-19 14:19:36 1133
原创 UVa 11849 - CD
题目:给你两个有序序列(每个序列中元素不同),求两序列中都出现的元素个数。分析:简单题。合并排序合并过程。 设置两个指针,指向两序列当前元素,那个元素小指针向后移动,同样大则计数加一,同时后移。说明:简单题。(⊙_⊙)#include #include #include #include #include #include using names
2014-11-19 09:47:58 1159
原创 UVa 10616 - Divisible Group Sums
题目:给你n个数字,从中取出m个,使得他们的和能整除d,问有多少种取法。分析:dp,二维01背包。整数拆分用背包。 首先,将所有的点对d取余数,则所有数字均在整数区间[0,d)上; 然后,确定背包容量,最大为20*10 = 200,计算二维01背包; 最后,求出所有能整除d的整数取法的和即可。说明:注意使用long l
2014-11-18 20:10:01 1356
原创 UVa 10176 - Ocean Deep ! - Make it shallow !!
题目:给你一个二进制串,判断能否被131071 整除。分析:数论。直接模拟除法运算,求出余数即可。说明:注意可能有非法字符(例如空格)。#include #include #include #include #include #include using namespace std;char buf[10010],temp[110]; int main(){
2014-11-18 11:07:47 1597
原创 UVa 884 - Factorial Factors
题目:输出n!中素数因数的个数。分析:数论。这里使用欧拉筛法计算素数,在计算过程中求解即可。 传统筛法是利用每个素数,筛掉自己的整数倍; 欧拉筛法是利用当前计算出的所有素数,乘以当前数字筛数; 所以每个前驱的素椅子个数一定比当前数的素因子个数少一个。说明:又一次用了“线性筛法”。#include #incl
2014-11-17 13:56:29 1433
原创 UVa 10976 - Fractions Again?!
题目:给你一个数k,求所有使得1/k = 1/x + 1/y成立的x≥y的整数对。分析:数论,枚举。枚举所有在区间(k+1,2k)上的y即可,当1/k - 1/y的结果分子为1即为一组解。说明:自从去郑州招聘回来,状态一直不好╮(╯▽╰)╭。#include #include #include #include #include #include using namesp
2014-11-16 14:31:21 2741 2
原创 UVa 10363 - Tic Tac Toe
题目:给你一个井字棋的状态,判断是否合法。分析:枚举。直接枚举多有情况判断即可。 合法状态有三种情况:(X先下子) 1.X赢,则O不能赢,且X比O多一子; 2.O赢,则X不能赢,且O和X子一样多; 3.没人赢,此时O的子和可能和X一样多,也可能少一个。说明:简单题(⊙_⊙)。#inc
2014-11-16 13:53:40 1239
原创 UVa 11988 - Broken Keyboard (a.k.a. Beiju Text)
题目:在一个没有显示器的电脑上输入一个字符串,键盘坏掉了,会随机的出现home,和end按键, 字符串中'['代表home键(句首),']'代表end键(句尾),问最后输出的字符串的格式。分析:模拟,递归。逆向运算即可。 一个格式符('['或者‘]’)只能影响到他后面的格式符间的字符串,与它前面的字符串之间的先后关系;
2014-11-16 12:51:26 2385
原创 UVa 263 - Number Chains
题目:给你一个数字n0,将它的每个位的数字按递增排序生成数a,按递减排序生成数b, 新的数字为n1 = a-b,下次按照同样方法计算n1,知道出现循环,问计算了多少次。分析:数论、模拟。直接模拟计算即可,利用hash表判重。说明:注意初始化。#include #include #include #include #include #include
2014-11-14 12:12:58 1679
原创 UVa 10714 - Ants
题目:一根棍子上,有n只蚂蚁,他们沿直线行走,如果碰到其他蚂蚁就掉头, 现在你可以初始化每只蚂蚁的方向,求最后的蚂蚁走下来的最快和最慢时间。分析:贪心。两只蚂蚁碰撞,可以看成他们沿原来的方向运动(掉头的两只蚂蚁互换身份)。 由于上面的结论,我们可以知道,每只蚂蚁最少的时间就是走向最近的端点; 每只蚂蚁最长的时间就是走
2014-11-13 15:44:30 1627
原创 UVa 147 - Dollars
题目:有一些面值的钱币,问组成面值n,有多少种方法。分析:dp,完全背包。整数拆分用背包。说明:使用long long防止溢出。#include #include #include #include #include #include using namespace std;long long F[30003];int C[11] = {10000,5000,200
2014-11-13 14:18:00 820
原创 UVa 11401 - Triangle Countin
题目:给你n根长度分别为1,2,..,n的棍子,问能组成多少个不同的三角形。分析:组合数学,计数原理。本题可以正向求解也可以反向求补集,这里采用正向求解。 1.首先写出前几组数据,找规律:{ 里面的括号是子情况 } (4,3,(2)) (5,4,(3,2)) (6,5,(4,3,2))(6,
2014-11-12 15:47:07 1448 3
原创 UVa 10278 - Fire Station
题目:一个城市有i个小镇,其中有一些有消防站,现在想增加1个消防站,使得所有小镇到最近的消防站的距离中的最大值最小。分析:图论,最短路。利用spfa算法可以高效解决本问题。 首先,利用已有的消防站,计算多源最短路径,储存在集合dist中; 然后,枚举所有顶点,计算单元最短路,存储在集合newd中,则得到新的多元最短路集合S;
2014-11-12 12:16:01 1482
原创 龙——中华民族象征的
一、龙的形象的出现 “龙”这个字在甲骨文中就有,字的形状是一个大头,有一个弯曲的身子。传说在帝舜的时候,董父因驯养龙很好,被赐了一个氏族名叫“豢龙氏”。夏代也有驯养龙的人叫刘累,被赐了一个氏族名叫“御龙氏”。从这些传说看,至少在尧舜禹时期,人们跟龙就有关系。 从考古发现上看,目前发现的3600年以前的龙遗存大约已有10多个。比如,2004年在河南偃师二里头发现了
2014-11-12 09:37:11 1457
原创 UVa 11517 - Exact Change
题目:给你一些钱币和一个价格,用钱币组成不小于价格的最低值,并使得此时使用的钱币总数最少。分析:dp,01背包。初始化所有的的钱数组成都需要Max张钱币,F[0] = 0,更新即可。 因为,可以取超过price的值,所以将背包的容量扩大一些,找到最接近的即可。说明:找零钱用背包。#include #include using namespace std;
2014-11-11 22:46:58 2000
原创 UVa 11504 - Dominos
题目:有一些多米诺骨牌,现在告诉你他们的相邻顺序,问最少推几次可以把他们全部推倒。分析:图论,强连通分量。强连通分量上的某点被推到,整个分量都会倒。 求强连通分量,然后缩点,剩下的“点”中每个入度为0的点都要用手推倒;(必要性) 再者,在缩点后的图中,每次找到一个入度为0的点推倒后,不会产生新的入度为0的点;(充分性)
2014-11-11 18:58:53 1874
原创 UVa 10407 - Simple division
题目:给你几个数,求使他们同于的最大除数。分析:数论。取其中两不相同数的差,差值一定是除数的倍数,利用差值枚举除数即可。说明:小心都是素数的情况,被坑了╮(╯▽╰)╭。#include #include #include #include #include using namespace std;long long save[1001];int main(){
2014-11-11 17:06:25 2372
原创 UVa 10139 - Factovisors
题目:判断n!能否整除m。分析:数论。先将m拆成素数的积的形式,再判断n!中对应每个素数的个数,是否大于m的即可。 首先,打表计算50000内素数,用这些素数除不尽的数一定也是素数,不过最多只有一个; 然后,分解m成素数的积的形式,统计每个素数因子的个数; 最后,判断n!中每个素数因子的个数是否大于m中对应的素数个数
2014-11-04 18:00:33 1395
原创 UVa 639 - Don't Get Rooked
题目:在n*n的方格里,放入几个喷火器,他们会攻击同行、同列的点,问做多能放多少个。分析:图论,搜索,二分图匹配。本题可以利用搜索求解,这里我使用的是二分图匹配。 建图,把原图每行每列的不同的连续区间分别看成一个新图中的点xi与yj; 则边表示原图中对应位置的点,原图中可以互相攻击的点就对应到新图中相同的xi与yj;
2014-11-01 17:44:50 868
SOFA: A Multi-Model Framework for Interactive Physical Simulation
2018-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人