c++
Leo_xh
忍把浮名,换了浅吟低唱
展开
-
关于对include包含类声明或定义的文件的一些总结
关于对include包含类声明或定义的文件的一些总结 最近做了Matrix上的一道题目,有了两个疑惑,在查看文档以及论坛之后,解决了这两个问题,在此记录下来。 先将代码抽象出来(具体的代码不重要,所以知识模拟一下问题)//class.cppclass sample{private: int data;public: void function();};voi原创 2017-04-14 21:02:01 · 463 阅读 · 0 评论 -
POJ 虫子的生活 解题报告 (种类并查集)
POJ 虫子的生活 解题报告题目链接: http://dsalgo.openjudge.cn/tree/10/ 思路: 这种涉及到多个类别(在这里的意思是产生过相互关系的虫子),和少量集合(这里指性别)的题目,我想到的是使用并查集,但是基础的并查集并不能解决这种问题,因为这里有两种类(类别和集合),应该使用升级版的种类并查集。 种类并查集的两个要点是: 1. 处理集合 2. 更新集合我把实原创 2017-12-13 20:08:44 · 1702 阅读 · 0 评论 -
Poj 食物链 解题报告 (种类并查集)
题目链接:http://dsalgo.openjudge.cn/tree/5/ 种类并查集,思路以及细节在代码和注释中。#include <cstdio>const int MAXN = 50010;int fake; //记录假话个数int Set[MAXN]; //并查集的父节点int relaWithFarther[MAXN]; //0 同类,1吃,2被吃,由这样的定义可知相反关系计算方原创 2017-12-15 00:19:00 · 291 阅读 · 0 评论 -
Poj Tree Grafting 解题报告 (左儿子右兄弟)
题目链接:http://dsalgo.openjudge.cn/tree/7/ 借着一题来总结一下多叉树和二叉树的关系:多叉树和二叉树是等价的。 如果使用在一个节点内保存的是指向第一个儿子(为了方便加上最后一个儿子也是极好的)和兄弟的指针的方法维护一棵树,那么棵树是多叉树还是二叉树全在乎遍历的方式。如图所示: 将右边的兄弟作为儿子节点来看,这就是一颗二叉树(左儿子右兄弟表示法) 对于这道原创 2017-12-15 13:23:10 · 1229 阅读 · 0 评论 -
Poj 地震之后(朱-刘算法,亦称Edmond Algorithm) 解题报告
题目链接:http://dsalgo.openjudge.cn/graph/6/ 这是我少数几次看见以中国人的名字命名的算法(当然影响最深刻的是中国剩余定理),将我的理解记录如下: 朱-刘算法(Edmond algorithm) 首先,说明定义: G=<V,E>G=<V,E>是一个有向赋权图。 树形图指的是一个能包含G中所有节点的有向有根树。 最小原创 2017-12-22 12:45:12 · 1011 阅读 · 0 评论 -
Poj Window Pains (拓扑排序) 解题报告
题目链接:http://dsalgo.openjudge.cn/graph/3/ 这道题从思路上讲是一道简单的拓扑排序判断是否存在回路问题,因为如果是正常的屏幕,不会出现几个窗口相互覆盖的情况,比如窗口1覆盖了窗口2,那么窗口2不可能覆盖窗口1。 难点在于细节的处理,就是建图的过程如何处理,我采用的方法是先构造一个表,记录屏幕的每一个位置可能会有哪些窗口占用(最多4个),然后就可以得到节点间关系原创 2017-12-21 00:20:52 · 264 阅读 · 0 评论 -
Poj Jungle Road (优先队列Prim算法) 解题报告
题目链接:http://dsalgo.openjudge.cn/graph/2/ 最小生成树算法,这是我第一次用优先队列实现Prim算法,记录一下 裸奔版#include <iostream>#include <queue>using namespace std;const int MAXN = 30;const int INF = 1 << 20;int lowest[MAXN]; /原创 2017-12-20 10:37:34 · 260 阅读 · 0 评论 -
Poj Pre-Post-erous!
题目链接:http://dsalgo.openjudge.cn/tree/1/我们知道只通过前序和后序遍历的结果是不能确定一棵树(此处的树的定义对于孩子的相互位置关系有要求)的,因为如果一m叉棵树的某一个节点孩子个数为n,其孩子的排列在满足前后顺序的前提下有C(m,n)(组合数)种情况。所以采用递归的方式分别计算每一棵孩子树的可能数,根据乘法原理相乘,在乘上在该层的可能数,即可得到一棵子树的可能数。原创 2017-12-09 20:27:42 · 373 阅读 · 0 评论 -
设置IO缓存区
有一次见到过设置IO缓存区大小的代码,百思不得其解,网上也没找到说明这一个骚操作的,弄明白后在此记录。//设置缓存区大小const int SZ = 1<<21; struct fastio{ //fast io char inbuf[SZ]; char outbuf[SZ]; fastio(){ setvbuf(stdin,inbuf原创 2017-07-26 16:32:23 · 2003 阅读 · 1 评论 -
POJ 2121 English-Number Translator (散列)
Inglish-Number Translator原创 2017-08-16 10:37:23 · 665 阅读 · 0 评论 -
POJ 1961 Period (KMP)
POJ 1961 Period原创 2017-08-16 18:26:07 · 220 阅读 · 0 评论 -
POJ 2823 Sliding Window (单调队列)
POJ 2823原创 2017-08-16 17:55:47 · 213 阅读 · 0 评论 -
函数优先级
函数优先级函数调用过程列出所有名字与要调用的函数相同的函数。汇总出有正确数目与类型的参数的函数(允许隐式转换)决定最优函数,调用它,如果没有,即没有匹配的函数或匹配的函数分不出优劣,报错如何决定最佳可行函数(从上到下优先级递减)准确匹配整型提升转换,e.g. char to int, float to double标准(算术)转换,e.g. int to char,long to dou原创 2017-06-28 11:17:59 · 2306 阅读 · 0 评论 -
C++类型转换
c++类型转换const_cast 只能用来将low-level(对象本身是const)的指针、引用的const去除,如果同时进行了类型的转换,则报错。 同时,如果我们对一个const_cast之后的原本是const的对象进行写操作,则结果是不确定的。dynamic_cast 用来进行基类与派生类的指针之间的转换,其中的类必须有虚函数,当类没有虚函原创 2017-06-28 11:18:37 · 199 阅读 · 0 评论 -
Poj 败方树 解题报告
题目链接:http://dsalgo.openjudge.cn/extsortexec/2/ 题目是一个败方树的模板题。借此总结一下败方树的基本知识。(我的知识来自北京大学数据结构与算法mooc,网址:http://www.chinesemooc.org/mooc/4435,符号表示也控制的一致,方便读者理解)败方树的内部节点记录着比赛的败者在数据数组中的索引(除了0号结点保存这最优者索引),用胜原创 2018-01-03 20:48:21 · 747 阅读 · 1 评论