自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(48)
  • 资源 (10)
  • 收藏
  • 关注

原创 HDU 2066 一个人的旅行

/*这道题原来WA,错误找了蛮久的,问题出在①处,因为两个城市之间可能存在两条道路。解题思路:增加一个超级源点,从它到邻近城市的距离为0.*/ #include #include const int nMax = 1007;const int INF = 1<<30;int G[nMax][nMax];int T, S, D, N;int s[nMax], d[nMax];

2012-05-21 21:48:32 777

原创 HDU 1875 畅通工程再续

/*原来超时,在①处加上上届即可。英文表示很吃力啊。。。*/#include #include #include #include const int cMax = 107;const double INF = 1000;struct Co{ int x; int y;}co[cMax];struct Dis{ int u, v; double dis; Di

2012-05-21 18:55:25 493

原创 HDU 2544 最短路

/*最基础的Dijkstra算法*/#include #include const int nMax = 107;const int INF = 100007;int w[nMax][nMax];int d[nMax];int N, M;void init(){ int i, j; for(i = 0; i <= N; ++ i) for(j = 0; j <= N

2012-05-20 23:09:24 463

原创 HDU 1879 继续畅通工程

/*思路:在qsort中,将已建数据排列到前面即可。*/#include #include #include const int nMax = 107;struct Node{ int x, y; int cost; int isBuild;}node[nMax * nMax];int p[nMax];int N;int find(int x){ return p

2012-05-20 21:31:14 535

原创 HDU 1863 畅通工程

/*简单最小生成树问题*/#include #include #include const int mMax = 107;const int nMax = 10007;int N, M;int u[nMax], v[nMax], w[nMax], r[nMax];int p[mMax];int cmp(const void *a, const void *b){ int

2012-05-20 19:16:40 530

原创 一些小收获

一、认真听专业课,因为有些课像《数据结构》、《数据库系统原理》、《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月,有的甚至看了好几年都看不明白。 二、编程不是技术活,而是体力活。 三、当程序员你要有足够的韧性和毅力!有个高手出了一道题测试你的韧性和毅力:找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就

2012-05-19 00:44:06 941 1

转载 计算机学生的未来

计算机专业毕业后大致的工作方向是软、硬、网、图 四大类 尤其以软件、网络为现今的首选从岗位上分,又可以分为技术道路、营销道路两大方向if 你选择作技术,then 从现在开始,牢记: 天道酬勤!!! if 你选择软件技术 then 每天都要用大量的时间学习高级语言,绝对不能仅限于学校的安排。优秀的程序员都是大学阶段就已经自学得非常深入了。 if you选择网络技术,那

2012-05-19 00:07:45 1259

原创 数论初步

一、辗转相除法(又称欧几里德算法):gcd(a, b) = gcd(b, a % b);int gcd(int a, int b){ return b == 0 ? a : a % b;}另外:最小公倍数 * 最大公约数 == 两数之积二、筛选法构造素数表int visit[nMax];int prime[nMax];int getPrime(int n)//

2012-05-18 23:30:06 755

原创 10056 - What is the Probability ?

/*简单概率题,一次AC*/#include int main(){ //freopen("f://data.in", "r", stdin); int T; scanf("%d", &T); while(T--) { int N, I; double p; scanf("%d %lf %d", &N, &p, &I); double q, t; int i

2012-05-18 20:42:17 631

原创 10229 - Modular Fibonacci

使用矩阵实现Fib的运算/*推荐:四星题意:Fib数列,输入n、m,输出F[n] % 2^m思路:正常的解法会导致超时,网上看到一种解法,使用矩阵乘法加速,然后分治求解。*/#include const int nMax = 30;long long a[4],b[4];int M;void bsearch(int n){ if(1 == n) { a[0]

2012-05-18 11:29:47 651

原创 UVA 138 Street Numbers

/*题意:m个数,找出n,使得[1,n-1]和[n+1,m]所有数之和相等,输出10组数据!*///打表程序#include __int64 bsearch(__int64 l, __int64 r){ __int64 left = l; __int64 right = r + 1; while(left < right ) { __int64 mid = left + (

2012-05-17 16:49:07 557

原创 HDU 1753 大明A+B

/*高精度专题做完了,全部AC,开心。。。题意:输入两个小数a、b,输出它们相加之和思路:第一步:将小数转化成整数第二部:对小数位数比较小的那一位进行补零操作第三步:相加,然后输出即可①处曾经出错*/#include #include const int nMax = 407;struct BigNumber{ int data[nMax]; int len;

