算法
WT_cnyali
学生
展开
-
[CTSC2017]吉夫特
Click here to read the problem.令 N=log2(maxai)N=log2(maxai)N= log_2(max_{a_i}). 网上很多 3N3N3^N 的做法,不具体说了,大概就是dp[x]dp[x]dp[x]代表以xxx结尾的方案数.考虑分块,把数字二进制下分成前一段和后一段. 设f[u][v]=∑v∈x∗dp[u∗2N2+x]f[u][v]=∑v∈...原创 2018-06-30 21:28:15 · 336 阅读 · 0 评论 -
POJ2778 AC自动机经典题
AC自动机模板题原创 2017-04-09 22:20:52 · 685 阅读 · 0 评论 -
HDU2896 AC自动机
AC自动机练习题原创 2017-04-08 16:55:09 · 520 阅读 · 0 评论 -
AC自动机入门
AC自动机入门原创 2017-04-07 23:47:16 · 753 阅读 · 0 评论 -
KMP算法——字符串匹配
KMP算法简单讲解原创 2017-04-05 21:35:46 · 1011 阅读 · 1 评论 -
POJ2752 既是前缀也是后缀 KMP变形
给出一些字符串,求出字符串中所有既是前缀也是后缀的子串。 联想到KMP算法的next数组。这道题就可做了。 不多说,这整个字符串显然是满足条件的。 而且,对于任意一个满足条件的前缀,它最后一个字符肯定与整个字符串的最后一个字符相同。假设现在有位置k使[1,k][1,k]满足条件,那么显然[1,nextk][1,next_k]仍然满足条件,并且,由于next[]是最长的公共前后缀,所以不原创 2017-04-05 22:40:51 · 699 阅读 · 0 评论 -
POJ2406 字符串最小循环节
给出一些字符串,求每个字符串中其所有子串最多出现的次数。原创 2017-04-05 23:09:31 · 753 阅读 · 0 评论 -
POJ3630 trie字典树水题
Trie水题原创 2017-04-07 16:34:15 · 480 阅读 · 0 评论 -
莫队算法——解决序列上询问的利器
问题: 有一个长为N序列,有M个询问:在区间[L,R]内,出现了多少个不同的数字。(序列中所有数字均小于K)。题目会给出K。莫队算法就是滋磁解决这类问题的离线算法。(其实很简单)首先来看看暴力: 由于暴力还是比较水的,所以直接上:#include <bits/stdc++.h>using namespace std ;const int maxn = 50010 ;int n, m, a[原创 2017-02-06 21:21:17 · 1003 阅读 · 2 评论 -
HDU 1754 I Hate It 线段树 && Splay && zkw线段树
线段树Splay Treezkw非递归版本线段树原创 2017-02-26 20:01:27 · 446 阅读 · 1 评论 -
莫队算法——解决序列上询问的利器 (2) 带修改的莫队
普通的莫队戳这里。 还是考虑类似的问题:有一个长为N序列,有M个操作:1.询问:在区间[L,R]内,出现了多少个不同的数字。2.修改,将第x个数改为v(序列中所有数字均小于K)。题目会给出K。 做法其实是类似的,只是要考虑更新的问题。 有一种值得思考的做法:首先离线下所有的修改操作。对于某一次询问[L,R], 先假设没有任何修改,算出答案来。再考虑所有在这次询问之前的修改操作,如果修改原创 2017-03-28 22:04:15 · 738 阅读 · 0 评论 -
后缀数组(suffix array) 模板(1)
贴一波计算sa数组的模板原创 2017-04-19 21:01:20 · 515 阅读 · 0 评论 -
后缀数组(suffix array)模板(2)
height数组的计算原创 2017-04-20 20:52:15 · 456 阅读 · 0 评论 -
洛谷10月月赛R1·浴谷八连测R1·提高组 SAC E#1 - 一道中档题 Factorial
题意:求n!n!在kk进制下后缀00的个数。老夫掐指一算,竟然掐到std算法?原创 2017-10-07 21:24:09 · 573 阅读 · 0 评论 -
欧拉函数的计算
直接上代码原创 2016-11-17 08:21:37 · 3307 阅读 · 0 评论 -
[HAOI2015]树上染色 [洛谷]3177
有一棵点数为 N 的树,树边有边权。给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 。 将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益。问受益最大值是多少。 N≤2000 N \le 2000原创 2017-09-20 21:47:47 · 650 阅读 · 0 评论 -
洛谷[1471] 方差
区间修改、区间求算术平均数、区间求方差原创 2017-08-23 17:24:56 · 500 阅读 · 0 评论 -
[POI2000]病毒 [洛谷]P2444
[POI2000]病毒原创 2017-09-03 21:38:44 · 433 阅读 · 0 评论 -
树形依赖背包
树形依赖被背包原创 2017-08-03 20:18:29 · 2838 阅读 · 1 评论 -
[ZJOI2014]力 题解
FFT原创 2017-07-23 19:51:25 · 1279 阅读 · 1 评论 -
差分约束系统
差分约束系统,就是对于一段序列{x[i]},存在一些条件,例如xi−xj≥bk,求是否存在符合条件的区间。 其实这和图论有着很大的关系 考虑最短路中的松弛:if ( d[u] > d[x] + w[i] ) d[u] = d[x] + w[i] ;很巧的是,我们的约束不正好可以变成a>b+c的形式吗? 于是,对于约束条件xi−xj≥b,正好可以看做从点j往点i添加了一条权值为b的边。原创 2017-02-26 10:14:09 · 393 阅读 · 0 评论 -
POJ 2828 Buy Tickets ( Splay tree && Segment tree )
DescriptionRailway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue…The Lunar New Year was approaching, but unluckily the Little Cat still原创 2017-02-26 10:04:30 · 464 阅读 · 0 评论 -
POJ 1144 Network 图论 求割点模板
这道题目是个简单的割点模板题目。就直接贴代码了。 考虑一下输入就行,那个比较麻烦。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std ;const int maxn = 110, maxm = 10010 ;int e, n, m, be[maxn], n原创 2016-10-14 18:39:45 · 440 阅读 · 0 评论 -
POJ 2135 Farm Tour
贴一个最小费用最大流的代码。问题: FJ从点1走到点n,再走回点1. 方法:设置一个起点s,一个终点t,在1和s以及n和t之间链接费用为2流为1的边,求s到t的最小费用最大流就行了。直接上代码。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>bool Read原创 2016-10-12 20:46:23 · 284 阅读 · 0 评论 -
日常记录——关于数组下标计算的一点心得
最近在 伟大的LG 的指导下开始玩了玩URAL的新手村,虽然说是非常简单的,但是还是遇到了一点小小的问题,卡住了进度。 在URAL的新手村里,竟然有一种题型出现了两次,那就是关于数组下标的计算,分别是URAL1319和1313。原创 2016-09-08 20:41:21 · 2290 阅读 · 0 评论 -
LG 的数学计划 ---- 第二步 进制转换
显然,在了解素数判定之后,我们又跟着 LG 的步伐来到了他的第二步 “进制转换”;原创 2016-09-03 16:47:15 · 596 阅读 · 0 评论 -
LG 的数学计划 ---- 第一步 素数判定
LG 的数学计划 素数判定原创 2016-09-03 16:21:12 · 482 阅读 · 0 评论 -
划分树 POJ2104
这是一道划分树的裸题啦啦~~~原创 2016-08-11 22:06:10 · 339 阅读 · 0 评论 -
POJ2331 Water Pipe 解题报告
题目意思: 你是一个修水管的工人。在一个1000*1000的坐标系中需要用水管联通两个城市。显然,为了让你的工作变得简单,你的老板决定水管只能横着或者竖着放。有一些不同型号的水管,会告诉你每一种水管的长度和数量。现在你要做的是求出最少能够接通两个城市的水管数量。 输入: 只有一组数据啦啦~~ 首先两个数,代表城市1的横纵坐标; 然后再来两个数,代表城市2的横纵坐标; 然后是一个数n,代表原创 2016-08-24 00:06:02 · 605 阅读 · 1 评论 -
POJ 3249 Test for Job 解题报告 DP
题目意思: 给出一个有向图,但是这个图不一定联通而且保证无环。每个点上都有一个权值。问题是:从任意一个入度为0的点出发,目标是到达任意一个岀度为0的点,问所有的方法中,路上经过点的权值和最大为多少? 输入: 包含多组数据; 先输入两个数n,m;代表有n个点,m条边; 接下来n行,每行一个数,代表每个点的权值是多少; 接下来m行,每行两个数x,y,代原创 2016-08-23 13:02:05 · 599 阅读 · 3 评论 -
最短路问题——Dijkstra算法
最短路问题的Dijkstra算法。 单源最短路。原创 2016-09-28 20:47:04 · 608 阅读 · 0 评论 -
POJ-1135 Domino Effect 最短路
POJ - 1135 Domino Effect Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %lld & %lluDescription Did you know that you can use domino bones for other things besides playing Domin原创 2016-09-29 21:43:46 · 755 阅读 · 1 评论 -
POJ 3463 && HDU 1688 Sightseeing 次短路
这道题就是给出有向图和起点s重点t,求出s到t的次短路个数+最短路个数,注意,次短路总和如果比最短路总和+1要大的话,就只要算最短路个数。由于不难, 所以直接上代码。#include <iostream>#include <cstdio>#include <queue>using namespace std ;const int maxn = 1010, maxm = 10010 ;con原创 2016-10-15 22:14:15 · 568 阅读 · 0 评论 -
可持久化线段树——Step 1 静态区间第K大
考虑这样一个问题: 给出一段长度为n序列{ai}\{a_i\},对于一些询问{L,R,K}\{ L, R, K\}请输出序列上[L,R][L,R]内第K大的数。关于暴力做法,其实是很简单的,但是会超时,在此略过。有一种办法,是利用前缀和的思想。先将{ai}\{a_i\}离散到区间[1,n][1,n],然后,对于任意节点ii,都建立一棵权值线段树,代表离散后{a1,…ai}\{a_1,…a_i\}原创 2017-03-17 16:49:02 · 1292 阅读 · 0 评论 -
LG 的数学计划 ---- 第四步 快速幂
考虑到神奇的LYQ同学不打算认真的写这么Right Brain的弱鸡东西,那么还是我继续吧~那么,快速幂是解决什么问题的怎么一种神奇的东西呢?原创 2016-09-06 19:52:45 · 1368 阅读 · 0 评论 -
【NOI2014】起床困难综合症 解题报告
先说一下这道题对于我的历史意义:这是我做出的第一道NOI的题目,而且,全程是自己思考,没有看别人的程序或者想法。题目描述21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳。作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争。通过研究相关文献,他找到了该病的发病原因:在深邃的太平洋海底中,出现了一条名为 drd 的巨龙,它掌握着睡眠之精髓,能随意延长大原创 2016-11-27 21:49:25 · 1911 阅读 · 0 评论 -
筛法计算欧拉函数
先给出算单个欧拉函数的链接。 大致方法其实和筛质数是类似的,其实,考虑到欧拉函数的定义,它和质数其实是关系甚紧的。需要用到如下性质(p为质数):1. phi(p)=p-1 因为质数p除了1以外的因数只有p,故1至p的整数只有p与p不互质2. 如果i mod p = 0, 那么phi(i * p)=p * phi(i) ;若整数n与i互质,n+i与i依然互质3.若i mod p ≠0, 那么原创 2016-12-04 11:29:27 · 484 阅读 · 0 评论 -
NOIP算法总结——关于简单 线性动态规划
动态规划,显然是一个很让人头疼的地方,也没有个固定的算法,最多就是有一些模板(比如背包啊),要是想要增大做出来的机率,也就只好多做做题找找感觉了~线性动态规划可以说是DP中最简单的类型了,当然里面很多也是不容易的题目,也是需要一点技巧了。搞了好几天了,现在就来总结一下。一、算法的选取,动态维护。例题1:最大子段和题目描述给出一段序列,选出其中连续且非空的一段使得这段和最大。输入输出格式输入格式:输入原创 2016-10-27 22:13:32 · 3336 阅读 · 0 评论 -
POJ 3621 最优比率生成环 二分求解
Sightseeing CowsTime Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %lld & %lluSubmit StatusDescriptionFarmer John has decided to reward his cows for their hard work by taking them on原创 2016-10-18 20:13:14 · 508 阅读 · 0 评论 -
洛谷 P1282 多米诺骨牌 动态规划
P1282 多米诺骨牌题目描述多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|。例如在图8-1中,S1=6+1+1+1=9,S2=1+5+3+2=11,|S1-S2|=2。每个多米诺骨牌可以旋转180°,使得上下两个方块互换位置。编程用最少的旋转次数使多米诺骨牌上下2行点数之差达到最小。对于图中的例子,只要原创 2016-10-24 20:27:29 · 2864 阅读 · 0 评论