自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gqe

代码破万G,考试如图灵

  • 博客(65)
  • 收藏
  • 关注

原创 Noi2016 D1 T1 优秀的拆分 90做法

欢迎访问博客 oi.self-jqe.win题目大意:如果一个字符串可以被拆分为 AABBAABB 的形式,其中 AA 和 BB 是任意非空字符串,则我们称该字符串的这种拆分是优秀的。例如,对于字符串 aabaabaa,如果令 A=aabA=aab,B=aB=a,我们就找到了这个字符串拆分成 AABBAABB 的一种方式。一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆

2017-02-12 12:01:04 785

原创 wc2017心路历程

欢迎访问我的另外一个博客 oi.self-jqe.win作为一位蒟蒻,在弱省混进了神犇云集的WC。大概上课讲的内容,与OI相关的大多数只能听懂百页PPT的前几页,与OI无关的大概听得能舒服些,一是很多时候无需细想,理解意思开阔眼界就好,或者是内容比较符合平时喜欢的硬件知识,兴趣多了不少。睡意朦胧中坐着飞机到了杭州萧山国际机场,天气跟大连比起来还是暖和了些许。见到了举着牌子的志愿者,亦或

2017-02-12 11:44:35 1252

原创 FFT学习笔记(DFT,IDFT)

