摘要:
3743 -- LL’s cake 搞了好久都过不了,看了下题解是用PSLG来做的。POJ 2164 && LA 3218 Find the Border (Geometry, PSLG 平面直线图) - LyonLys - 博客园这篇里面写过一下,就是把点都提取出来,然后模拟沿着边界移动,找到多边形并计算面积。 而我的做法是直接模拟多边形切割,各种超时爆内存。先留着,看以后能不能用这个来过。没过的代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8... 阅读全文
摘要:
Problem - 1434 网上题解是普通的堆合并,都是用优先队列直接做的。可是正解的堆合并应该是用左偏堆或者斐波那契堆的吧,不然O(X * N ^ 2)的复杂度应该是过不了的。斐波那契堆的实现相对麻烦,所以我用了左偏堆完成这题,最坏复杂度O(X * N log N)。 这题就是一个模拟,没什么可以解释的。1y~代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 template10 struct Node {11 int d;12 ... 阅读全文
摘要:
2442 -- Sequence 真郁闷,明明方法是对的,为什么我的代码老是那么的慢。_(:з」∠)_ 这题要想考虑两列的情况,然后逐列拓展。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int N = 2222;10 const int Q = N * N;11 template12 struct PriQ {13 T q[Q];14 int sz;15 void clear() { sz = 0;}16 ... 阅读全文
摘要:
今天打算学习左偏堆,可是想起来自己二叉堆都没有看懂,于是就跑去回顾二叉堆了。发现以前看不懂的二叉堆,今天看起来特简单,随手就写好了一个堆了。 简单的说一下我对二叉堆操作的理解。我不从底层函数说上去,相反,我打算从实现来解释底层函数的构造,以大堆为例。 其实操作都很简单,对于push函数,因为堆是一棵严格的完全二叉树,所以我们直接在队列的尾端插入新增加的元素。然后就将这个元素不停的跟他的父节点进行比较,如果这个元素更大就跟父节点交换,否则就退出上推更新这个操作。对于pop的操作也是差不多的,我们可以将出堆的元素的位置用最底的元素替换。然后就是将这个替换上堆顶的元素下推。对于当前这个元素的... 阅读全文
摘要:
Problem - 4002 不知道思路了。。居然是大一上学期的时候做的题,今天找回来才发现是区域赛的题。为什么那时候就写这么恶心的代码?_(:з」∠)_ 好像很厉害的样子。。 写一下那时候我的记录下来的思路,不知道对不对的了。。囧:1.筛素数70个左右2.求素数的乘积,要用到高精度乘法3.把70个积都存下来4.读入字符串,然后比较大数,超过已存素数就输出 大概就这样子。代码如下: 1 #include 2 #include 3 #include 4 #include 5 6 int prime[101]; 7 char *product[101]; 8 9 voi... 阅读全文