03 2015 档案
摘要:原题地址位运算的状态压缩太操蛋了,很容易出错。。。又是数组没开够导致诡异现象(明明某个值是1,莫名其妙就变成0了),害我debug一整天!fuck代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_N 1024...
阅读全文
摘要:原题地址看了这篇博文,总算是把Trie图弄明白了Runtime Error了无数次,一直不知道为什么,于是写了个脚本生成了一组大数据,发现果然段错误了。调试了一下午,总算闹明白了,为什么呢?1. 空间超大的变量不要放在函数里,会爆栈,应该弄成全局变量或者是从堆上动态分配。2. 看清题目的数据范围,一...
阅读全文
摘要:原题地址并查集+路径压缩数据量不大,没有加秩优化代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define SIZE 100010 8 9 int disjoin[SIZE];10 map a2i;1...
阅读全文
摘要:原题地址超时、超内存都碰到了。。最后还是参考了这篇博文才勉强AC需要注意:1. 肯定是树而不是森林,而且树的根节点一定是第一个出现的名字,所以不需要再去找哪个是根了。这样可以节省一部分内存。2. 用并查集路径压缩的方法维护并查集结构即可,当查找的时候再压缩,不需要每次染黑节点的时候都压缩。这样可以节...
阅读全文
摘要:原题地址A和A的共同祖先是A,即使A没有在之前的家谱中出现过!被这个坑了,WA了很久。。。比如:小头爸爸是大头儿子他爹,问:隔壁王叔叔和隔壁王叔叔的最近祖先是谁?,答:隔壁王叔叔。代码: 1 #include 2 #include 3 #include 4 #include 5 6 usi...
阅读全文
摘要:原题地址第一次做树的动归题,如果没有提示的话还是挺难的提示里的递推式隐含了状态压缩(m从大往小遍历),不是那么好想,只能说不能再屌了。代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define SIZE 128 7 8 in...
阅读全文
摘要:原题地址回溯搜索对于每个待枚举的点,检查:1. 度数检查:是否违反了出度入度限制。因为生成的路径除了首尾节点外,其他节点的出度和入度只能为22. 共线检查:是否违反了共线条件。即跨越了尚未枚举过的节点对于枚举产生的路径,检查:1. 长度检查:长度是否大于等于42. 完整性检查:是否包含了片段中出现的...
阅读全文
摘要:原题地址找规律题如果首尾如果不交,那么不一样的位数就是需要变换的次数。如果首尾相交,似乎比较复杂,所以找找规律。假设字符串是这样的(上下是同一个字符串,只是为了方便描述首尾部分而分开画的),要让蓝色的首尾部分相同:因为是一个字符串,所以虚线部分相同。即,下图中红色方框部分相同。因为蓝色首尾部分相同,...
阅读全文
摘要:原题地址根据提示做即可,总感觉数据结构用的不好,以后看看大神都是怎么用数组存树的。 1 #include 2 #include 3 4 using namespace std; 5 6 struct Node { 7 int first; 8 int second; 9 bool...
阅读全文
摘要:原题地址基本二叉树操作代码: 1 #include 2 #include 3 4 using namespace std; 5 6 void restore(char *pre, char *in, int len) { 7 if (len == 0) 8 return; 9 1...
阅读全文
摘要:原题地址跟背包问题非常像,很巧妙,跟着提示做即可需要注意的是,状态压缩以后,j的变化不是规律的,所以用一个临时缓冲back保存下一次迭代的结果。代码: 1 #include 2 3 using namespace std; 4 5 int onesum(int a) { 6 int sum...
阅读全文
摘要:原题地址基本动态规划题+状态压缩看完提示反倒是不会做了。。代码: 1 #include 2 3 using namespace std; 4 5 int main() { 6 int N, M; 7 int best[500010] = {0}; 8 int value[512];...
阅读全文
摘要:原题地址经网友jokeren提醒,后面给出的代码虽然可以AC原题,但存在bug,主要是在矩形覆盖情况的判断上处理的不够完全。看似挺复杂的,但是仔细分析一下可以化简:首先,不用枚举周长,因为更长的周长总是能够围成更大的面积,所以只要考虑如何在周长为L的前提下枚举面积就行了。下图中,用蓝色线框表示跑马的...
阅读全文
摘要:原题地址一开始写了一个求交点然后算角度的,特别复杂不说,还很容易出错,WA了很久也不知道错在哪后来想想,应该用向量做四条直线能围成一个矩形 四条直线两两之间有4个平行关系,8个垂直关系注意,直线重合并不算平行代码清晰明了,一遍AC,这酸爽。代码: 1 #include 2 #include 3...
阅读全文
摘要:原题地址基本动态规划代码: 1 #include 2 3 using namespace std; 4 5 int main() { 6 int N, M; 7 int score[100010]; 8 int need[512]; 9 int value[51...
阅读全文
摘要:原题地址基本动归,题目中给的提示很有意思代码: 1 #include 2 3 using namespace std; 4 5 #define SIZE 128 6 7 int main() { 8 int n; 9 int puzzle[SIZE][SIZE];10 ...
阅读全文
摘要:原题地址看上去非常复杂, 实际上是这一系列最简单的一步,本质上是个搜索过程,相比于前一道题,可以不用策略三,而且题目的数据规模超级小,所以暴力搜索就能过。把尚未确定的点放在一个unsettled列表里,然后依次枚举每个点的情况:是地雷or不是地雷优化方案一即:每次枚举后,使用规则一、规则二对列表里剩...
阅读全文
摘要:原题地址没有复杂算法,就是麻烦,写起来细节比较多,比较考验细心,一次AC好开心。代码: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 #define SIZE 400 9...
阅读全文
摘要:代码输入窗口太小,mac下经常误操作:双指滑动浏览器后退而且输入框不会自动保存,一不小心后退一下,啥都。。都没了。。。码了好久的代码就没了。。遇到不止一次了(  ̄ .  ̄ )(゜ ロ゜;)( ̄ε(# ̄)(ノへ¯、)LeetCode就不会这样!而且LeetCode对Emacs的快捷键支持的很好(ㄒoㄒ...
阅读全文
摘要:原题地址回溯+搜索枚举每个位置上能否放地雷,当第i个位置枚举完成后,第i-1个位置的情况就确定了,此时,检查第i-1个位置是否满足要求,即左右间隔为1的范围内地雷数是否等于申明数字,如果满足条件,那么继续搜索下去,如果不满足条件,抛弃这个搜索分支。搜索完成后,将所有可行解按位置“与”一下 ,找到那些...
阅读全文
摘要:原题地址图的遍历,深度优先向来对图的数据结构就练习的比较少,这种题目还是挺好的。代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 bool dye(vector > &graph, vector &nodes...
阅读全文
摘要:原题地址限时10s,所以不用考虑什么算法了,暴力吧分别按照3x3视野的四个方向去地图上匹配,把符合的地点标记出来,最后统一按照从上到下,从左到右的顺序输出。代码: 1 #include 2 3 using namespace std; 4 5 #define MAP_SIZE 250 6 7...
阅读全文
摘要:原题地址字符串匹配+替换注意替换串和原串长度是不等的,所以替换完还要进行收缩可以顺带练习一下KMP代码: 1 #include 2 #include 3 4 using namespace std; 5 6 void kmp(char *line, int len) { 7 char p...
阅读全文
摘要:原题地址简单贪心首先,补提交卡应该连续使用,其次,补提交卡应该全部用掉(如果补提交卡多于未提交天数则额外处理)所以,依次遍历未提交日期,计算:从当前位置开始,用M张补提交卡覆盖后面连续M个数字,此时的连续提交天数。代码: 1 #include 2 3 using namespace std; 4...
阅读全文
摘要:原题地址注意题目,连续字符同时被消除,所以消除无顺序区别。纯模拟题,数据量很小,所以暴力做就行了:枚举所有可能插入的位置,每个位置再枚举插入字符想了几个优化的方案,但是估计是哪里错了,导致得出的结果是WA。后来只好乖乖用最暴力的方法AC。代码: 1 #include 2 #include 3 ...
阅读全文
摘要:原题地址这道题巧妙地利用了先前回文串的信息来减少后面的回文串计算量。比如下面的字符串(圆圈代表字符)假设已经知道了某个字符的回文串情况(曲线连接的两个圆圈代表两个相同字符)思考:这能给后面的回文串计算带来什么帮助呢?一个巴掌拍不响,看看已知两个回文串有什么效果:是不是有点意思了?为了更加直观,我们给...
阅读全文