自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zachary的旅途

尽管我走的很慢,但我从未停止脚步。

  • 博客(88)
  • 资源 (3)
  • 收藏
  • 关注

原创 hdu 1671 Phone List 字典树

题意:判断是否有一电话号码是另一个的前缀。思路:建立字典树, 参考维基百科:http://zh.wikipedia.org/wiki/Trie需要注意的是最后释放内存,否则会MLE。#include #include #include #include using namespace std;const int N = 10;struct Trie { bool

2012-05-07 12:27:23 822

原创 hdoj 3038How Many Answers Are Wrong 并查集

思路:以区间标号大的为根建树,sum[a] 表示从a+1开始到当前根节点的和。剩下的就是并查集的操作了。#include #include #include using namespace std;const int N = 200100;int p[N], sum[N];int ans, n, m;void init() { int i; ans = 0

2012-04-15 12:13:41 764

原创 poj 3268 Silver Cow Party

思路:单源最短路,套用spfa模板,这里需要构造逆向边,调用两次spfa。#include #include #include #include #include using namespace std;const int N = 10009;const int inf = 1<<30;typedef struct node { int v, w, next;}

2012-04-13 14:27:57 654

原创 hdoj 4006 The kth great number

思路:用优先队列维护前k个大的元素,每次查询时,队首元素即为所求答案。#include #include #include #include #include using namespace std;priority_queue, greater > q;int main(){ int n, k; while (scanf("%d %d", &n, &k)

2012-04-12 17:26:36 611

原创 hdoj Buy the Ticket