2012-05-16 23:20:33 779

原创 HDU 1316 How Many Fibs?

/*推荐题型:四星题意:输入a、b的值,输出[a,b]之中符合Fib的个数思路:打表 + 大整数 + 二分搜索*///#define TEST#include #include const int nMax = 500;const int mMax = 105;struct BigNumber{ int data[mMax]; int len; BigNumber

2012-05-16 22:07:37 536

原创 HDU 1715 大菲波数

/*这道题的收获,当你不知道数据需要定多大时,输出最大数据自己进行一次判断,不要盲目带数据。如①处的语句。*/#include #include const int nMax = 1007;const int mMax = 250;struct BigNumber{ int data[mMax]; int len; BigNumber(){len = 1; memset(da

2012-05-16 17:18:28 877

原创 HDU 1063 Exponentiation

/*题意:输入一个小数R,一个整数N,输出R^N思路:将小数转换成整数然后求出R^N,然后判断出小数点的位置进行输出。方法一通过,但是方法二我不知道那里有错误!只是输入方式不同而已,难道测试数据中存在空行?*///方法一:#include #include const int nMax = 200;struct BigNumber{ int data[nMax];

2012-05-16 16:27:12 615

转载 一位Acmer过来人的经验

很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。       我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。       其实,500题仅仅是一个标志,而且仅仅表示你做ACM-ICPC有一定的时间,       我们训练的目的是什么?我觉得有四点

2012-05-16 15:15:43 502

原创 HDU 1047 Integer Inquiry

/*题意:输入一些大整数,输出它们之和在这道题中找到了一个重大的出错原因,即①处的初始化*/#include #include const int nMax = 200;struct BigNumber{ int data[nMax]; int len; BigNumber(){len = 1; memset(data, 0, sizeof(data));} BigNum

2012-05-16 09:02:43 490

原创 hdu 1042 N!

/*曾经WA了N多次,错误出现在①处,需要在②处进行补充*/#include #include const int nMax = 50000;struct BigNumber{ int data[nMax]; int len; BigNumber(){len = 1;memset(data,0,sizeof(data));} BigNumber & operator=(con

2012-05-16 08:04:22 470

原创 HDU 1711 Number Sequence(KMP)

/*最基础的KMP算法题,只是把字符改为了数字*/#include const int mMax = 10007;const int nMax = 1000007;int N, M;int a[nMax],b[mMax];int next[mMax];void init(){ scanf("%d %d", &N, &M); int i; for(i = 0; i < N;

2012-05-15 11:12:37 441

原创 HDU 1358 Period(KMP求周期)

/*题意:输入字符串长度N和字符串S,要求输出所有字符串S前k个字母组成的序列A为循环序列时,循环序列的个数Ak,k从小到大一次输出。KMP解决,可以将算法时间复杂度缩小为O(N),然后找规律即可。KMP算法可将字符串匹配算法时间复杂度从O(N*M)缩小到O(N+M)*/#include const int nMax = 1000007;char S[nMax];int ne

2012-05-15 10:22:57 1000

原创 hdU 2222 Keywords Search(AC自动机)

/*ACAC自动机问题参考:http://www.cppblog.com/mythit/archive/2009/04/21/80633.html*/#include using namespace std;const int nMax = 1000100;const int mMax = 60;const int Max = 26;struct Node{ Node

2012-05-15 09:08:42 465

原创 分治+贪心

《算法竞赛入门经典》---高效算法设计,作者的编辑思路,是首先介绍了算法的效率分析。 其中规模与运算量的对应关系大致为:然后谈到归并排序、快速排序和二分查找,推荐对 [ )的使用,然后谈到二分查找中的集中具体情况bsearch,lower_bound(找上界(即:第一个元素下标)),upper_bound(找下界(最后一个元素的下一个下标)),然后介绍分治法,分治法三步走:划分问题:把

2012-05-14 23:35:05 733

原创 hdu 2117 Just a Numble

/*题意:输入n、m,设a=1/n,输出a小数点后第m位的值思路:模拟除法实现*/#include #include const int mMax=100007;int res[mMax],e;int n,m;void solve(){ memset(res,0,sizeof(res)); e=0; int k=1; while(k != 0 && e < m)

2012-05-10 08:17:37 536

原创 108 Maximum Sum

