摘要:
爬山。 爬山算法即是模拟爬山的过程,随机选择一个位置爬山,每次朝着更高 的方向移动,直到到达山顶,即每次都在临近的空间中选择最优解作为 当前解,直到局部最优解。这样算法会陷入局部最优解,能否得到全局 最优解取决于初始点的位置。初始点若选择在全局最优解附近,则就可 能得到全局最优解。 http://w 阅读全文
摘要:
随机化算法。 A*B==C那么X*A*B==X*C 降到了n*n复杂度。 多次随机X判断即可。 By:大奕哥 阅读全文
摘要:
随机化算法。 亲身试验贪心会T。 所以排序,然后在前2*k个数中随机交换。 祝大家新年快乐。 阅读全文
摘要:
这两天后缀数组整多了整点有意思的,随机算法。 题意给你两个数组,让你求一个排列使得这个排列对应的两个数组前n/2+1个数之和的二倍大于每个序列总和。 下面先贴下这题正解 二维贪心,按a从大到小排,把第一个拿着,以后每两个里面选一个a的性质可以满足。 b的话就在两个里面选一个b较大的,这样可以保证有一 阅读全文
摘要:
后缀数组。 复习了后缀数组后发现这题真的很好写。 我们只需要将c依次向前向后扩展,找落在[a,b]区间内的最大值,遍历过程中不断用height数组更新。 复杂度就是后缀数组,比主席树的快多了。 By:大奕哥 阅读全文
摘要:
KMP+矩阵快速幂+DP; 按顺序处理准考证号每一位, 设f[i][j]表示:准考证号前i位中 后j位与不吉利数的前j位相同时,前i位的方案数 那么答案ans=f[n][0]+f[n][1]+…+f[n][m-1] 状态转移: f[i][j]只能由f[i-1][k]得到,相当于填完第i-1位后,将其 阅读全文
摘要:
题意:给定一个串,长度<=10^5,求它重复次数最多的连续重复子串(输出字典序最小的那个)。 例如ccabcabc,答案就是abcabc。 枚举长度然后往前往后搜即可。 这题最好的一点就是在进行枚举时只需要固定点枚举即可因为答案一定经过这几个点。 复杂度n/1+n/2+...n/n=nlogn By 阅读全文
摘要:
后缀数组。 求多个字符串翻转与否中最长公共子串长。 二分答案,反过来多建一倍的字符串,二分时特判一下即可。 By:大奕哥 阅读全文
摘要:
后缀数组。 解决多个字符串的最长公共子串。 采用对长度的二分,将子串按height分组,每次判断是否在每个字符串中都出现过。 复杂度O(NlogN) By:大奕哥 Ps:wa了好多遍,因为插进去的ascII码值没有选好,附一张ascII表。 阅读全文
摘要:
后缀数组+单调栈。 与之前那题非常类似,我们依旧是采用height数组对答案进行计算。 非常强的操作,我们分别对b匹配a,对a匹配b。我们会发现他的height会越匹配越小,所以我们建立单调上升的栈来存下a串中相同的,然后一旦遇到小的就将他更新换掉,然后对答案统计计算,栈要再开一维计算之前有哪些高的 阅读全文
摘要:
求两个字符串的最长公共子串,用后缀数组做一下 只要求Height数组即可,然后统计答案就行了。—— by VANE 阅读全文
摘要:
从网上学习了后缀数组,抄了一份非常棒的代码 http://blog.csdn.net/yxuanwkeith/article/details/50636898 然后本题有了这个技能之后就很容易了,复制一份字符串,求出来SA数组,对于SA小于等于n/2的就是答案。—— by VANE 阅读全文
摘要:
网络流。 我一开始傻傻的将每条边与每一列连边,边权为联通块树,但是这样做是错的因为我们就在跑网络流中会忽略掉边和列的关系。 我们在做网络流题时一定要注意题目中给出的限制条件,一定要以限制条件建图!!!! 我们对每个联通块单独考虑,再在节点上对他所在的竖直联通块与水平联通块连线。 阅读全文
摘要:
太棒了!思路很不错。 没想到HEOID1三道线段树。 这题我们可以二分答案,将小于他的在线段树中设成0,大于他的设成1然后模拟操作复杂度O(mlog^2n) By:大奕哥 阅读全文
摘要:
可以用并查集,记忆化搜索,线段树多种方法实现。 我这里写的是依照dfs序建线段树,维护区间最大值。 阅读全文
摘要:
按照斜率排序,我们可以想象如果你能看到大于等于三条直线那么他一定会组成一个下凸包,这样我们只需要判断如果当前这条直线与栈顶第二直线相交点相比于栈顶第二直线与栈顶直线相交点靠左那么他就不满足凸包性质。 画画图想想看。 阅读全文
摘要:
11.10日。 我们TSOI再次来到了熟悉的燕山大学,只不过这次是真刀真枪的干了。 望着那座熟悉的小桥,身边的好友不知此行过后还有多少。 下午才到,出人意外的是这次没有住燕大宾馆而是选择了熟悉的格林豪泰。 来不及办手续就去试机了,匆匆忙忙到科技楼已是下午四点多了。 这次试机不同以往,只公开了两个机房 阅读全文
摘要:
一道好题。 我们考虑旋转和翻转的循环节个数就可以了。 先说旋转: 旋转应该是朝着一个方向从旋转1个到n个 此时循环节个数为1 此时循环节个数为2 从上面两个我们可以看出旋转长度为k时,循环节长度为lcm(n,k)/k,所以循环节个数为n/lcm(n,k)/k=gcd(n,k) 再说翻转: 考虑奇偶 阅读全文
摘要:
第一次学习置换群这个东西。 这题需要利用Burnside定理。 即我们求出循环节为一(转完不变)的个数的平均数也就是等价类的个数。 定义:设G={a1,a2,…ag}是目标集[1,n]上的置换群。每个置换都写成不相交循环的乘积。 c1(ak) 是在置换ak 的作用下不动点的个数,也就是长度为1的循环 阅读全文
摘要:
开学了,但是我们并没有像一个正常的高二学生一样坐在教室里接受调研考试的洗礼。 暑假作业这种东西早已被甩在一旁,可以想象回去补文化课时该有多么狼狈。 大王给我们制定了周密的计划,每周两次测试,加上蔡老师的是三次,都是往年学长们做过的题。 我们一帮人那时水平都不是很高,场场都一百分左右,偶尔杰哥小柴能刷 阅读全文