上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页
摘要: 题目意思是给你一个字符串,f[x]是长度为x的子串中,出现个数最多的那个串的出现次数。给出原串,依次输出f[1],f[2],……。后缀自动机。对于某一个状态,right[]值的大小就是出现的次数,而且是对于长为step[]的子串的出现次数。因为小于step值的串在前面已经加了,在pre指针线上面的状... 阅读全文
posted @ 2014-06-20 16:52 092000 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 经典题目:给一个字符串,求字典序第k小的子串是什么。涉及子串问题,上自动机。首先我们可以用记忆化搜索的方法,求出到达某一个状态后,能产生多少个新状态。首先,到达这个状态就不走了,这肯定是一种状态,然后分别考虑后面的26个指针就好了。不过如果不记忆化肯定是要T的,而且如果用dp好像会有一点问题,因为状... 阅读全文
posted @ 2014-06-19 13:56 092000 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 和上个题目差不多,这次是找若干个串的LCS,若干#include #define maxn 200100using namespace std;int next[maxn][26],pre[maxn],step[maxn];int f[13][maxn];int N=0,last=0,n=1;int... 阅读全文
posted @ 2014-06-19 13:50 092000 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 经典题目,求两个串的最长公共子串。是这样来做的。以第一个串构造SAM,第二个串在自动机上跟新一遍就可以了。更新的过程是这样的,假设当前到达的状态点为x(初始状态为0点),下一个字符是c,如果当前状态没有c这条边就一直沿着pre指针走,直到找到第一个有c这条边的状态或者确认全部都没有。更新是这样的,用... 阅读全文
posted @ 2014-06-19 13:37 092000 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 给一个小数X,找个A使得:AX=(A循环左移一位)首先,假设A为一个满足题目条件的数,有n个数位,且最高位数字为A0。那么可列出方程:AX=(A-A0*10n-1)*10+A0 ————>> A0*(10n-1)=A*(10-X)也就是说,只要n和A0确定了,A也就可以唯一确定。那么我们只要直接... 阅读全文
posted @ 2014-04-14 18:34 092000 阅读(403) 评论(0) 推荐(0) 编辑
摘要: 这。。。水题。可惜坑了无数发。显然对于当前的半径的园,多边形的边数越多,周长越短,面积也就越小。一开始我是用二分去做的,事实证明也是可以的,只是我坑了。其实没必要去用二分哦,这样来考虑这问题。每次我都用最短允许的边与圆相切,看看这条边所占的角度有多大,这样就可以直接得出多少边形了。。。。(神坑吧)接下来直接根据边数算出面积,就得答案了。 这才是真正的全场最水题啊。。。。。啊啊。。嗄。 吖a.a..。 阿。。精度问题也都不用考虑。。。。。#include #include using namespace std;const double full=2*acos(-1.0);double R,r. 阅读全文
posted @ 2013-12-02 19:46 092000 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 全场最水题。保留打印a[i]份分别需要的钱,从后往前扫一遍,保证取得最优解。查找的时候,二分同时判断最小值即可。注意初值的设定应该设定为long long 的无穷大。#include #include #include #define maxn 100100typedef long long ll;using namespace std;ll a[maxn],b[maxn],c[maxn],f[maxn],ans,n,m,t,k,num;ll find(ll x){ if (x>=a[n]) return n; if (x=x) r=mid; else l=m... 阅读全文
posted @ 2013-12-02 19:42 092000 阅读(1136) 评论(0) 推荐(0) 编辑
摘要: 真正的水题,可惜无法当场机智一下。这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少?其实是这样来考虑的,我们可以随便设置一系列参考点,不妨直接假设为(0,n/m,2*n/m,……),这样我们直接记录所有的点依次移动到这些对应位置所需要的最大的步奏和最小的步奏,这样我们就得到了到这一系列的位置的最大和最小值。这样我们需要的最终目标位置就是在最大值和最小值的中点处。这里理解一下吧,就是答案了。。 智商拙计。、、、#include #include #include #define maxn 1000100using nam 阅读全文
posted @ 2013-12-01 18:08 092000 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 题意为给你若干个三次函数,以及每一个函数所分布的区间,由于每个函数的所有的系数都是整数,所以最后的函数在整数点处的值也是整数。现在每次可以插入函数或者询问区间,现在要求每次询问区间后,所有的函数在这个区间的函数值的和。其实一个函数在这个区间的分布,就可以看成是四个函数分别在这个区间分布了。这样对于单一的函数,我们可以用线段树来维护了,每次查询和更新的操作都是在O(log(n))的复杂度内实现的。注意不要写挫,另注:UVA的服务器真的很快,果断赞啊。#include #include #include #define maxn 1000100#define M 1000000007typedef 阅读全文
posted @ 2013-12-01 18:03 092000 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 题目是说给你一个字符串,现在要你用一些特殊的符号代替这个字符串中某一些子串,使得被替换后的串是一个回文串。现在要你求替换后的字符串的最大的可能的长度。其实这个题目没有什么固定的算法哦,我直接暴力就过了,但是中间手滑,wa了太多发。其实可以这样来考虑,我们这个字符串的反序也保存一遍,这样可以建立起一个类似于链表的结构(对于每一个字符,我们在这里指向它下一次出现的下标)这样如果最后可以被替换为n个串,那么一定存在x1,x2,……,xn,是的1-x1,x1-x2,……xn-1-xn是完美的反向匹配的。同时我们需要维护每一个x最小,这样就一定是最小的。虽然可能出现极限数据使得复杂度为n^2,但是……( 阅读全文
posted @ 2013-12-01 17:59 092000 阅读(396) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页