/*推荐题型:四星。 动态规划题意:输入矩形长度N,矩形中节点上的数值A[i][j],输出子矩形所包含节点的数值之和的最大值。动态规划策略:状态:d[lx][ly][rx][ry]表示矩形(lx,ly,rx,ry)中的最大值。状态转移方程:d[lx][ly][rx][ry]=max(d[lx+1][ly][rx][ry],d[lx][ly+1][rx][ry],d[lx][ly

2012-05-09 23:47:54 667

原创 10245 - The Closest Pair Problem

/*推荐题型:三星,最近点对问题,典型分治法问题题意:N为坐标个数,随后输入N个坐标,输出距离最近的两坐标的距离分治策略:原来做这道题的时候观察n<10000,所以效率为N*N时也可以,想到了使用两个循环,然后剪枝,通过。后来看别人代码,发现原来可以使用分治的,典型的分治问题,修改后的代码见方法二:*/#include #include #include const int

2012-05-09 16:27:23 701

原创 UVA 11100 The Trip, 2007

/*WA题意:一伙人要去旅游,旅行商分配给他们n个包。但不让带太多的包上飞机,所以他们一个包嵌套一个这样来使外面总包数尽量小。输出外面最小包的个数和嵌套的序列。输入为n的值,和这n个包的体积。贪心策略:从体积最大的包a开始,把体积比它小的包中最大的哪一个b放入a中,这样再对b进行同样的操作,知道所有的包都被访问。结果WA,网上的解法,首先求出最少可分成的堆数K,然后依次输出各个序列。见

2012-05-09 12:35:33 917

原创 ACM学习技巧

一、两个数组来实现查找动态集合的最小值。二、first[]、nest[]将一个数组分成多个不同的路径。(有向图邻接表)三、使用分治法的时候尽量使用 [ ) 结构,即:前闭后开区间。四、连续序列和的快速运算另加一个数组(A[n]表示前n个数之和),实现。如sum(m,n)=A[n]-A[m-1]五、当数组下标涉及到负数的时候#define F(i, j) (f[(i) + 1

2012-05-09 11:31:56 480

原创 993 - Product of digits

/*一次AC题意:输入N,求出最小的Q,其中Q的所有位数相乘等于N。如果不存在输出-1。product of digit.其中product的意思就是相乘的意思。贪心策略:N每次除以[2,9]之间可整除的最大数,并将这个数作为Q的最后一位,循环直到N<10,这时Q也最小。为方便书写程序,Q使用数组表示。*/#include int N;int Q[10],top;void

2012-05-09 08:36:43 586

原创 10020 - Minimal coverage

/*区间覆盖问题,一次AC题意:使用题中所给坐标[Li,Ri]覆盖[0,M],如果不能覆盖输出0,如果可以,输出使用最少坐标的情况,并输出其序列,要求按Li进行排序。思路:其中刘汝佳书中有这道题的详细思路,但是我感觉实现起来蛮复杂,所以使用自己的思路进行解答。首先按Li对坐标进行排序,找出其中Lil如果满足,则转变为对[Ri,M]的覆盖,如果不满足则结束。贪心思路即:按Li进行排序,寻

2012-05-09 00:16:25 575

原创 10954 - Add All

/*推荐题型:三星,使用两个数组存储数据方便找到最小值贪心,一次AC题意:一个集合的整数,将其中两个数相加,结果为花销。然后花销加入到整数集合中,求最后花销为多少?贪心策略:每次找到集合中最小的两个数相加*/#include #include const int nMax=5007;int A[nMax],a_pos;int B[nMax],b_front,b_rea

2012-05-09 00:15:31 560

原创 10026 - Shoemaker's Problem

