摘要:
题解链接:http://page.renren.com/601081183/note/866929096 这次的比赛打得相当不好,只过了一道题,那道题还是在不求甚解的情况下过的。 这次暴露出很多缺陷,例如对奇偶性的理解不透彻,对数位统计相当不熟悉,组队的配合不稳定,这次配合显然差了很多!水题的代码就不贴了,其他题的会逐题添加!1001(hdu 4380):View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 5 using namespace std; 6 const 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=3415 不难的单调队列,不过刚开始的时候开的队列不够大,所以数组越界了。不过最不解的是hdu返回的是wa而不是runtime error,搞到我以为是单调队列写错什么了,所以不停debug,debug了好多组数据,最终才想到队列的大小是会超出n的,于是改过来以后就ac了! 时间相当理想,才46ms!下面是我的代码:View Code 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 5 const 阅读全文
摘要:
http://poj.org/problem?id=2714 因为每个向量的方向都不同,所以就可以将向量按圆周顺序排一下序,然后枚举每半个圆周的向量和,找出最大值就行了。 这里是用了贪心的思想,尽量将向量放到同一侧,这样就可以尽可能大的构造一个和向量!View Code 1 #include <cstdio> 2 #include <cmath> 3 #include <algorithm> 4 #include <cstdlib> 5 #include <cstring> 6 7 using namespace std; 8 con 阅读全文
摘要:
http://poj.org/problem?id=2823 入门级的单调队列,不过我的代码要用cout加上poj的g++才能3500ms左右通过,不然就会超时了!View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <cmath> 5 #include <iostream> 6 7 using namespace std; 8 9 const int maxn = 1000001;10 11 void scan(int & 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1294 组合数学的题,求给定结点数可以构造出多少不同的根树。 我的做法跟网上其他的做法有点不同,我是用整数划分的方法将一种结点数的子结点全部分解,然后用乘法原理求出组合数是多少。刚开始的时候忘记处理重复子树的会出现交换以后相同的状况,然后通过推理,发现了重复的个数跟组合数有关,所以开始的时候可以用杨辉三角构造组合数。 例如,如果有n个结点的子树种类有k种,同时有这样的m棵子树,那么这几棵子树的组合数就是Σ((k - i) * C(i + m - 2, m - 2))(0 <= i < k)。然后通 阅读全文
摘要:
周六了,虽然今天没有hdu的多校联合比赛,不过我们还是要继续进行组队的训练!这次的比赛在hdu的diy进行。 今天做的题不知道题源是哪里,所以只能稍微讲一下今天遇到什么题目了!今天的题据说是按照区域赛的难度来设定的,所以做题的数目还是和之前的差不多,也就3题。可能是今天比较幸运,其他队伍都出现了莫名其妙的卡题,最终我们队因罚时较少,登顶了~ 刚开始的时候,还是队友负责读题,我就在一边吃午饭,貌似刚开始几分钟就有队伍打算出一道数字组合的题。今天我吃饭也挺快,发现有人wa那题的时候就已经吃完饭了。然后我就快速的看懂题目,跟队友讲出我的想法,并切分析出解决的具体方法。代码不长,不过我在代码的... 阅读全文
摘要:
http://poj.org/problem?id=3368 看完RMQ的课件,里面用了这题做例题,所以就试下用RMQ来解这题。 RMQ总算是看懂而且会用了。RMQ跟线段树有点相似,也是二分区间来快速求出最值。不过,线段树的适用范围明显更广,RMQ主要是用作离线查询区间最值的。然而居然推荐这题拿来做RMQ,还真让我不解.....不过也没关系,也可以做,就是query的时候显得有点麻烦罢了! query的修改耗了我不少时间,因为RMQ查询的区间长度总是2的n次方,所以如果我的查询结果横跨两个区间,这时的操作就有点麻烦了。这时查询的复杂度升至O(log n)了。这个使用限制还是我一直找不到错... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1100 今晚做了一下标记为组合数学的题。这题归类组合数学应该是因为这题用到二叉树计数的原理吧。这次是完全没有参考其他资料的了~ 稍微解释一下题意,这题就是将二叉树标号,然后给出标号,让你画出二叉树来。标号的规则比较长,总的来说就是结点多的标号大,左结点标号大的大,如果左结点标号相同,右结点标号大的大。 刚开始的时候,我就光靠数字和图形间的关系来推测构图的方法,然后发现要解这题必须要找到根本,就是二叉树计数。然后我就打了个卡特兰数的表,用来关联题目的条件。这时可以找到一个方法来找出左右子树的模样。 我描... 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=1011 入门级树dp,这题就是要注意一下输入的时候要特判一个m为0的情况。View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <cmath> 5 #include <vector> 6 #include <algorithm> 7 8 using namespace std; 9 10 const int maxn = 105 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=3829 这道题是一道二分匹配。这题虽然猫和狗是对立的,不过却要用小朋友的关系来构图。让我详细的说还真的挺难说的懂,反正就是如果两个小朋友间讨厌的动物是另一个的喜欢的动物,那么这两个小朋友之间就得连上一条边。这里可以理解为两个小朋友间产生了敌对的关系了。为了大家和睦相处,只好消灭足够多的敌对关系了,于是最大匹配的算法就出现了! 虽然这次数据规模不大,不过我还是用了hk算法,拿来练习!这次刚打出来的代码反映出我过往打hk算法的一个问题,在dfs前忘记判断这个x点是否已经匹配了!可笑的是,我以前的代码都过了,这.. 阅读全文