- 博客(15)
- 收藏
- 关注
原创 spoj687 重复次数最多的连续重复子串(后缀数组)
给定一个字符串,求重复次数最多的连续重复子串。 http://www.spoj.com/problems/REPEATS/枚举可能的循环节长度,不满足单调性,所以不能二分。 每个长度如果可以,一定会选到相邻的L个,于是找到0,L,2*L等等连续的两个,因为间隔L的两个一定是对应位置(画图理解), 找有没有满足s[L*i]== s[L*(i+1)]…每次(n/L)的复杂度,算起来 O(n/1+n
2017-02-28 20:10:30 724
原创 后缀数组--重复子串
http://poj.org/problem?id=1743题目意思是求不重叠的最长相同变化的子串,输出该长度 先二分答案,判断是否 存在两个长度为 k 的子串是相同的,且不重叠。利用 height 数组。把排序后的后缀分成若干组,其中每组的后缀之间的 height 值都 不小于 k。这一组内任意两个都是可以的,于是找到距离最远的两个看是不是>k(保证不重叠)#include <cstdio>
2017-02-27 23:41:57 540
原创 拓展欧几里得-青蛙得约会
#include <cstdio>#include <iostream>#include <cstring>using namespace std;long long x,y,m,n,l,a,b,p;long long exgcd(long long a,long long b,long long &xx,long long &yy){ if(b == 0){ xx
2017-02-27 13:21:26 438
原创 【poj2774】 后缀数组最长公共子串
http://poj.org/problem?id=2774 题意:给你两串字符,要你找出在这两串字符中都出现过的最长子串………思路:先用个分隔符将两个字符串连接起来,再用后缀数组求出height数组的值,找出一个height值最大并且i与i-1的位置分别在两串字符中就好…..h【i】本是求排名再 i 的 和 i -1 的两个串相同前缀的长度,但是这样复杂度较高,于是考虑如果按着在串里的位置考虑,
2017-02-27 10:18:17 416
原创 最优贸易-tarjan+拓扑更新
描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市。任意两个 城市之间最多只有一条道路直接相连。这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路,双向通行的道路在统计条数时也计为 1 条。 C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价 格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同
2017-02-22 18:25:54 468
原创 spojQTREE - Query on a tree树链剖分
You are given a tree (an acyclic undirected connected graph) with N nodes, and edges numbered 1, 2, 3…N-1. We will ask you to perfrom some instructions of the following form: CHANGE i ti : change th
2017-02-16 15:38:42 355
原创 codeforces #396
A:题意:两个字符串,找一个字符串是其中一个字串不是另一个,最长多长tip:除非一模一样的两个串,不然长的那个就是#include <iostream>#include <cstdio>#include <cstring>const int maxn = 1e5+10;char a[maxn],b[maxn];using namespace std;void init(){ sc
2017-02-15 07:55:37 264
原创 spojGSS1 线段树维护区间和最大值
http://www.spoj.com/problems/GSS1/ You are given a sequence A[1], A[2], …, A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A query is defined as follows: Query(x,y) = Max { a[i]+a[i+1]+…+a[j] ; x ≤ i ≤ j
2017-02-15 07:38:15 752
原创 bzoj1001: [BeiJing2006]狼抓兔子
Description 现在小朋友们最喜欢的”喜羊羊与灰太狼”,话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形:左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(x,y+1) 3:(x,y)<==>(x
2017-02-15 07:28:56 255
原创 斜率优化
http://www.lydsy.com/JudgeOnline/problem.php?id=1010 Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具,第i件玩具经过压缩后变成一维长度为Ci.为了方便整理,P教授要求在一个一维容器中的
2017-02-08 12:03:56 219
原创 codeforces#395
A:题意:没a分钟来个人,每b分钟一个liza打电话,在c时间内,最少多少个人不能来使得没人接liza电话tip:暴力#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int a[10010];void init(){ int n,m,p,cn
2017-02-08 10:56:30 240
原创 codeforces #394
A题意:上台阶奇数和偶数分别多少可以实现是从a到b连着上的(a>=1)tip:0,0不可以,至少上了一节#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;void init(){ int a,b; scanf("%d%d",&a,&b);
2017-02-08 10:31:50 239
原创 BZOJ 4761
dp+最短路首先考虑了dfs,但不能处理要求的头朝哪个方向的问题。然后考虑dp dp[x1][y1][x2][y2][d1][d2]表示第一个人(初始头朝上)在x1,y2位置 头的朝向是d1,第二个人(初始头朝右)在x2,y2位置,头朝向是d2的时候 最少需要多少步dp就是dis,因为每个状态之间的转移都是单位长度,spfa求最短路就是最少步数。有几种转移: 1.d1,d2不变,朝着现在方向走一步
2017-02-08 10:06:22 417
原创 POJ3348-凸包
题意:一片草地上有n课树,现在你想用绳子圈出一个尽可能大的面积出来养牛。已知每只牛需要50单位的面积,问最多能养几只牛。#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;int n,stack[10010],top;c
2017-02-05 07:05:57 281
原创 poj1039 计算几何-交点,叉积
http://poj.org/problem?id=1039 题意:给出一个曲折的管道,求出光线能够到达的管道的最远点的横坐标。 思路:能够到达最远点的直线必然通过管道的一个上管道壁的折点和一个下管道壁的折点,枚举所有的这样的折点,求出最远能够到达的地方的横坐标。#include <iostream>#include <cstdio>#include <algorithm>#include
2017-02-04 21:41:04 226
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人