算法分析:首先假设人无区别令f(m,n)表示有m个人手持¥50的钞票,n个人手持¥100的钞票时共有的方案总数。则可以分以下情况讨论这个问题:(1)当n=0时   n=0意味着排队购票的所有人手中拿的都是 ¥50的钞票,那么这m个人排队方案总数为1。(2)当m(3)其他情况:  考虑(m+n)个人排队购票的情景,第(m+n)人站在第(m+n-1)个人的后面,则第(m+n

2012-04-10 13:47:30 890

原创 hdoj 4198 Quick out of the Harbour 优先队列 + bfs

思路:对于普通迷宫求解,bfs可以到到唯一解,也是最优解。但对于不同点具有不同权值的地图就不一定了,很可能最优值会被pass掉,但使用优先队列的话,访问当前的点总是以前一个优先权最高的点访问的。#include #include #include #include #include using namespace std;const int N = 509;struct n

2012-04-07 18:41:38 811

原创 hdoj 1147 Pick-up sticks 计算几何

思路:判断第i根木棍是否在顶上,只需判断它是否被第i+1到第n根覆盖,并标记被覆盖的木棍。#include #include #include #include using namespace std;const int N = 100009;struct Point{ double x, y;};struct Line { Point p1, p2;

2012-04-04 16:54:35 1009

原创 hdoj 1257 最少拦截系统

思路:用一数组dp[]维护需要系统的个数以及每套系统可以拦截的导弹的最低高度,显然dp[1] = a[1](a[]表示所有导弹),若一导弹的高度大于当前系统所达到的高度,则说明需要新加一个系统,值为当前导弹的高度,可以看出dp[j] > dp[i](0#include #include #include #include using namespace std;const i

2012-04-02 17:59:42 895

原创 ural 1306. Sequence Median

思路:此题不能存储所有元素,否则会MLE,想到用优先队列(默认值大的优先级高),存储一半,剩下的一半依次和队首比较,若小于队首,则将队首元素出队,新元素入队。最后,若n为奇数,队首元素即为中间值;n为偶数,队列前两个的平均值为答案。#include #include #include #include #include using namespace std;typedef

2012-04-02 14:57:19 1115

原创 ural 1654 Cipher Message

思路:数据结构的题目,模拟栈的操作:若栈为空,则将原串的字符入栈,若栈不为空且栈顶元素与原串中的相同,则出栈;新入栈的元素需同之前的比较,若相同都出栈。#include #include #include #include using namespace std;const int N = 250009;char s[N];char ans[N];int main(voi

2012-04-02 09:30:57 991

原创 ural 1073. Square Country 动态规划

题意:给定一个数N,求组成N的最少的平方数的个数。思路:动态规划,我们知道dp[1] = 1,dp[2] = 2, dp[3] = 3, dp[4] = 1...若 n = i+j*j,则dp[n] = min(dp[i]+1)(i+j*j=n)#include #include #include using namespace std;const int N = 6000

2012-04-01 20:23:58 623

原创 HDOJ Error Curves 计算几何

题意:在给定的n个抛物线中,求 min(F(x)), F(x) = max(S(x)).思路:由于给定的抛物线都是开口向上的(0 ≤ a ≤ 100)F(x)也是开口向上的类抛物线,具有单峰值,利用三分求解 。#include #include #include #include #include using namespace std;#define eps 1e-10

2012-03-31 20:28:10 636

原创 hdoj 3711 Binary Number

来源:2010 Asia Chengdu Regional Contest思路:简单题,计算最小不同位的个数。#include #include #include #include using namespace std;const int MAX = 110;const int INF = 1000001;int a[MAX], b[MAX];int n, m;

2012-03-31 16:06:57 696

原创 hdoj 3209 Jumping Hands

思路:模拟。以钟表中心建立直角坐标系,根据每根针权重计算出重心,确定长度,并根据当前时间确定每根针的角度,计算出相应的x,y坐标,这样每一秒的距离都计算出来了#include #include #include #include #include using namespace std;const double PI = acos(-1.0);int l1, l2, l3, m

2012-03-31 12:15:16 610

原创 hdoj Integer’s Power

来源:2009 Shanghai Invitation Contest Host by DHU思路:sum[a, b] = sum[2, b] - sum[2,a-1].枚举指数i,计算出在区间内可以表示成p^i的个数。值得注意的是若在区间[2, 64]内,i = 2时,a[2] = 7(2,3,4,5,6,7,8),其中4,8不应包含在内,因为4^2= 2^4,8^2=2^6,所以在

2012-03-31 12:08:28 870

原创 poj 1186 哈希表构造

思路:题目给定最多6元方程,每个解的范围给定了[1, 150],若n=6,直接枚举肯定超时 ,我们可以枚举出前三个解产生的值s1,存入表中。利用哈希表,由于x的取值范围是[1,150],三个解最多产生150*150*150种可能,这样就确定了哈希表的大小。再枚举后三个解产生的值s2,若s2 =s1,则说明这是一个解。#include #include #include #include

2012-03-29 20:45:17 2137

原创 poj 2484 博弈

思路:当n=1||n=2时,Alice必胜,当n>2时,Bob都有必胜的策略。当n为偶数时,Bob选取与Alice相同的硬币数,且与Alice中心对称即可;若n为奇数,Bob只在第一次选取与Alice不通数目的硬币,其他次相同,仍是中心对称即可。#include #include #include using namespace std;int main(){ int n

2012-03-28 21:47:34 931

原创 poj 2480

设函数g(n) = gcd(i,n) (11时 n=p1^a1*p2^a2*...*ps^as,那么f(n)是积性函数的充要条件是f(1)=1,及f(n) = f(p1^a1)*f(p2^a2)*...f(pr^ar)。所以只要求f(pi^ai)就好,如果d是n的一个约数,那么1<=i<=n中gcd(i,n) = d的个数是phi(n/d),即n/d的欧拉函数f(pi^ai) =  Φ(p

2012-03-28 17:56:49 2290 2

原创 hdoj 1695 GCD

思路:由题意可知求gcd(i, j) = k 满足i属于区间[a,b],j属于区间[c, d]. 进而转化成求gcd(i/k, j/k) = 1 满足i属于区间[1, b/k],j属于区间[1, d/k].即求两区间内互素数的对数有多少。欧拉函数可求出所有小于等于n并且与n互素的数的个数。假设b#include #include #include #include #include

2012-03-27 20:51:09 1003

转载 阶乘最后非零位 模板

#include using namespace std;#define MAXN 10000char c[MAXN];int lastdigit(char* buf){ const int mod[20]={1,1,2,6,4,2,2,4,2,8,4,4,8,4,6,8,8,6,8,2}; int len=strlen(buf),a[MAXN],i,c,ret=1; if

2012-03-27 12:50:00 529

原创 hdoj 1060 Leftmost Digit

思路:n^n = a*10^p.#include #include #include #include #include using namespace std;int main(){ int t, n; scanf("%d", &t); while (t--) { double tmp, a; scanf("%d", &

2012-03-27 12:10:40 518

原创 哪些素数可以表示成两平方数之和? hdoj 3542 费马降阶

摘自数论概论的内容:素数的两平方数之和定理:设p是素数,则p是两平方数之和的充要条件是p= 1(mod 4) (或 p = 2).两平方数之和定理实际上由两个陈述组成:陈述1:如果p是两平方数之和,则p = 1(mod 4).证明:设p = a^2 + b^2,p是奇数,所以a,b为一奇一偶,设a为奇数, b为偶数.比如 a= 2*n+1 b = 2*m.p = a^2 + b^2

2012-03-26 18:10:50 5674

原创 hdoj 1028 Ignatius and the Princess III 整数拆分 递推

整数拆分:给它计数最简单的方法是定义函数f(n, k),代表n的整数拆分中,最大项不超过k的方案数。对于任意满足条件的拆分,最大项要么达到这个限制,要么小于它,因此f(n, k) = f(n-k, k) + f(n, k - 1)。边界条件:f(n, 1) = 1, f(0, 0) = 1, f(1, 1) = 1, 另外,f(n, k) = f(n, n),如果k大于n的话。#include

2012-03-26 12:40:49 2500 1

原创 fdu Problem 2072 Count

思路:对数组非降序排序,并记录原始下标。利用二分查找,找到要查找的数后进行区间判断,如果在查询区间的话,count累加;不在的话,继续查找,仍是二分。#include #include #include #include using namespace std;const int N = 100009;struct Arr { int val, it;};Arr

2012-03-26 08:49:35 600

原创 hdoj 1452 Happy 2004 所有因子求和

思路: 任意一个大于2的数都可以写成素因子乘积的形式,对于2004 = 2*2*3*167;因子和 s是积性函数,即 :gcd(a,b)=1==> s(a*b)= s(a)*s(b)  2004^X=2^2X * 3^X *167^X,  s(2004^X)=  s(2^(2X))* s(3^X) * s(167^X)如果 p是素数 ==> s(p^X)=1+p+p^2++p^X = (p

2012-03-24 17:54:19 880

原创 中国剩余定理 hdoj 1370 Biorhythms

中国剩余定理,即孙子定理,对于三个数问题的形式为:已知M1,M2,M3是两两互素的正整数,求最小ans,使它被M1,M2, M3所除得到的余数分别是C1,C2, C3。孙子定理的算法思想是:找出被Mi除余1而被另外两个数整除的数Wi。所求数之一为:ans = sum(Wi*Ci)(i = 1,2,3).若要求满足条件的最小解,mod(lcm(M1,M2 ,M3 ))即可。#include

2012-03-24 11:52:27 883

原创 hdoj 1061 Rightmost Digit

思路:对于每个数字,得到i次方之后(i=1,2,3...),你会发现个位数的值是循环的。不管多大的数,n次方之后,个位数字只与个位数有关。#include #include #include #include using namespace std;int rdigit[11][10] = {{0,0},{1,1},{1,2,4,8,6},{1,3,9,7,1},{1,4,6},

2012-03-23 20:29:48 649

原创 hdoj 3543 Roba number

题意:求在3*10^7和4*10^7之间的所有素数。思路:打表。怎么打表呢,首先判断一个比较小的数是否为素数,是的话,它的倍数都不是素数。这个较小的数要枚举到多大呢,题目中给定最大数是40000000,那么它的最大素因子是sqrt(40000000)。也就是说,在3*10^7至4*10^7范围内,最大素数不会超过sqrt(40000000)。#include #include usin

2012-03-23 17:37:10 666

原创 hdoj 2553 N皇后问题

思路:复习了回溯算法。n皇后问题,就是考虑皇后放置的位置,对于每一行,我们需要枚举每个可以放置皇后的位置,我们需要判断当前位置(第i行)是否满足条件,即判断这个位置是否与放置好的前i-1行的皇后的位置相冲突,如果冲突,说明这个位置不合适;否则的话,就可以枚举下一行皇后的位置,直至第n行。#includeint ans, row, n;int local[15];void dfs(int

2012-03-23 15:35:07 885

原创 hdoj 1361 Parencodings 2001 Asia Regional Teheran

思路:模拟,根据序列P可以构造出S,然后再根据S,推出序列W。#include #include #include #include #include using namespace std;char str[50];int w[25];int main(){ int t, n, num; scanf("%d", &t); while (t--) { scan

2012-03-23 12:50:06 671

原创 数论 ural 1356. Something Easier

思路:根据哥德巴赫猜想, 任一大于2的偶数都可写成两个质数之和。 任一大于7的奇数都可写成三个素数之和。详细内容可参照维基百科http://zh.wikipedia.org/wiki/%E5%93%A5%E5%BE%B7%E5%B7%B4%E8%B5%AB%E7%8C%9C%E6%83%B3。#include #include #include #include #incl

2012-03-22 12:12:33 790

原创 计算几何 ural 1754. Explosion in a Pyramid

思路:将题目描述的问题抽象成求点到平面的距离。由平面的三点,利用叉乘求出法向量,再由平面外一点与平面内任意一点组成的向量与该法向量的叉积比上法向量的模,得到点到平面的距离。#include #include #include #include using namespace std;struct Point { double x, y, z;};Point p[5]

2012-03-20 17:09:57 648

原创 ural 1489. Points on a Parallelepiped 计算几何

思路:以某一个面为底面,将展开的图形折合回去,进而将二位坐标转化为三维坐标。#include #include #include #include using namespace std;struct block{ double minx, maxx, miny, maxy;};block r[10];double a, b, c;int getid(doub

2012-03-20 14:14:28 544

原创 ural 1588 Jamaica

思路:枚举所有点,计算两点长度,同时在搜索所有点,判断是否有共线的,有的话,只算距离最长的就可以了。对于多个点在同一直线上,最长距离肯定是两端的点,所以需要预排序。时间复杂度O(n*n*n).#include #include #include #include #include using namespace std;#define eps 1e-8const int MA

2012-03-19 20:56:51 495

原创 计算几何 ural 1874

题意:求已知两边(非直角边)的有一角为直角的四边形的最大面积。思路:三分法。极端情况:1)给定两边在同一直线上,即构成的为直角三角形2)四边形为矩形一般情况:四边形面积:Sabc + Sacd, max(Sabc)= ac*ac/4. Sacd可又海伦公式求得。其中ac是变动的,范围有1,2可知,利用三分法求最大面积。#include #include #inclu

2012-03-19 14:20:24 713

原创 计算几何 ural 1753

题意:求book在下滑过程中,中心距书架左边栏最远距离。思路:刚开始并没有思路,只是简单的推出:在最开始的时候,book的中心距书架左边栏的距离(简称最左边距)为0,当book的中心与书架左边栏顶部重合时,最左边距也为0.那么最左边距的最大值肯定在这之间产生。搜了别人的题解,了解到三分法。至于什么是三分法,我也是刚了解,只知道,单峰函数三分法,函数在给定定义域内有不超过一个的峰值,可以根据

2012-03-19 12:32:27 1206

原创 ural 1207 计算几何

1207. Median on the PlaneTime Limit: 1.0 secondMemory Limit: 16 MBThe are N points on the plane (N is even). No three points belong to the same strait line. Your task is to select two po

2012-03-18 10:34:10 915

原创 计算几何 ural 1793Tray 2

1793. Tray 2Time Limit: 1.0 secondMemory Limit: 64 MBOne of the organizers of the Ural Regional School Programming Contest came to the university cafeteria to have lunch. He took a soup

2012-03-16 21:38:07 949

转载 ural 题目列表分类

1028:经典问题,先按x坐标第一关键字,y坐标第二关键字排序,然后线段树/树状数组/平衡树都行1037:优先队列维护靠前的空间,单调队列维护删除1067:改造版Trie+DFS1090:经典逆序对问题,树状数组/线段树/归并排序1100:惟一的玄机就是stable_sort1126:固定的一个序列里面RMQ,S-T/优先队列/线段树……1220:貌似简单的问题,1000个

2012-03-09 14:16:35 767

原创 扩展欧几里德算法

欧几里德的推广形式, 使其能计算出满足下面条件的整系数x,y:d = gcd(a, b) = ax + byvoid extend_Eulid(int a, int b){ if (b == 0) { x = 1; y = 0; d = a; } else { extend_Eulid(b, a%b)

2012-03-08 15:58:10 532

javascript高级教程

javascript高级教程,深入学习javascript

2011-11-24

精准农业汇报

掌握一定专业知识,有利于构建良好数据库和GIS开发

2011-11-18

[计算机图形学].(美国)Peter.Shirley.清晰版

[计算机图形学].(美国)Peter.Shirley.清晰版

2011-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除