昨天参悟了一天FFT,总算是理解了,今天的莫比乌斯反演也不太懂,干脆弃疗,决定来认真水一发博客。什么是FFT?FFT(Fast Fourier Transformation),即为快速傅氏变换,是离散傅氏变换(DFT)的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。FFT的作用?主要用于加速多项式乘法(形如an x^n + a(n -

2017-01-14 11:32:03 34761 3

原创 POJ 3180 The Cow Prom 强连通分量

题目链接:http://poj.org/problem?id=3180一句话题面:求出图中元素个数≥2的强连通分量个数。题解:我们先强连通缩点,然后貌似找出元素个数大于2的就好了。AC代码:#include #include #include using namespace std;stack dl;const int MAXN = 150000;int head

2017-01-01 14:49:22 424

原创 POJ1236 强连通分量

题目链接:http://poj.org/problem?id=1236题目大意:N(2大概算法:我们可以先进行缩点求出dag图,然后我们考虑第一个问题,求最少发几套软件可以全覆盖,首先题意已经保证了是联通的。然后我们可以想,如果我们把所有没有入边的点都放上软件,是一定可行的。有入边的一定会通过一些边最终从一定有出边的发放软件的地方获得软件。然后我们考虑第二个问题。这是一

2017-01-01 14:40:30 1964

原创 POJ2186 Popular Cows 强连通分量

题目链接:http://poj.org/problem?id=2186今天复习一下图论强连通,到poj上找到裸题,刷着玩一下,顺便水篇博客。大概就是强连通缩一下点,然后我们看一下,缩点后的点如果有多个出度为0,则不存在,否则的话唯一一个出度为零的即为所求。#include #include #include using namespace std;stack dl;cons

2017-01-01 13:58:36 295 1

原创 数据结构 平衡树treap

最近闲来无事,就研究了下平衡树,写了个treap,最后搞出了数组模拟的版本,(宝宝真的不喜欢指针),大概就是这样子,写篇博客记录一下。我们考虑一颗搜索二叉树,如果int s[siz][2], v[siz], pri[siz], tot, root;int cmp(int a, int b){ if(v[a] == b) return -1; return v[a] <

2016-12-24 16:10:34 438

原创 STL map简洁教程

最近尝试通过迭代器反向遍历map,然后就鬼畜了,发现自己map还有一些细节不太了解,所以来写篇博客。MAP是什么?MAP提供一对一的下标访问。举一个简单的例子,加入你有用数组记录一些东西,个数很少,但是下标可能会非常大,比如10^15,所以我们此时使用传统数组是不合适的,我们可以轻松的通过map[10^15],来完成操作。如何创建一个MAP?map mapStudent;比如上

2016-12-17 12:51:27 302

原创 算法 SG函数

昨天我们省的大神犇xys大佬,要跟我玩一个小游戏,大概是有几个数,每次你可以选择一个,减去某个值,最后到谁这些数都被减成0,谁就输。很不巧,我一眼就看穿了这是一个先手必胜的游戏,然后我选了先手,然后……我记错了必胜策略,然后就在大佬的微笑中输掉了比赛……据说这个SG函数的证明过程比较复杂,我就大概会先写一下,他是啥,怎么做,就不去证明了。我们定义必输的局面的SG函数值为0,

2016-12-16 17:53:46 1051

原创 算法 AC自动机

这篇博客拖了好久好久,真是尴尬,原因大概是我感觉很多东西,都是直觉,有种只可意会不可言传的味道,想完全搞懂,但后来仔细想想,ac自动机好像本来就不是一个非常非常确定的算法,比如说,我该拿觉很多情况可以把算法卡成n^2。所以拖了很久,酱紫。 先谈谈AC自动机是什么。我们知道KMP,可以快速的对一个字符串,用一个模板进行匹配。然而当我们有多个模板的时候,再去重复的使用KMP算法就显得不

2016-12-13 19:21:48 246

原创 NOIP2016 的一些记录

第一次NOIP,也是最后一次,在某(ju ruo)省还是应该水到了一等奖,大概记录一下,自己考试的一点状态和感受和吐嘈。首先,酒店据说是准4星,然后,嗯。厕所门关不上,沙发是歪的,电源插排坏了一次,wifi几乎不可用,窗把手断了一半,卫生间纸抽是送的,床头按钮一大堆不好使,没有灯暖,恩,然后不接着吐嘈了,嘈点太多,,,,,(感觉身体被掏空)。然后吐嘈一下,去考场还要坐大巴,试完机,回来的时

2016-12-03 15:04:56 592 1

原创 算法 tire树

打算学AC自动机,但思来想去,先学习一下tire树更加合适。tire数是用一棵树来表示一个字符串,从跟节点,到某个字符串结束的节点,经过的路径,就是这个字符串,这样子我们可以比较高效的查找,在tire数内是否有一个字符串。先放出我的模板:struct tire{ int tot,root,child[max_node][max_char],sum; bool vis[

2016-12-03 14:39:17 998

原创 算法 KMP

恩,学完后缀数组,干脆想把AC自动机也给学了,然后发现貌似需要KMP的基础,于是打算顺便复习一下,顺便写个博客,增加下浏览量。KMP算法是什么,顾名思义(看毛片,大家都会吧,,,感觉黄段子乖乖的,好羞涩,)是K,M,P三个人几乎同时发现的一种线性字符串匹配算法。说白了就是一个比较短的a串和一个比较长的b串,让你看a串能否匹配于b串的某一个位置。传统的方法,就是n^2暴力匹配,虽然在随机数据

2016-12-03 14:32:01 348

原创 算法 后缀数组

考完了NOIP,虽然D2脑子进水,然而还是目测水到了一等奖,避免了GG。也是时候开启一些新的算法了。思来想去,还是搞一下后缀数组吧。先简单说明后缀数组,是啥。字符串后缀知道吧。数组知道吧。后缀数组就是在将一个字符串的所有后缀按照常见的字典序排法,排一下。显然我们可以用stdsort来进行非常暴力的排序,然而复杂度为n^2logn,这并不优美。我们需要找到一种更高效的算法,有两种,一种是倍增,一

2016-11-30 20:01:14 347

原创 linux 对拍

#!/bin/bashwhile true; do./t > t.in./a a.out./b b.outdiff a.out b.out > /dev/nullif [ $? -ne 0 ]; then break; fidone然后在终端内 sh dp.sh即可对拍

2016-11-17 18:02:19 701

原创 NOIP2013 花匠 解题报告(贪心)

在线评测:http://codevs.cn/problem/3289/整体思路:首先这道题可以用DP模仿最长上升子序列得到80分,然后我们来考虑一下正解应该怎么写。题意可以简化为选择尽可能多的花组成一个波浪型,然后我们我考虑,在每一个波峰上,在不影响后续的情况下,选取尽可能大的情况最顶最优。在波谷上,在不影响后续的情况下,选取尽可能小的情况也一定最优秀。因为尽可能大/小,我

2016-10-01 14:46:05 1248

原创 NOIP2013 积木大赛 解题报告(贪心)

在线评测:http://codevs.cn/problem/3288/整体思路:首先我们看一下,题面,用最小的步数把积木建成,再一看数据,显然是贪心才能AC,积木怎么搭最优,很多人的思路一下子就被引到了每一行每一次尽可能多放积木块这个思路上了,然后就跑偏了。后来想了想,横着想想不通,就竖着想,我们考虑一下,如果右侧的那一列比左侧的这一列高,显然我们需要放一些积木来满足右侧的

2016-10-01 11:54:12 4227

原创 NOIP2013 货车运输 解题报告(最大生成树+倍增lca)

在线评测:http://codevs.cn/problem/3287/整体思路:我们先看一下题,题中需要使道路上的边的最小值尽可能的大,而且并不关心距离之类的东西,保证尽可能的联通即可,所以我们来最大生成树。然后我们想一下,如在在一棵树上快速的求出两点间的路径的最小值,我们可以利用倍增lca来求,至于判断联通,则可以看两点的尽可能大的源点是否为同一个点,若不是,则不联通。

2016-10-01 11:00:13 1068

原创 算法总结之欧拉回路

欧拉回路的作用:在一张有向或无向图中求出一笔画问题的具体画法。模板题:http://uoj.ac/problem/117算法:首先我们考虑如何判定这个图是否为欧拉回路这时候我们对于有向图和无向图有不同的判定方法。对于有向图,保证每个点的入度等于出度。对于无向图,保证每个点的度数为偶数。通常我们判断图是否联通,是在求欧拉回路(见下文)的

2016-10-01 08:13:08 6863

原创 NOIP2013 火柴排队 解题报告(贪心+逆序对)

在线评测:http://codevs.cn/problem/3286/整体思路:首先我们先看一下题,在什么情况下总和是最小的呢,我们凭借男人的直觉发现,如果两个序列都排一下序,那么这样是最小的,这个很容易通过列几个未知量来进行证明,好,我们找到了如何使距离最小。然而我门怎么求最小交换步数呢,我们可以通过几次排序,求出a序列中每一个数,与这个数配对的数在b序列中的位置。然后我

2016-09-15 11:58:06 2862 1

原创 NOIP2013 转圈游戏 解题报告(快速幂)

在线评测:http://codevs.cn/problem/3285/整体思路:这道题是我做了这么多年的noipD1T1唯一感觉不算水题的题,开始一看这题被吓到了,数据都分的有模有样,我还以为是把T3换到了T1的位置,后来仔细看了看,快速幂取模不就好了么,我们可以推出答案是这个(x + 10^k*m) %n 然后根据取模的性质,在快速幂里面取模就行了,正确性显而易见,代码只

2016-09-11 12:43:20 1982

原创 数据结构总结之线段树

#include #include #include #include using namespace std;const int n = 10000;struct lx{int l,r,data,lazy;};lx xds[n];int sz[n];void build(int l,int r ,int k)//建造一棵区间为l-r的线段树 {

2016-09-10 18:34:23 347

原创 NOI 2001 食物链 解题报告 (并查集)

在线评测:http://codevs.cn/problem/1074/整体思路:做了关押罪犯和这道题,感觉对并查集有了更深刻的理解,并查集是什么,是用来维护关系的,并没有字面的集合意思那么简单。这道题我们知道有三种生物,互相吃,那么我们怎么去维护这个关系呢,仔细想想可以发现,我们可以对于每个编号生物3个状态,分别表示他是A,B,C。这里用到一个小技巧

2016-09-10 16:32:29 484

原创 codevs 1001 舒适的路线 解题报告 (枚举+并查集)

在线评测:http://codevs.cn/problem/3027/整体思路:我们可以先把边排序,然后我们想一下,我们要求一条路,这条路上的最大值和最小值的比值最小,那么显然,我们应该是最大值一定的情况下,最小值尽可能的大。所以我们排完序之后,我们从长边到短边开始枚举最大边,然后我们从这条边开始往下枚举,每次把边的两点联通,然后判断起点终点是否联通,如果联

2016-09-10 16:03:50 837 1

原创 NOIP2014 解方程 解题报告(取模运算+秦九韶定理)

在线评测:http://codevs.cn/problem/3732/整体思路:我们看一下数据,一言不合就上10000次方,显然高精度也是不合适的,显然在把我们向非完美算法引导,所以我们想一下,这种情况下你不取模还干啥,所以果断把系数高精度取模一个素数,然后我们来想一下,然后呢,我们考虑一下如果我们对于一个方程的系数取模一个数,实际上大多数情况下如果运算符合,他都是正确的,

2016-09-10 14:24:03 934

原创 NOIP2014 寻找道路 解题报告(dfs+bfs)

在线评测:http://codevs.cn/problem/3731/整体思路:先从(在反向图中)终点dfs一遍,然后所有能到达在dfs中没有搜到的点也标记为不可用,然后正向bfs跑最短路就行,失误之处:最开始从起点开始bfs判断哪些点不可用,但是后来发现这样子很多事情在递归里很难处理,于是又想到从每个点都dfs一遍,但是这样子的n2算法太慢了!!!!!所以

2016-09-10 14:14:43 1162

原创 NOIP2014 无线网络发射器选址 解题报告(水题)

在线评测:http://codevs.cn/problem/3578/整体思路:他怎么说,你就怎么做,不要在意n^2*m^2一样能过,失误之处:无体会心得:水题一定要认证做,不要想noip2015T1那样数组开小什么之类的,AC代码:12345678

2016-09-10 14:11:30 1323

原创 NOIP2014 飞扬的小鸟 解题报告(DP)

在线评测:http://codevs.cn/problem/3729/整体思路:失误之处:体会心得:AC代码:未完坑待填

2016-09-10 14:10:08 1364 2

原创 NOIP2014 联合权值 解题报告(乱搞(据说这道题是树状dp,感觉好像是))

在线评测:http://codevs.cn/problem/3728/整体思路:首先我们认真阅读题意,发现这是一个树,这样子我们就可以加特技了!我们在搜索一个点的时候,我们先把这个点所能连出的所有点的和加起来并记录,并记录这个点连出的最大值和次大值。同时我们去用他和他父节点记录的以上数值进行运算,将他父节点的记录的和减去这个点的权值,然后将权值与父节点的和相乘加入到

2016-09-10 13:56:12 414

原创 NOIP2014 生活大爆炸版石头剪刀布 解题报告(水题)

在线评测:http://codevs.cn/problem/3716/整体思路:就打一个判断输赢的数组,然后搞个队列模拟就行了,,,失误之处:开始貌似没有注意c++手动打数组表的一些奇怪特性,1int jg[5][5] = {{1,3,2,2,3},{2,1,3,2,3},{3,2,1,3,2},{3,3,2,

2016-09-10 13:52:54 2377

原创 NOIP2015 运输计划 解题报告(二分答案+树状差分)

在线评测:http://codevs.cn/problem/4632/整体思路:二分答案,看可不可以就行,判断可行时,将所有无法完成的路的公共部分的最长部分修改为0失误之处:体会心得:AC代码:未完坑代填

2016-09-10 13:49:44 743

原创 NOIP2015 跳石头 解题报告(二分答案)

在线评测:http://codevs.cn/problem/4768/整体思路:二分答案,看可不可以就行失误之处:没有考虑中间没有石头的情况,体会心得:注意特殊情况特殊判断AC代码:12345678910111213

2016-08-28 16:48:28 2602

原创 NOIP2015 子串 解题报告(DP)

在线评测:http://codevs.cn/problem/4560/整体思路:dp i,j,k,(0/1) 表示A扫到第i位,B扫到第j位,还可以分成k个子串,当前 这一位加不加入子串;这时候我们发现空间是不足以AC的,所以我们可以滚动数组一下。最后我们可以得到DP方程123456

2016-08-28 16:40:48 769

原创 NOIP2015 斗地主 解题报告(搜索)

在线评测:http://codevs.cn/problem/4610/整体思路:首先我们明确一件事,如果手里的牌不打龙的话,那么通过贪心,最优解是固定的。那么我们可以只去搜索龙是怎么打的,然后取一个总体最有的解就好了。那么贪心怎么贪,显然消耗的牌越多越合适,所以我们先尽量打4带2个对的,然后再考虑4带两个单个,再考虑4带一个对,在考虑3带2,在考虑3带1,最后的尽量

2016-08-27 21:58:09 4889 1

原创 NOIP2015 信息传递 解题报告(强连通分量)

在线评测:http://codevs.cn/problem/4511/整体思路:说白了就把这看成一张图,找一个大小不为1的最小的强连通分量即可失误之处:没啥失误,但是回忆tarjan还是有些慢,所以再来理顺一边,首先tarjan需要dfs对吧。然后得把dfn,low值,入栈bool搞一下吧,然后找边吧,边指向的边若是没访问过,那就搜!!!!如果在栈里,那就直

2016-08-27 14:14:48 1509

原创 NOIP2015 神奇的幻方 解题报告(水题模拟)

在线评测:http://codevs.cn/problem/4510/整体思路:枚举一的位置,然后模拟就行了失误之处:数据<39,然后,我就把记录上一个点的数组开到了39,orz,,然后只过了4个点,分明是39*39好么,,,体会心得:空间辣么多,数组开大点,,AC代码:1234

2016-08-27 13:43:51 1989

原创 NOI openjudge 6043:哆啦A梦的时光机(双向宽搜)

在线评测:http://noi.openjudge.cn/ch0407/6043/整体思路:这种题随便宽搜一下就好了,没啥思路可讲,,,,失误之处:1、开始脑子里想的是一面扩展一层,这样子可以保证答案最小,然后写着写着就脑残了,写成了一面扩展一个,,,2、用vis表示一个点时候已经被扩展出来,然而开始我vis就全赋值成0,导致了起点和重点难以判断,会

2016-08-27 09:46:43 1560

原创 2016暑期LNOI夏令营 T2解题报告

题面:算法流程:      首先我们需要求出最短路图,然后再图上进行记忆化搜索,然后边搜索边判断是否存在-1的情况,最后输出即可。      那怎么求最短路图,最短路图的求法因题而定,本题是通过从1号店进行一遍dij,然后看每一条边,如果这条边的连个端点的dis值差 == 这条边的边权,那么其即为最短路图的一部分,构造新图即可,至于其正确性,显然嘛~      那我们再详细

2016-08-26 16:41:32 825

原创 算法总结之最小生成树

最小生成树的作用:有很多点,点点之间有很多边,边有边权,我们要选择一些边,将所有点互相联通,构成一颗树,即为最小生成树模板题:http://codevs.cn/problem/1231/算法:prim基本流程:开始从所有点 中任取一点,(通常取1号),然后找其他所有点离已经取得点构成的连通块最近的点,将其加入连通块,并将总代价加入这个点与联通块相连的边的边权,如此反复点数-1次

2016-08-23 16:05:52 812

原创 NOIP 2007矩阵取数游戏 解题报告(区间型DP)

在线评测:http://codevs.cn/problem/1166/(为了便于书写,以下内容不含高精度,包括AC代码,(简洁,更易理解))整体思路:还是感觉记忆化搜索比较好写,就写了记忆化搜索。每次考虑一个区间,先去掉首元素和先去掉尾元素的情况。然后记忆化搜下去下去就好预处理只要处理处每一个数最后被选的得分是多少即可失误之处:开始只用d

2016-08-23 14:32:34 409

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除