摘要:
暑假的第一场个人赛今天开始了,题目是10的Troy神出的,总体感觉层次性不强。一共6题,有4题简单题,然后两题中等偏难的题吧,自己做不出那两题,不过也不像是难题。 题目来源如下表格。IDOriginTitle6/71Problem ASGU 174A0/3Problem BUVALive 6039B32/141Problem CSGU 180C5/54Problem DURAL 1468D4/24Problem EUVALive 5066E0/1Problem FURAL 1529F 开场的时候,机房的机不够,我就被迫回去宿舍开始,于是开始的时间就比别人晚了大概25分钟左右。 那时已... 阅读全文
摘要:
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... 阅读全文
摘要:
Problem - 2112 就一个普通的最短路,除了用floyd会超时外,要注意起点终点地名相同是一个trick。代码如下:#include #include #include #include #include using namespace std;map id;const int INF = 11111111;const int N = 222;int mat[N][N];char s[44], t[44];int q[N mat[s][cur] + mat[cur][i]) { mat[s][i] = mat[s][cur] + mat[cur][i... 阅读全文
摘要:
Problem - 1789 继续贪心。经典贪心算法,如果数据比较大就要用线段树来维护了。 思路很简单,只要按照代价由大到小排序,然后靠后插入即可。RE了一次,是没想到deadline可以很大。如果deadline比任务总量要大,显然这个任务是能做的,直接加上去。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 typedef pair PII;10 typedef vector VPII;11 12 VPII rec;13 vector vis;... 阅读全文
摘要:
Problem - 1050 过两天要给12的讲贪心,于是就做一下水贪心练习练习。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 typedef pair PII;11 typedef vector VPII;12 13 multiset cor;14 multiset::iterator msi;15 VPII rec;16 VPII::iterator vi;17 18 int main() {19 int n,... 阅读全文
摘要:
Problem - 2225 一道简单数学题,要求求出一个分母不超过m的最接近sqrt(n)的分数。 做法就是暴力枚举,注意中间过程不能用浮点数比较,误差要求比较高。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 typedef long long LL;10 template T sqr(T x) { return x * x;}11 template T gcd(T a, T b) { return b ? gcd(b, a % b) : a... 阅读全文