08 2019 档案

摘要:题意:给你一个长度为n的字符串,每次询问给出三个数:L , R , K,表示原串 L 到 R 的子串在原串第K次出现的首字母的位置 解题思路:对子串的大量操作,不难想到后缀数组(后缀树/后缀自动机不会,所以没想到),注意到子串s[L.....R]必然是某一个后缀的前缀,所以所有前缀是该子串的后缀的排 阅读全文
posted @ 2019-08-24 00:48 Zeronera 阅读(311) 评论(0) 推荐(0)
摘要:传送门 gcd(xa - 1 , xb - 1) = xgcd(a , b) - 1 (x>1,a,b>0) (HDU 2685) gcd(fib[ m ] , fib[ n ]) = fib[ gcd(m , n) ] fib是斐波那契数列 gcd(fib[ m ] , fib[ n ]) = f 阅读全文
posted @ 2019-08-21 09:35 Zeronera 阅读(368) 评论(0) 推荐(0)
摘要:定义: 对任意给定的一个自然数n,将分母小于等于n的不可约的真分数按升序排列,并且在第一个分数之前加上0/1,在最后一个分数之后加上1/1,这个序列称为n级法雷数列,即法雷数列是0和1之间最简分数升序排列的数列,所以n级法雷数列的个数即为 满足 1 <= a < b <= n && gcd( a , 阅读全文
posted @ 2019-08-18 15:15 Zeronera 阅读(3033) 评论(0) 推荐(0)
摘要:题意:输出目标字符串最小表示的下标和数量,最大表示的下标和数量 题解:最大最小表示法模板题,数量也好求,用KMP的next数组求循环节即可(字符串循环节) 阅读全文
posted @ 2019-08-13 15:40 Zeronera 阅读(144) 评论(0) 推荐(0)
摘要:题意:找到字符串一个循环节使其循环次数最大,输出最大循环次数,没有循环节输出1 题解:KMP的next数组,next[ i ]表示前 i 个字符相同前后缀的最大长度,所以next[ len ]表示整个字符串的相同前后缀的最大长度,如果 len % (len-next[len])==0,len-nex 阅读全文
posted @ 2019-08-13 15:23 Zeronera 阅读(346) 评论(0) 推荐(0)
摘要:题意:在01矩阵中求极大全1矩阵数量 极大全1矩阵满足以下两个条件: 1.矩阵内元素全部由1构成 2.该矩阵不是其他全1矩阵的子矩阵 题解:枚举每一行,以该行作为矩阵的底,利用单调栈处理出该行上最大全1矩阵,并判断该矩阵有没有可能向下扩展 #include <bits/stdc++.h> using 阅读全文
posted @ 2019-08-11 16:01 Zeronera 阅读(195) 评论(0) 推荐(0)
摘要:更新一波 version : 2.0.0 现在不残疾了。。。 这个程序是实现对NITOJ题面信息的简单爬取 因为有些题目的题面,input,output的描述是用<p>标签,有些用<div>标签,有些不用标签,直接写在大的<div>下的,而这程序只识别<p>标签下的文本,所以就有了那个奇怪的话=。= 阅读全文
posted @ 2019-08-09 11:14 Zeronera 阅读(253) 评论(0) 推荐(0)
摘要:如果用dp求LIS的话,记录路径是比较简单的,只要在更新dp数组的时候同时记录路径,最后找LIS长度的时候同时找到终点,通过终点逆向就能找到LIS路径了(这是我临时想的,可能有更好的方法,不保证正确性) for (int i = 1; i <= n; i++) for (int j = 1; j < 阅读全文
posted @ 2019-08-07 21:08 Zeronera 阅读(1086) 评论(0) 推荐(0)
摘要:题意:给你一个n的排列p,再给你一个n的排列k,一开始所有p不可用,对于每个ki表示下标为k1~ki的p可用,求当前可用的所有p的最长上升子序列(可能表达的不是很清楚,这里看题面) 题解:题意等价于一个完整的排列按照一定顺序依次删除每个数,然后计算每次操作后的 LIS 长度。这样就好办了,首先在 O 阅读全文
posted @ 2019-08-07 20:09 Zeronera 阅读(404) 评论(0) 推荐(0)
摘要:rand()函数 rand() 函数原型是int rand(void),它会返回一个从0到RAND_MAX的整数(RAND_MAX是 C 语言标准库 <stdlib.h> 中定义的一个宏 0x7fff 即32767) 但是仅仅用rand()返回的结果是不变的,因为rand()函数是根据一个数(我们称 阅读全文
posted @ 2019-08-06 18:39 Zeronera 阅读(1328) 评论(0) 推荐(0)
摘要:列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型。 创建列表 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示: 访问列表中的元素 使用下标索引来访问列表中的值(从0开始),也可以使用方括号的形式截取字符,使用切片操 阅读全文
posted @ 2019-08-06 10:23 Zeronera 阅读(617) 评论(0) 推荐(0)