摘要: 转自教主...很多人都关心这个问题,来信问我。我一直想总结一下经验,让大家可以免得走弯路。今天终于开始写这篇文章。我的文章一般都会在发表之后不断改动,所以如果转载请只给出链接,以便得到最新的版本。面向对象语言不适合入门有的人抱怨很多学校开始教授 Java 而不是以前的 C 或者 Pascal。的确,Java 有很多问题,使得它不适合作为一种入门语言。其实 Java 本质上是把自身的一种古板的设计强加于程序员,使得他们失去了灵活的思维。比如 Java 缺少高阶函数,也就是不能把函数作为参数或者变量传递,这导致了需要使用繁琐的设计模式 (design patterns) 来达到对于 C 语言都.. 阅读全文
posted @ 2013-08-22 21:32 zhsl 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4705 题意:给一颗树,从树上任意选择3个点{A,B,C},要求他们不在一条链上,求总共的数目。 容易想到枚举每个点,然后从每个点的所有分支中选择3个分支,然后从每个分支中选择1个点。假设点u有k个分支,每个分支的节点个数为a1,a2...an,那么方案数就是这个数列中所有3个数的积的和。直接枚举肯定会TLE的。我们可以维护3个前缀和,f1[i]表示前 i 个数选择一个的方案数,f2[i]表示前 i 个数选择两个的方案数,f3[i]表示前 i 个数选择3个的方案数。那么f1[i]就是前缀和,... 阅读全文
posted @ 2013-08-22 20:26 zhsl 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704 题意:求a^n%m的结果,其中n为大数。 S(1)+S(2)+...+S(N)等于2^(n-1),第一次多校都出过吧。然后就是一个裸的大数幂了。。 关于大数的A^B mod C推荐看AC神的两篇文章,... 当然,这个还以一个更简单的方法,由费马小定理:a^(p-1)=1(mod p),那么a^n=1(mod p)可以转化为:2^(n%(1e9+7-1)) % 1e9+7... 1 //STATUS:C++_AC_15MS_1360KB 2 #include 3 #inc... 阅读全文
posted @ 2013-08-22 20:02 zhsl 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699 题意:开始有一个光标,每次有5中操作:1,光标当前位置插入一个数,2,光标当前位置删除一个,3,光标向左移一位,4,光标向右移动一位,5,询问前面的数列的最大前缀和。 由于每次删除的数都是在当前的光标位置,而且询问的前缀和都是在光标前面的位置,因此问题简化了很多,否则要用Splay tree搞了。我们可以直接用一个链表或者两个栈来维护光标以前的最大前缀和,然后直接模拟操作就可以了。。。 1 //STATUS:C++_AC_671MS_10824KB 2 #include 3 #in... 阅读全文
posted @ 2013-08-22 19:42 zhsl 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4696 题意:给一个图,每个点的出度为1,每个点的权值为1或者2。给n个询问,问是否能找到一条路径的权值和M。。。 首先由于每个点的出度为1,所以必然存在环。容易证明,一个环中存在1或者与环相连的路径存在权值为1的节点,那么必然每个数都能组成,如果没有1那么所有偶数都能组成。。。 可以无视代码> 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #i... 阅读全文
posted @ 2013-08-22 19:35 zhsl 阅读(489) 评论(0) 推荐(0) 编辑