04 2015 档案

摘要:原题地址不知道为什么要用动态规划做,明明是扫几遍就行了啊HackerRank上的题目特别喜欢long long类型啊,不用就爆。。代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std... 阅读全文
posted @ 2015-04-30 00:05 李舜阳 阅读(370) 评论(0) 推荐(0)
摘要:原题地址LeetCode上也有这道题,直接扫一遍就行了,连数组都不用开,感觉像是蕴含了某种动归的思想在里面,要不怎么是个动归题呢代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std;... 阅读全文
posted @ 2015-04-29 23:37 李舜阳 阅读(291) 评论(0) 推荐(0)
摘要:原题地址背包问题,没啥好说的,记得用long long,否则会爆代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 #define MAX_N ... 阅读全文
posted @ 2015-04-29 22:54 李舜阳 阅读(582) 评论(0) 推荐(0)
摘要:原题地址对于给定的两个约束条件,可以通过联立方程组直接解出子序列A的和和子序列B的和,即sum(A) = (r + s) / 2,sum(B) = (r - s) / 2,假设|A|=|B|=n所以问题变成了,在一个数组中求长度为n且子序列和为sum(A)或sum(B)有多少个。假设count(n,... 阅读全文
posted @ 2015-04-29 00:03 李舜阳 阅读(731) 评论(0) 推荐(0)
摘要:原题地址list+map可以轻松搞定,如果不借助STL实现起来还是挺麻烦的代码: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 int N, M; 9 map::iterator> rec... 阅读全文
posted @ 2015-04-13 21:09 李舜阳 阅读(415) 评论(0) 推荐(0)
摘要:原题地址又是一道WA成狗的题,最后发现原来是结果溢出了。。代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_N 100008 7 8 int N; 9 long long a[MAX_N];10 long ... 阅读全文
posted @ 2015-04-10 23:08 李舜阳 阅读(260) 评论(0) 推荐(0)
摘要:原题地址挺简单一道题,结果因为一时傻逼写错一个小地方,导致WA成狗了_(:з」∠)_代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAX_V 10008 8 #define MAX_E 2... 阅读全文
posted @ 2015-04-10 22:10 李舜阳 阅读(305) 评论(0) 推荐(0)
摘要:原题地址经典问题了,O(n)时间内找第k大的数代码: 1 #include 2 3 using namespace std; 4 5 int N, K; 6 int *a; 7 8 int search(int left, int right, int k) { 9 if (left >... 阅读全文
posted @ 2015-04-09 22:57 李舜阳 阅读(226) 评论(0) 推荐(0)
摘要:原题地址一开始没搞懂题目是想干什么,于是写了一个扫一遍的代码,A了,如下:代码: 1 #include 2 3 using namespace std; 4 5 int main() { 6 int N, K, a; 7 bool found = false; 8 int lt =... 阅读全文
posted @ 2015-04-09 21:25 李舜阳 阅读(383) 评论(0) 推荐(0)
摘要:原题地址主要是介绍了两个定理:1. 二分图最大匹配数 = 二分图最小点覆盖数2. 二分图最小点覆盖数 = 二分图顶点数 - 二分图最小点覆盖数注意,都是二分图代码:(匈牙利算法) 1 #include 2 #include 3 4 using namespace std; 5 6 #def... 阅读全文
posted @ 2015-04-09 20:57 李舜阳 阅读(170) 评论(0) 推荐(0)
摘要:原题地址只能说匈牙利算法不能更屌,而且提示里给的伪码也不能更屌了!只用了第二个优化,因为将输入点集分割成A、B似乎挺麻烦的,索性就没用这个优化。代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_VERTEX ... 阅读全文
posted @ 2015-04-07 22:49 李舜阳 阅读(147) 评论(0) 推荐(0)
摘要:原题地址有没有更优雅地堆模板啊,总感觉我写的有些啰嗦代码: 1 #include 2 3 using namespace std; 4 5 #define MAX_NODE 100008 6 7 struct Heap { 8 int core[MAX_NODE]; 9 int si... 阅读全文
posted @ 2015-04-07 20:50 李舜阳 阅读(263) 评论(0) 推荐(0)
摘要:原题地址坑了我好久。。。提交总是WA,找了个AC代码,然后做同步随机数据diff测试,结果发现数据量小的时候,测试几十万组随机数据都没问题,但是数据量大了以后就会不同,思前想后就是不知道算法写得有什么问题,因为本来就没什么复杂的地方嘛!后来,突然灵机一动,莫非又是数组开小了?突然意识到,我是用数组保... 阅读全文
posted @ 2015-04-06 23:58 李舜阳 阅读(1051) 评论(0) 推荐(0)
摘要:原题地址以前没写过Kruscal算法,写了才知道原来比Prime算法简单多了。。。并查集的应用太经典了!代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_EDGE 1000008 7 #define MAX_... 阅读全文
posted @ 2015-04-06 21:10 李舜阳 阅读(262) 评论(0) 推荐(0)
摘要:原题地址Prime算法,每次挑选一个距离原点最近的节点,然后收缩(visited为true,设置该点到原点的距离为0)注意:虽然Prime算法跟Dijkstra很像,但两者还是不一样的。因为Dijkstra算法每次在挑选节点后不会收缩,所以,用Dijkstra挑选的边并不一定是最小生成树。比如下面这... 阅读全文
posted @ 2015-04-06 20:37 李舜阳 阅读(466) 评论(0) 推荐(0)
摘要:原题地址宽搜+剪枝,不是说好了适用于稀疏矩阵的嘛,怎么题目的测试数据边数达到10^6。。。不科学代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAX_POINT 100008 8 #def... 阅读全文
posted @ 2015-04-06 20:17 李舜阳 阅读(269) 评论(0) 推荐(0)
摘要:原题地址感觉Floyd算法比Dijkstra还要简单。。唯一需要注意的是,初始的距离默认值不要设过大,否则溢出就不好了,根据题意,只要大于10^3即可代码: 1 #include 2 #include 3 4 using namespace std; 5 6 #define MAX_POIN... 阅读全文
posted @ 2015-04-06 20:15 李舜阳 阅读(389) 评论(0) 推荐(0)
摘要:原题地址Dijkstra算法,甚至都不用优化(堆或优先队列)即可过代码: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 #define MAX_POINT 1024 9 #define M... 阅读全文
posted @ 2015-04-06 20:13 李舜阳 阅读(627) 评论(0) 推荐(0)
摘要:原先的Github pages貌似在国内被墙了,导致搜索引擎一直没有索引到,今天一怒之下迁到Gitcafe虽然之前的模板用不成,害我重新找了一套,改了好半天,不过总算弄完了😊新博客主要会放一些杂七杂八的东西,以后慢慢会那里迁移,这个博客也一直会使用,主要是放一些刷题的总结欢迎前去围观--->这里 阅读全文
posted @ 2015-04-02 14:24 李舜阳 阅读(123) 评论(0) 推荐(0)
摘要:原题地址提示给的伪代码非常赞👍,按照提示做,难度为0代码写的偏工程风,果然冗长了许多_(:з」∠)_代码: 1 #include 2 3 using namespace std; 4 5 #define MAX_NODE 100008 6 7 struct TreeNode ... 阅读全文
posted @ 2015-04-01 22:34 李舜阳 阅读(211) 评论(0) 推荐(0)
摘要:原题地址终于做到线段树的题了,因为建树、更新、查询都是递归操作,所以其实挺好写的。用数组存的树,记得MAX_NODE开成两倍叶节点数大小,否则RE啊。。不要问我是怎么知道的。代码: 1 #include 2 #include 3 using namespace std; 4 5 #d... 阅读全文
posted @ 2015-04-01 20:19 李舜阳 阅读(243) 评论(0) 推荐(0)
摘要:原题地址模拟题,naive算法即可过,想着顺便练习一下ST吧,结果还超时了。。。看来ST真不适合处理动态修改的问题,连naive算法的效率都不如。超时的ST代码: 1 #include 2 3 using namespace std; 4 5 #define MAX_NODE 10008 6 ... 阅读全文
posted @ 2015-04-01 14:39 李舜阳 阅读(200) 评论(0) 推荐(0)
摘要:原题地址根据提示用Spase Table做将Tree先展成List,因为数组长度等于边数的2倍,树中边数等于节点数-1,所以List数组只要开2倍节点数大小即可WA了几次,原来是查询的时候出现左边界大于右边界的情况,所以这种情况要颠倒一下代码: 1 #include 2 #include 3 #... 阅读全文
posted @ 2015-04-01 09:58 李舜阳 阅读(235) 评论(0) 推荐(0)
摘要:原题地址Spare Table练习记得用scanf和printf输入输出,否则会TLE代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAX_SIZE 1000010 8 9 int N,... 阅读全文
posted @ 2015-04-01 09:54 李舜阳 阅读(189) 评论(0) 推荐(0)