预处理
风声sp
这个人很懒,还没想到说点啥
展开
-
HDU-6182
打了一下数据范围,发现大概在15的时候不会爆1e18,那么就先预处理出所有的k的k次方,然后每读入一个n遍历一边查询当前的n对应的小于等于的最大的k是几。代码如下#include <bits/stdc++.h>#define sc1(a) scanf("%d",&a)#define sc2(a,b) scanf("%d%d",&a,&a...原创 2018-08-11 20:44:11 · 235 阅读 · 0 评论 -
HDU - 6186
因为这个and,or,xor都有区间的性质,因此个人感觉,可以线段树维护,查询log,查询 1 到p-1 ,然后p+1到n的这段区间得到答案,但是wa到死,有点难受。其实可以与预处理出所有的前缀和后缀,前k个and,or,xor的值,后k个这些值,在输入p的时候O(1) 查询即可。代码如下#include <bits/stdc++.h>#defi...原创 2018-08-28 22:02:57 · 274 阅读 · 0 评论 -
洛谷 P-1019 单词接龙
dfs题目,但是需要先预处理出单词和单词之间连接,最短的重叠的部分是多少(因为单词要最长,重叠部分一定要最短)。在预处理之后dfs注意一下每个单词只能用两次,这个相当于一张图,dfs遍历整张图,记录最大值即可预处理n^3 *(len)枚举单词 ,枚举长度,得到substring 去做比较代码如下#include <bits/stdc++.h>using names...原创 2018-08-28 22:11:29 · 341 阅读 · 0 评论 -
Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2), problem: (C) Maximum Subrectan
传送门:http://codeforces.com/contest/1060/problem/C 我们要找到一个子矩阵元素和小于x,元素个数最多,那么我们发现,只要从a数组中取出一段连续的元素,b中取出一段连续的元素,他们组成的矩阵一定是子矩阵,而且子矩阵元素的和为 sum = (a[i] + a[i+1] + .... + ...原创 2018-10-05 11:10:03 · 211 阅读 · 0 评论 -
P5239 回忆京都(3月洛谷月赛)
对任意给定的n和m,求 首先我们需要组合数表,可以使用递推公式将所求的组合数放在一个矩阵里面,i 行 j 列表示 C(i,j)代码如下:void solve(){ C[1][0] = C...原创 2019-03-03 10:06:47 · 295 阅读 · 0 评论 -
Educational Codeforces Round 61 (Rated for Div. 2) 题解
A: Regular Bracket Sequence 判断括号是否匹配,只需要注意到 “()”这样的括号数量无所谓,每一个“((” 一定需要一个 “))” 来和它配对,每一个“)(”,只要有一对 “((” 和 “))” 就可以有任意多个 因为可以做成 “((” “)(””))“这样的形式。那么几个判断即可代码如下:#include <bits/stdc++.h&...原创 2019-03-08 11:54:52 · 200 阅读 · 0 评论