/*贪心题意:鞋匠接到N份订单,Ti为完成需要的时间,Di为逾期或罚款的金额,要求罚款金额最小的序列。思路:设从第x位开始,则Tx*(剩余为完成订单)<(剩余订单完成所需时间)*Dx,到局部a、b满足:Ta*Db<Tb*Da则a会排在b之前。所以在cmp中设置函数即可,有一个需要注意就是,如果罚款金额相同需要输出字典序最小的,所以需要在排序中增加稳定性。见①注意:主要掌握知识点:qs

2012-05-07 07:36:08 731

转载 qsort()使用总结

一、简单介绍qsort()是一个基于快速排序的排序函数,需要调用头文件#include 。题中设计到排序时直接调用qsort()会很方便,基本使用状态:qsort(a,n,sizeof(a[0]),cmp),这样会对a[0]...a[n-1]数组进行cmp排序,如果仅仅对部分数组进行排序,qsort(&a[m],n1,sizeof(a[m]),cmp)即可。然后主要就在于cmp函数的定义了,正

2012-05-06 22:46:13 767

原创 良好的编程习惯(现在开始去注意)

一、学习写注释,程序的目的,函数的目的,作者,写的时间,是程序更容易读懂二、多使用空格、空行来增加程序的可读性。for(int i=0;i三、使用==时,要把常量放在前面。例如:正常写法:if( i == 9)如果你写==的时候不小心漏写了一个=,那么你就悲剧了,我保证你需要找很久才能找到。但是如果这样写if( 9 == i)那么如果你漏写了一个=,编译器会帮你检测

2012-05-06 21:38:11 568

转载 一些计算机编程的经典书籍总结

(最后更新时间:2010.11.26  11点16分)这个本是我在C++奋斗乐园论坛总结的一篇帖子,顺便贴在自己博客里,感觉这篇文章值得学编程的朋友看看。因为我个人学的是C/C++的,所以JAVA等程序语言的书籍我就不讨论了。这里讨论的主要是C/C++的经典书籍,另外还有计算机专业要学的一些重要课程领域的书,大家一起来补充吧!我相信经过大家的补充,这篇帖子一定可以帮助许多学

2012-05-06 21:30:09 503

原创 4221 Greedy?

/*贪心推荐题型:三星,题意理解了很久才真正搞懂。题意:N份工作,所需时间为Ci,如果超过Di则需要进行罚款,工作顺序可随便排序,求这N份工作中罚款最大的最小值。思路:贪心,只需要将按Di的值进行一次排序即可,然后求出其中罚款最大值。具体分析:如果不是按以上方案进行排序,设a、b顺序调换①如果未涉及到罚款的最大值,则对结果无影响②如果a原来为最大值,现在a被排到了b之后,而no

2012-05-06 16:15:22 658

原创 10700 - Camel trading

/*推荐题型:三星数学题,模拟计算过程题意:一个表达式无括号,只有*和+两种运算符,求加入括号后表达式的最大和最小值。思路:通过观察,最小值时所有的+号在一个级别。最大值时所有的*号在一个级别。然后模拟计算过程即可。比如:3+11+4*1*13*12*8+3*3+8,最小值为3+11+(4*1*13*12*8)+(3*3)+8,最大值为(3+11+4)*1*13*12*(8+3)*

2012-05-06 10:33:08 667

原创 10340 - All in All

/*简单题题意:s是否为t的子序列注意:①处出错,Yes写成了YES*/#include #include const int nMax=100000;char s[nMax],t[nMax];int s_len,t_len;int main(){ //freopen("f://data.in","r",stdin); while(scanf("%s%s",s,t)!

2012-05-06 10:24:43 491

原创 10706 - Number Sequence

/*推荐题型:三星题意:注意看题中的数字序列,按此规律排下去,求第i个位置为什么数字。思路:这道题原先思考的很消极,后来逐渐找到了方法,首先找到了临界状态,大概100000个数就会超过题中要求。模拟搜索过程求解。使用数组a[i]表示第i个分序列长度,A[i]表示前i个分序列长度之和。然后模拟求解。结果WA!*/#include #include const int nMax=

2012-05-05 23:05:43 580

原创 10905 - Children's Game

/*推荐题型:三星特殊排序,其实就是贪心吧题意:输入N个整数,由这些整数组成一个大整数,求组成所有大整数中最大值思路:首先从局部考虑两个整数如果满足a+b>=b+a,则a需要排在b之前,这就是排序的判断条件。只需要在cmp中定义即可。*/#include #include #include const int nMax=57,mMax=500;char str[nMax

2012-05-05 20:07:39 548

原创 10341 - Solve It

/*二分法求解题意:对给定表达式求解。注意:①精度值的使用。*/#include #include int p,q,r,s,t,u;double f(double x){ return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t*x*x+u;}int main(){ //freopen("f://data.in","r",stdin

2012-05-05 19:59:08 552

JavaScript.DOM编程艺术(第2版)附录及源码.rar

JavaScript.DOM编程艺术(第2版)附录及源码.rar

2013-06-08

C和C++辞典.chm

C和C++辞典,chm

2012-05-02

新编Win32API大全(中文版).chm

新编Win32API大全(中文版),中文版,

2012-05-02

C++STL程序员开发指南.pdf

C++,STL,pdf,C++STL程序员开发指南,

2012-05-02

MFC类库详解.chm

MFC类库详解,chm

2012-05-02

空空如也

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

TA关注的人

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