- 博客(278)
- 资源 (1)
- 收藏
- 关注

转载 ACM相关书籍
1.《程序设计导引及在线实践》http://download.youkuaiyun.com/detail/leolinsheng/66928932.《算法竞赛入门经典》http://download.youkuaiyun.com/detail/leolinsheng/6690771刘汝佳的白书3.《算法艺术与信息学竞赛》http://download.youkuaiyun.com/
2014-08-25 23:23:58
530

转载 高级搜索题集
//转载地址:http://blog.youkuaiyun.com/shahdza/article/details/798604基础的搜索BFS和DFS,自己找题切吧...高级搜索的题集就在下面,自己看着办吧...努力爆搜,努力剪枝吧~~~【Level 1】HDOJ-1429 胜利大逃亡(续)HDOJ-1885 Key TaskHDOJ-1226 超级密码HDOJ-16
2014-05-28 16:02:07
716
原创 poj -1852 ants (思维题)
n只蚂蚁以每秒1cm的速度在长为Lcm的杆子上爬行,当蚂蚁爬到杆子的端点时就会掉落,由于杆子太细,两只蚂蚁相遇时,他们不能交错通过,只能各自反向爬回去,对于每只蚂蚁,我们知道它距离杆子左端的距离为x,但不知道它当前的朝向,请计算所有蚂蚁落下杆子所需的最短时间很最长时间。这道题 其实想清楚了就很简单,不用管朝向,最短时间就是当距离
2015-02-02 15:42:51
792
原创 UVA - 11111 Generalized Matrioshkas
点击打开链接 一个嵌套玩具由一个非空不包含0的序列表示,每一对数-k,k表示一个玩具的尺寸,并且负数出现在前,并且外层玩具要大于其内层玩具尺寸之和,比如-9 -7 -2 2 -3 -1 -2 2 1 3 7 9 9包含7,7包含 2和3,3 包含 1 和2 但是1 不能包含 2 所以出错。
2015-01-09 14:46:40
659
原创 UVA - 10152 ShellSort
点击打开链接题意是在栈中乌龟有一个给初始系列和目标序列,然后求由初始序列变成目标序列最少操作的次数。乌龟只能从当前位置爬到栈顶。其实只要从大到小找出初始序列中编号比目标序列大的然后输出就行。既然乌龟只有一种移动方式,那么在
2015-01-07 21:08:56
631
原创 UVA - 442 Matrix Chain Multiplication
点击打开链接题目意思是求矩阵相乘的运算次数,设A size为n*s,B size为s*m那么A*B运算量为n*m*s. 注意括号里面的优先级,并且依次累加即可,并且没有不合法的序列。思路是先对输入的n个矩阵编号按照字典序排序,因为每次两个矩阵相乘会得到一个新的矩阵,编号可以设置成在n的编号加1,并且重新压入栈中。#include #include #include
2015-01-07 19:41:41
621
原创 UVA - 133 The Dole Queue(模拟链表)
点击打开链接n的人围成一个环,然后按逆时针编号1-n,一个人从1开始逆时针数k个数,另一个人从N开始顺时针数m个数,然后 数出来的两个人出列(两个人可能一样)出列,然后继续此过程,直到全部人都出列为止。思路是用循环链表来模拟,注意 要分情况来讨论。#include #include #include #include #include #include #include
2015-01-06 21:02:05
586
原创 UVA - 579 Clock Hands
点击打开链接求时针与分针的夹角。因为时针每小时走30度,每分钟走5度,分针每分钟走6度。相减即可。#include#includeint main(){ int a,b; double sum; while(~scanf("%d:%d",&a,&b)&&(a+b)) { sum=fabs(a*30+0.5*b-6*b);
2015-01-03 16:20:46
449
原创 UVA - 375 Inscribed Circles and Isosceles Triangles
点击打开链接求一系列内切圆的周长之和,第一个内切圆是最大的,然后第二个是在一个圆上面跟第一个圆相切,并且与等腰三角形两条边相切,这样一直下去直到半径r小于一个特定的值。 #include#includeint main(){ double b, h, l, sum, temp, r ; double Pl = acos(-1.0); int T;
2015-01-03 16:14:54
508
原创 UVA - 10014 Simple calculations
点击打开链接2*a1 = a0 + a2 - 2*c12*a2 = a1 + a3 - 2*c22*a3 = a2 + a4 -2*c3...2*an = an-1 + an+1 - 2*cn将上述n个式子依次累加加 并且保留 第一个式子得:2*a1 = a0 + a2 -2*c1a1+a2=a0+a3-2*(c1+c2)a1+a3=a0+a4-2*(c1+c
2015-01-02 21:08:13
439
原创 UVA - 10970 Big Chocolate
点击打开链接给你一块 N*M的巧克力 问你至少需要几次操作才能 把巧克力全部切成一个单元一块的。首先横着切n-1次,得到n条,然后每条都需要切m-1次 总共需要 n-1 + n*(m-1) 次。#includeint main(){ int n,m; while(~scanf("%d%d",&n,&m)) { printf("%d\n",
2015-01-02 20:44:31
477
原创 UVA - 10177 (2/3/4)-D Sqr/Rects/Cubes/Boxes?
点击打开链接给定 边长 问在二维三维四维平面构成的图形中,正方形(正方体)长方形(长方体)的数量,注意正方形(体)这里看做不等同与长方形(体)。正方形的数量很容易找出规律来:边长为3: 2维正方形数量 1×1+2×2+3×3 3维 1*1*1+2*2*2+3*3*3 ...长方形数量等于 总数减去正方形数量,总数 等于 s*s s*s*s s*s*s
2015-01-02 19:24:37
526
转载 求1-n中1出现的个数
点击打开链接问题描述:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。例如: N = 2,写下1,2。这样只出现了1个"1"。 N = 12,写下1,2,……,12,这样有5个"1"。 写一个函数f(N),返回1到N之间出现的"1"的个数,比如f(12) = 5。假设N = abcde,这里a,b,c,d,e分别是十进制数N的各个数位上的数字
2015-01-02 18:40:33
569
原创 UVA - 10719 Quotient Polynomial
点击打开链接由一个多项式确定另一个多项式,就是一个找规律题。假设: p(x)=a*x^4+b*x^3+c*x^2+d*x+f q(x)=a1*x^3+b1*x^2+c1*x+d 因为 p(x) = (x-1) * q(x) 所以 a1=a b1-a1*k=b c1-k*b1=c d1-k*c1=d 就可以把对应系数求出来。#inclu
2014-12-31 16:04:46
645
原创 UVA - 11044 Searching for Nessy
点击打开链接就是求矩阵最少能由多少个3×3的子矩阵填满,并且大矩阵的边界不用考虑。除3就行了。#includeint main(){ //freopen("a.txt","r",stdin); int t,n,m; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m);
2014-12-31 11:17:24
417
原创 UVA - 573 The Snail
点击打开链接就是问你蜗牛经过多少天爬上井上或者滑倒井底,因为每天能往上爬的距离知道,并且每天下滑的距离也知道,直接判断就好,注意每天上爬的距离是衰减的,减到0就不能在减下去了,只能是0.#includeint main(){ //freopen("a.txt","r",stdin); double h,u,d,f; while(~scanf("%lf%lf%lf
2014-12-31 10:46:59
432
原创 UVA - 10499 The Land of Justice
点击打开链接这道题的意思 是一一个实心球,然后把它沿轴均分成n份,问后来表面积比原来的增加了百分之几。初始表面积4×pi×r×r 分成2份后,表面积增加了2×pi*r*r,所以是50%,分成三份表面积增加了3×pi×r*r. 所以是75%,n份增加了 25×n%。用double 防止溢出。#includeint main(){ double n; whil
2014-12-30 21:10:58
421
原创 UVA - 10790 How Many Points of Intersection?
点击打开链接两条平行直线,第一条直线有a个点,第二条直线有b个点,问这两条直线与多少个交点。首先让上面有a个点,下面的点一个个看。下面加入第一个点,此时没有交点。加入第二个点,最左边的线的交点数为 a-1 ,第二条线的交点为 a-2 .... 最后一条为0.加入第三个点,最左边的线交点数为 2*(a-1) ,第二条线的交点数为2*(a-2) ,..... 最后一条为0..
2014-12-30 19:59:34
413
原创 UVA - 846 Steps
点击打开链接简单题,问你由x到y的最小步数,最初和最后一个数都是1,并且当前数要比前面那个数大1,或者等于,或者小于1 ,那么每次ze
2014-12-30 19:50:57
376
原创 UVA - 10025 The ? 1 ? 2 ? ... ? n = k problem
点击打开链接给定k,问由特定的式子得到k的最小值的n,因为式子 ? 1 ? 2 ? ... ? n = k 中问号可以变成加号,或者减号,如果全部为加号那么此时需要的n是最小的,但是要是中途有一个加号变成了减号,结果都是减少了2的偶数倍,所以只要找出 1+2+3+..+n>=k的n,然后判断n-k是否是偶数,不是n继续增大,直到找到为止。#includeint main(){
2014-12-29 17:10:26
579
原创 UVA - 414 Machined Surfaces(题意不好懂)
懂了题意就是水题。给你n行数每行都有25个字符,第一个和最后一个都是‘X',中间可能包含空格,问每次与左边(或者右边)移动,直到中间没有空格为止,问此时还有多少空格。我们直接考虑移动完之后的状态,肯定是空格少的那一行最先移动完,那么只要统计出原先总的空格数减去空格最少的那一行乘×n就是目前剩下的字符了。#include#includeint main(){ int n,
2014-12-25 19:31:01
661
原创 UVA - 10071 Back to High School Physics(高中物理)
点击打开链接一个粒子具有初速度和恒定的加速度,给定t 时刻粒子的速度,求2×t 时间粒子的位移。结论:匀加速直线运动的平均速度等于初速度与末速度和的一半。 位移 = v平×t。因为 x=v0*t+1/2*a*t*t v=v0+at; 得出 平均速度 v平= x/t =v0+1/2*a*t =(v+v0)/2;那么 2×t 时刻 粒子位移 x= (v0+
2014-12-25 11:13:10
608
原创 UVA - 591 Box of Bricks (水题)
给你n堆高度不一的砖块,问你把这n堆砖块变成相同高度,需要最少移动的砖块数。开始题目没仔细看,以为照样是求变成相同高度的最小移动次数,这题只要求出平均值,然后累加有多少大于这个均值的即可,因为大于平均值的必定会移动去填满那些小于平均值的堆。#include#includechar s[10000];int main(){ int n,i,j,k=1,a[200],sum,a
2014-12-24 20:58:06
441
原创 UVA - 621 Secret Research(水)
开始 没看懂最后一句话,后来 发现不用去考虑不能匹配的情况,那么就是一个水题了。#include#includechar s[10000];int main(){ int n,i,j; scanf("%d",&n); getchar(); for(i=0;i<n;i++) { scanf("%s",s); int
2014-12-24 20:25:46
575
原创 UVA - 10161 Ant on a Chessboard(数学规律)
打开链接给你一个棋盘 输入n,找出n在第几行第几列。可以发现对角线的数是有规律增长的,那么只要找到当前输入的n在对角线的第几个数上,就可以得出行数和列数。#include#includeusing namespace std;typedef long long ll;int main(){ //freopen("a.txt","r",stdin); ll n
2014-12-24 17:23:32
379
原创 UVA - 113 Power of Cryptography (大数幂+二分)
打开链接给定n和p,找出 k使得 k^n==p 。1我们可以二分k,用高精度表示出k^n 然后跟p比较。#include#include#includeconst int maxn = 1000000000;struct bign{ int len; int f[1500]; bign() {memset(f,0,sizeof(f)); len=0;
2014-12-24 16:32:35
616
转载 整形short、int、long和long long
转载自: http://www.miss77.net/638.html整形short、int、long和long longC++的short、int、long和long long类型通过使用不同数目的位来存储值(关于位的概念自行了解),最多能够表示4中不同的整数宽度。C++提供了一种灵活的标准,它确保了最小长度(从C语言借鉴而来),如下:1. short 至少16位2. int
2014-12-24 10:57:15
3402
原创 UVA - 123 Searching Quickly
题目链接这道题就是给定 一系列ignore词(全部是小写),以::结尾 然后 输入一系列文本,每行不包括ignore词的作为关键词,(与ignore词比较不区分大小写) ,然后排序输出。每一行中可能出现几个关键词,那就以出现顺序先后输出,如果有几行包括了同一个关键词,就以输入时顺序输出,其余的按照字典序排序输出。输出的时候时候除了关键词大写外,其余都要小写。这道题做的时候有点长,不过幸好
2014-12-23 09:39:08
587
原创 UVA - 10194 Football (aka Soccer)
UVA - 10194 Football (aka Soccer) 点击打开链接从这道题中收获蛮多,首先又一次知道自己的代码风格一点都不好,乱七八糟的,还有也就是抓不住题目重点,导致不停WA。不过知道了还有strcasecmp这个函数,不区分大小写排序,并且从别人代码中学习风格,让程序清晰很多。#include#include#includeusing namespace
2014-12-21 22:56:42
457
原创 UVA - 755 487--3279
题目链接题目意思很简单,统计一系列号码串化成标准形式后出现次数大于1的串,并且按字典序输出。注意可能有 化成标准形式后全部是同一个串的情况。#include#include#include#includeusing namespace std;int f[]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9};int cmp
2014-12-21 09:53:16
382
原创 UVA - 10785 The Mad Numerologist
题目链接这个题又犯了省题不清的错误,导致不停 wa,唉。题目意思是给你一个长度L,然后和一张表对应每个大写字母的value值,你需要按照一定规则找出长度为L的序列。注意 序列的value值要最小,并且需要按字典序排,就是按字典序排,一直没意识到,其实在根据value值选出最小序列之后,还要分别排序,这样得出的才是字典序最小的序列。知道这个就分别找出元音和辅音的序列然后排序即可。
2014-12-21 08:36:36
791
原创 UVA - 10387 Billiard
题目链接在台球桌上,有一个球在桌中心与水平线成一个角度以一定的初速度发射出去,最后返回了出发点,给出经过的时间,和碰撞水平线的次数和垂直线的次数,求球初始的角度与初速度。球所做的是弹性碰撞,没有动能损失。初一看,这题不太好做,需要思考,但是可以想到,球既然回到了初始点,并且速度不变,那么经过的总的水平距离应该就是碰撞垂直线的次数×水平线的长度(来回)a*m,同理经过的总的垂直距离等于碰撞水
2014-12-20 18:26:57
407
原创 UVA - 10112 Myacm Triangles
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19099给定一些点,求构成三角形最大面积,并且这个三角形不能不能包含其他点(在边上也不行)。因为数据范围很小,所以直接枚举就好,并且还把面积公式告诉了我们,判断点在三角形内的方法是,这个点与其他顶点的面积之和是否等于这个三角形的面积。#include#includ
2014-12-19 17:56:12
541
原创 UVA - 408 Uniform Generator
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19090以前就做过这题,当时也是用枚举的,但是还是因为格式错了几次。#include#include#define maxn 10000001char f[maxn];int main(){ int n,m,sum,x,y; while(~sc
2014-12-19 15:49:56
492
原创 UVA - 350 Pseudo-Random Numbers
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19091给你一个产生随机数的式子,求循环节。#include#includeconst int maxn = 1000000;int f[maxn],s[maxn];int main(){ //freopen("a.txt","r",stdin);
2014-12-19 14:41:33
397
原创 UVA - 10879 Code Refactoring
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19094一道 特判题,求n的四个不一样的因子。#includevoid solve(int n){ int i,ans=0; for(i=2;i*i<=n;i++) { if(n%i==0) {
2014-12-19 14:11:28
409
原创 UVA - 10250 The Other Two Tree
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19096这题做的很艰难,真有点高中白读了的感觉,一些基本东西快忘完了都!给定一块对边相等的土地,然后每条边的每个方向都有一快邻居的土地与你共用一条边,邻居土地都是正方形,给定对边邻居土地的中心点,求另两块土地的中心点。抽象出来,就是给定正方形的一对对立顶点,求另外一
2014-12-18 21:14:51
485
原创 UVA - 10392 Factoring Large Numbers(素数打表)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19089给你一个long long类型的数,把这个数分解成质数相乘的形式。首先把素数打表,然后求就可以了。#include#include#includeconst int maxn=1000001;typedef long long ll;bool vi
2014-12-18 18:43:12
438
原创 UVA - 568 Just the Facts
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19089求n的阶乘从后往前的非0位。我是直接用万进位法,把n的阶乘求出来,再去找那个非0的数字。#include#includeint f[10000];int main(){ //freopen("a.txt","r",stdin); in
2014-12-18 16:01:02
401
原创 UVA - 550 Multiplying by Rotation
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19088给定一个数的进制k,和第一个乘数的最低位n,和第二个乘数m,求原数的最小长度。乘法规律:xxxx7 × 4= 7xxxxx. 首先n是原数的最低位,那么n*m%k就是原数的倒数第二位,也就是后一个数的最后一位,那么依次类推,可以把后一个数全部推出来,直到乘数
2014-12-18 14:58:14
420
C++ Qt设计模式
2018-11-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人