
ACM
文章平均质量分 71
isaacfeng
这个作者很懒,什么都没留下…
展开
-
并查集练习4:HDOJ1272
并查集的应用。遇到了两个问题。开始时用简单的并查集,判断是否有重复的线,即有相同父节点的点不可以再次连接。这种想法未考虑全连接的条件。即出现(1,2,3)(4,5)虽无圈但是未全连接。加上全连接的条件,即在满足无循环的情况下,点的个数等于连接+1。并且要加上没有输入点的情况也输出yes。几经周折,AC的比较不容易。#include using namespace s原创 2017-04-28 14:24:31 · 258 阅读 · 0 评论 -
并查集练习2:HDOJ1232
建立权重并查集,水过。可以直接写while(cin >> N),感觉比C的!EOF好用。#include using namespace std;int findroot(int a) ;void unionroot(int a, int b) ;int city[1005] ;int weight[1005] ;int main(){ int N = 0 ,M原创 2017-04-27 15:21:17 · 224 阅读 · 0 评论 -
并查集练习1:HDOJ1213
基础的并查集练习,可以水过。quick find :直接循环改数,时间复杂度为N方。#include using namespace std;int id[1005] ;void unionroot(int a, int b, int N );int main(){ int T=0 ; cin >> T ; while(T--) {原创 2017-04-21 19:17:52 · 243 阅读 · 0 评论 -
排序练习1:HDOJ 2561 几种简单排序
昨天晚上看了一个各种排序效果的视频,很有趣。http://www.bilibili.com/video/av685670/所以今天想先试一下各种排序的实现。选择排序:在未排序的部分找到最小的,跟未排序最前面的三交换;插入排序:假设左边的都已经排好,从右向左依次交换寻找合适的位置;希尔排序:针对插入排序每次只向前移动一个位置的问题,利用h-sort,每次排序基于之前的排序,从而只需要原创 2017-04-30 14:09:11 · 418 阅读 · 0 评论 -
堆栈练习3:HDOJ1022
同样的跑火车问题,这次改变了循环停止的条件,使用了我之前就一直想用的2*N次循环,发现果然是可以的。顺利的1A很开心。利用栈模拟车站,利用队列记录进出站的顺序,代码会比较高效。#include #include#include#includeusing namespace std;int main(){ int N ; int pointin, poin原创 2017-04-29 15:23:41 · 487 阅读 · 0 评论 -
队列练习1 : HDOJ1276
简单模拟,用了两个队列会比较清晰。输出的时候格式需要稍微注意一下。最坑的是n等于1,2,3的时候也需要考虑,这个bug纠结了一中午。以后举例子的时候一定不要想当然,,从最小的数字开始试验才是最吼的。#include #include using namespace std;queue q1, q2 ;int main(){ int N, key; in原创 2017-04-29 13:17:18 · 303 阅读 · 0 评论 -
C++中STL的堆栈和序列的用法
使用C++的STL容器可以避免重复造轮子,几年前就想学一下了,拖到现在也是很迷。其实用法简单的很,这里记录一下关键字。#include #includeusing namespace std;int main(){ stack s; s.push(1); s.push(2); while(s.empty()!=true) {原创 2017-04-28 16:41:20 · 414 阅读 · 0 评论 -
堆栈练习2:HDOJ1870
首先是cin读取字符串。之后按照括号匹配压栈弹栈就好了。最后输出栈的大小。#include #include#include#includeusing namespace std;char in[1005] ;int main(){ int len = 0 ; stack s ; while(cin >> in) {原创 2017-04-28 21:51:22 · 246 阅读 · 0 评论 -
堆栈练习1:POJ1363
火车进站出站问题。五年前的一个不会写的作业。使用了STL,实际上并不必要,但是为了试一下。开始的时候对于停止条件想的不是很清楚,后来发现放进去之前先试着查一下top,并且要保证栈非空的情况下。后来交题的时候遇到了很玄学的问题,对于memset(B,0,sizeof(B));真的不理解。sizeof(int)就WA了,不加这句话也会WA,但是我觉得这句话并没有什么意义啊。这是个问题,原创 2017-04-28 20:50:24 · 378 阅读 · 0 评论 -
并查集练习3:HDOJ4496 WA
考虑的问题是动态删除连接。如果多次建并查集,时间复杂度太高了,考虑如何只建立一次。或者也可以反向进行建立,然后存起来,再反向输出。但是这样也要存输入的数据。所以尝试逆序进行。结果不正确:#include #include using namespace std;int findroot(int a) ;void unionroot(int a, int b) ;i原创 2017-04-27 16:46:32 · 264 阅读 · 0 评论