数据结构
lengxuenong
这个作者很懒,什么都没留下…
展开
-
codevs2178 表达式运算Cuties
给出一个表达式,其中运算符仅包含+,-,*,/,^要求求出表达式的最终值数据可能会出现括号情况 还有可能出现多余括号情况数据保证不会出现>maxlongint的数据数据可能回出现负数情况输入描述 Input Description仅一行,即为表达式输出描述 Output Description仅一行,既为表达式算出的结果原创 2016-03-05 17:01:25 · 1154 阅读 · 0 评论 -
滑动窗口:P1440 求m区间内的最小值&&P1886滑动窗口
滑动窗口,单调队列,队首保持最优。与当前元素比,不优的元素对尾出队, 然后当前元素入队。过期队首元素出队。#include<iostream>#include<queue>#include<algorithm>#include<stdio.h>const int N=2e6+10,M=2147483647;struct node{i...原创 2018-08-09 19:13:35 · 238 阅读 · 0 评论 -
洛谷P1168 中位数
方法一1:用两个优先队列,一个从小到大(k+1)A,堆顶元素就是中位数;一个从大到小B。每次来两个新数,小就放B,大就放A。前面的多了向后放,后面多了向前倒。#include<cstdio>#include<iostream>#include<queue>#include<algorithm>using namespace std;i...原创 2018-08-09 19:00:51 · 349 阅读 · 0 评论 -
洛谷P1631 序列合并
序列合并,将a1b1入队,然后从当前节点aibj开始扩展,扩展到ai+1bj和aibj+1,扔到优先队列里,节点可能被重复扩展,设置数字t,存储当点ai已经扩展到哪个节点。交上去之后40分。#include<iostream>#include<set>#include<stdio.h>#include<queue> using name...原创 2018-08-09 18:44:07 · 231 阅读 · 0 评论 -
P4380 [USACO18OPEN]Multiplayer Moo
乍看题目,感觉不难写,处理图,把块变成节点,搜索,结果处理建图的时候越写越麻烦,没思路,只好抄题解了用并查集的能理解,还有的搜索写了些剪枝,不理解。就放抄的并查集题解吧。/*每个数字块是一个整体,用并查集维护大小 。给所有相邻数字块建边 ,并根据颜色排序 处理每个数字块与那些数字块相连,维护一个颜色连接着 哪些数字块。枚举处理所有相邻的数字块方案,已经根据数字值安排在一起。 */ ...原创 2018-05-28 11:28:33 · 867 阅读 · 0 评论 -
测试数据生成——树
转载:http://blog.csdn.net/fzh917/article/details/77429771#includeusing namespace std;int t;int n, m;int a, b, c, d;int random1(int mod) { if(mod == 0)return 1; return (rand() + 1) % mod转载 2017-10-13 11:26:44 · 559 阅读 · 0 评论 -
联合权值——o(n)做法
czj想了个没有存图的做法,存了每个顶点所关联顶点的权值和。例如,顶点1关联顶点a1,a2,a3;则第一条边是a1,第二次是a1*a2,第三次就是a3*(a1+a2)#include #include #include using namespace std;const int MaxN=200000;const int MOD=10007;int n;long long原创 2017-09-10 16:26:12 · 734 阅读 · 0 评论 -
poj2503查字典 -map或hash
这个题目适合做模版题map:#include#include#include#includeusing namespace std;int main(){ mapp;//两种语言的单词对应。 char a[12],b[12]; while(scanf("%s",a)) { if(getchar()=='\n')break;原创 2017-09-07 11:26:07 · 421 阅读 · 2 评论 -
洛谷 P3605 [USACO17JAN]Promotion Counting晋升者计数——树状数组,权值线段树
这个题目n^2的算法同样好想,usaco的测试数太给力啦,暴力竟然给70分。这个题目实际和上个题目类似,实际是求树上的逆序,所以将dfs序与树状数组结合起来。先将数据离散化。先做一次求值,搜索后再做一次求值,二者的差值就是这颗子树上的逆序。#include #include #includeusing namespace std;const int maxn = 1e5+10;原创 2017-06-04 15:00:08 · 836 阅读 · 0 评论 -
codevs3013单词背诵--字符串哈希,线型探测哈希
听了zhx的字符串哈希,很有收获,来一发。最省事的思路当他是map了,第一问,直接Map解决,查询M次的时间复杂度mlog(n),第二问,从左侧找出所以单词的区间,用类似滑动窗口和桶排序处理左右端点。#include#include#include#include #includeusing namespace std;const int maxm=100009;int n,原创 2016-10-10 20:38:07 · 555 阅读 · 0 评论 -
KMP,深入讲解next数组的求解
转载自:http://blog.csdn.net/u013993712/article/details/51471526前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是转载 2016-05-21 19:40:05 · 681 阅读 · 0 评论 -
洛谷P2827 蚯蚓-noip2007
先砍掉的同比例的一定比后砍掉的长,排序后分为3队,每次取最值。#include <cstdio>#include <queue>#include <algorithm>#include <cstring>#include<iostream>using namespace std;const int maxn=7e6+1...原创 2018-08-09 19:19:38 · 133 阅读 · 0 评论