数据结构
文章平均质量分 88
凉秋girl
保持学习应该是最难的一件事吧?
展开
-
链表<list>的增删查等操作
list的简单使用,lista1;a1.insert(a1.begin(),6)//向开头添入6a1.insert(a1.end(),5)//向结尾添入5a1.pop_fron()t or a1.pop_back()a1.reverse() //意为反转链表a1.earse() or a1.remove() #include #include using原创 2016-11-10 11:01:58 · 277 阅读 · 0 评论 -
xdoj关于spj特判问题
SPJ#include &lt;stdio.h&gt;#include &lt;math.h&gt;#define PI acos(-1.0)#define AC 0#define WA 1#define maxn 105int res_in[maxn];int main(int argc,char *args[]){ FILE * f_in=fopen(args[1...原创 2018-05-06 00:19:23 · 472 阅读 · 0 评论 -
2018zoj省赛(太菜了,写dp的人怎么都A不了dp题
M、A、B、L签到不说。 题目链接: 2018浙江acm省赛D Sequence Swapping(据说经典模型,做了a才能去做b求最大价值的dp模型题意:开始的时候读错题意了(我真的是太菜了,学这么多dp,可是都不熟练,啥题都A不掉,菜啊。给一个仅由’(‘与’)’组成的字符串,只有()相连的时候才可以对调位置,每个符号都有其价值,每次移动价值为a[i]*a[i+1],问可以获得的...原创 2018-05-01 19:46:54 · 301 阅读 · 0 评论 -
set容器的set_unition(并集),set_intersection(交集),set_difference(差集)
set_unition(并集),set_intersection(交集),set_difference(差集) 3 个函数的写法set_??(a.begin(),a.end(),b.begin(),b.end(),inserter(x,x.begin());#include#include#include #include using namespace std;int ma原创 2016-11-09 20:33:16 · 6031 阅读 · 3 评论 -
顺序二叉树链表实现<模版>
花了一整天的时间琢磨,算是明白一点指针的使用了输入样例:2120 10 30 5 15 25 35 3 6 11 28 2 7 27 29 8 9 40 33 34 26这是一个二叉顺序树用链表实现,然后添加与删除根据函数来。代码:#include #include using namespace std;struct tree{ int data; tree原创 2016-12-19 23:00:17 · 349 阅读 · 0 评论 -
求有向图的强连通分量<Tarjan>
概念:有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。过程:对于该图,刚1原创 2016-12-17 10:26:23 · 512 阅读 · 0 评论 -
ccf 游戏 <BFS+队列剪枝方法>
the reason of failure:1、超时小技巧:就是卡时间,数据小,通过剪枝。201604-4试题名称:游戏时间限制:1.0s内存限制:256.0MB问题描述:问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制的角色开始的时候站在第一行原创 2016-12-14 21:24:17 · 302 阅读 · 0 评论 -
八数码问题<set的使用>bfs
the reason of failure:1、如何对0进行上下左右移动用pos找到0在数组中的下标可以定义dr[]={0,1,0,-1};dc[]={1,0,-1,0}.然后一个for4次的循环,r=pos/3+dr c=pos%3+dc便能实现上下左右的移动2、对于储存状态与查找,可以把数组存入set然后查找。题意八数码问题。编号为1~8的8个正方形滑块被摆成3行3列(原创 2016-12-11 17:43:35 · 614 阅读 · 0 评论 -
hash的简单使用<找数字>
thinking:1、用一个数组存储出现过的数字,刚开下下标为1(可以思考为什么下标刚开始不能为0)。2、相同数对一个数取mod的值是固定的,通过这么mod出来的值作为关键字去查找是否存在。如先插入6 15 20 15,6 mod 7= 6,然后通过6查找之前是否有mod 后结果是 6 的数,没有,则把其下标也就是1 作为 head[6] 然后插入15 通过 15 mod 7 = 6原创 2016-12-12 09:52:21 · 305 阅读 · 0 评论 -
单源最短路径<队列><可以返回再找>
通过队列的方式。求10-1的距离先把到1的距离变为0然后一个个找离1近的点 f[2]=14 f[3]=2 f[4]=1然后找分别离他们近的点 f[5]=f[2]+1 f[6]=f[2]+3 f[6]之前的f[6]小 则 f[6]=f[3]+3 f[10]=f[4]+89然后从被新添加的开始 f[5] f[6] f[10]开始 然后从6到2发现 更小 那么f[2]更新原创 2016-11-18 17:02:42 · 207 阅读 · 0 评论 -
优先队列 <priority_queue>
关于优先队列的学习#include #include #include using namespace std;struct cmp1{ //按从小到大的排序 bool operator ()(int &a,int &b){ return a>b; }}; int main(){ int i; priority_queuequ原创 2016-11-18 11:48:35 · 208 阅读 · 0 评论 -
UVa11988 <list>的简单使用
关于list在中间链表插入的方法通过把pos=str1.begin();的方法使用完迭代回向后一位,然后再是输入这个位子,迭代则自动又向后一位,这样就实现了从begin()开始向右边插入数据的方法#include #include using namespace std;int main(){ freopen("in.txt","r",stdin); freopen("out原创 2016-11-10 18:32:09 · 391 阅读 · 0 评论 -
分块入门题
分块入门题5:给[L,R]取开方,一个数字最多被取开方6次,那么一个块内有需要开方的时候才对这个块取开方,那么最多6*n*sqrt(n)次,分块直接写#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5+7;int l[5500],r[5500],belon...原创 2018-10-18 20:27:47 · 413 阅读 · 0 评论