算法
文章平均质量分 54
Fop_zz
这个作者很懒,什么都没留下…
展开
-
化暴力为标算——莫队
莫队。。这个听起来非常高端的东西,当时听大佬们说这个名词就一脸害怕,学完发现其实也还好。之所以叫这个名字 因为发明者的缘故而已。。和算法本身并没有什么直接关系。 莫队就是用区间来优化暴力,可以把暴力的复杂度压到n^1.5左右 当然,常数有多大我就不知道了莫队算法的本质就是暴力枚举。 对于m个询问,就是把m用一种方法排序后,直接暴力考虑一下,,如果说我们知道 l~r之间的答案, 那么可以用原创 2017-02-23 10:55:35 · 406 阅读 · 0 评论 -
Codeforces Round #381 (Div. 1) B Alyona and a tree 树状数组
B. Alyona and a tree题意:给定一棵树,树上的边有权值为val[i],点有权值为a[i],定义dist(a,b)为a到b的路径上的边权的和定义v控制u,当且仅当v是u的祖先且dist(u,v)第一反应树形dp嘛,可行,不过感觉略麻烦。。。而且二分的还要判断一些奇怪的东西(好吧懒得打因为u是v的后代嘛。所以dist(u,v)=dist(1,u)-di原创 2017-06-19 10:21:39 · 432 阅读 · 1 评论 -
很迷的SG??Berzerk - 787C
Berzerk好假的题啊。。题意是。。A有一个序列,B有一个序列轮流操作,使一个点在一个环上移动,移动的长度为序列中的任意一个数,先移动到1位置的人赢嗯。。问点的起点在任意位置时,A为先手是否必胜,B为先手是否必胜然后就搞个SG啊。。。看题解说什么BFS- -吓我一跳仔细看了看,就是把SG函数搞成了拓扑图做嗯。。感觉时间效率不错,于是也写了一发BFS原创 2017-06-05 11:41:20 · 616 阅读 · 0 评论 -
vijos1579——宿命的PSS
vijos1579 kruskal本质显然的是经过排序后,我们枚举到的边e[i]一定是当前枚举到的生成树中,最大的一条边。所以只要比这个大,就可以保证题目要求的最小生成树了因为后面的边会更大,所以我们这条边能加的数量是其两个端点所在集合当前的大小-1,至于-1的原因是。。枚举到的这条边也算。于是代码就很简单了注意开long long 不然30分。。。#include<iostream>#incl原创 2017-04-25 08:51:17 · 770 阅读 · 0 评论 -
谜一样的最小表示法
今天做题有一题用瞎搞做。。发现做不了,看了下标算 最小表示法,就学了下,觉得这个好玄啊最小表示法的用处是这样的 比如对于字符串bacda 他的循环同构字符串分别有 bacda acdab cdaba dabac abacd 显然,最后一个的字典序最小,最小表示法就是要找到这个开头的位置,在这个例子中即是 4->’a’个人理解,这是类似于排除法的做法。首先我们认为所有的位置都是有可原创 2017-05-15 16:13:31 · 460 阅读 · 0 评论 -
NOIP2008/vijos1605——双栈排序
vijos1605 很迷的一道题 大概就是要用两个栈,通过出栈入栈来排序 这道题出题人良心啊帮我们离散好了首先考虑单栈排序很显然的是 例如 2 3 1这种情况,我们就不能通过一个栈来排序,因为1要比2先出栈,然而1如果要出栈,3就一定会比2先出栈,这种规律我们可以认为是: 当a[i]>a[j]且i~j中有a[k]>a[i],则i,j两个数字矛盾如果求出这个矛盾关系,我们只要模拟一下就可以了然原创 2017-05-05 11:04:27 · 478 阅读 · 0 评论 -
假的二分图——codeforces C. Love Triangles
题目题目大致意思是给你一些边表示两个点之间的关系,可以是相同可以是相异。然后让你求满足这些关系的情况共有多少。我也不知道我在做什么感觉很假。。但是居然1A了很显然,两个不相干的联通块之间的关系才可以进行选择,即答案显然是(2^联通块数量-1)%mo那么我们只需要染色,来判断是否冲突就可以了。最后求出色块数量我的处理方法很假……不建议借鉴CODE:#include <iostream>#includ原创 2017-05-23 09:18:06 · 482 阅读 · 0 评论 -
玄学算法CDQ分治
啊刚学这个啊 刚过了一道题就屁颠屁颠来写博客很虚啊 bzoj4553 就是这道题说一下我对CDQ分治的理解 我感觉。。这个就类似于。。把暴力,转化为。。容易优化的暴力。。然后优化??并且一般只用于处理问题具有单调性的题,即f[i]对任意f[j](j={1..i},不产生影响。例如最长上升子序列的问题我们本来需要枚举这个j,但是通过CDQ分治就不需要去全部枚举了我们处理1~n的时候,如果1~n原创 2017-04-21 14:01:43 · 1306 阅读 · 0 评论 -
POJ3735——Training little cats
讲课的例题第二题,当时觉得好麻烦,然而写了下发现比其他的题都要短好多坑点: 1、多组数据 2、矩阵要开到102*102 3、m=0的情况 这个。。有毒思路就是暴力构造出矩阵,1~n代表标号为i的小猫剩余的花生数量n+1就是1,用于g操作然后暴力构造后直接快速幂即可初始矩阵 0 0 0 。 。 。 1CODE:#include<iostream>#include<cstdio>原创 2017-05-03 08:56:35 · 336 阅读 · 0 评论 -
匹配多个字符串——AC自动机
真·AC自动机:zyy AC自动机这个东西。。名字真的是没得吐槽=_= 它运用了kmp算法的next思想(体现于后文的fail指针)以及trie的数据结构(字母树) kmp如果不会的话还可以,trie不会的话。。建议还是先去学trie吧 我看了好久。。才看懂这个蜜汁自动机先看一下模版题来了解AC自动机的用处: Hdu2222 题意:有n段小字符串,求其中有多少段出现在了一个大字符串中原创 2017-03-16 10:52:54 · 953 阅读 · 8 评论 -
强连通分量——tarjan ->缩点
对于一些题目,我们找出强连通分量后,就会变得非常简单=v=+首先介绍强连通: 对于一个有向图,每一对点(x,y)都可以相互到达,则称之为强连通图。 而一个有向图中的极大强连通子图,就称为强连通分量 (注:极大的意思就是说不能再往这个子图中添加点,即当前情况下的最大子图(强连通都是:环,环套环,环套环套环……接下来就是求出强连通分量:这里只介绍tarjan算法定义时间戳d原创 2017-02-24 11:49:34 · 464 阅读 · 1 评论 -
关于SA中基数排序的偷懒写法
因为我并没有学习过标准的SA写法,以前写的一直是按照自己瞎yy的n*log^2来做的然而被卡了好多次做法就是记录rk[]和rk2[]作为第一和第二关键字进行sort//这样做的话第一关键字有序 基数排序常数巨大luogu模板n*log^2 70分改成基数(巨大常数版)排序 9s AC于是自己yy出一个不明复杂度的算法。。复杂度大概是n*log*log(n/log)实测5s AC算法记录s...原创 2018-02-27 15:56:10 · 390 阅读 · 0 评论