摘要: 当某天,本蒟蒻沉迷于卡常的时候: 我…… 突然,YYKdalao说:用文操快读啊! 然后 喔~目瞪口呆 不多说,上源码: 本来用的读入方式: c++ inline void Read( int &x ) { x = 0; char ch = getchar(); for( ; ch '9'; ch 阅读全文
posted @ 2018-11-06 18:01 chy_2003 阅读(5) 评论(0) 编辑
该文被密码保护。
posted @ 2018-10-27 14:56 chy_2003 阅读(14) 评论(0) 编辑
摘要: 解题思路 首先考虑最暴力的做法。对于每一步,我们都可以枚举每一条边,然后更新每两点之间经过$k$条边的最短路径。但是这样复杂度无法接受,我们考虑优化。 由于点数较少(其实最多只有$200$个点),$N$较大,考虑优化$N$。我们发现,其实可以直接从经过$i$条边的最短路和经过$j$条边的最短路推出经阅读全文
posted @ 2018-10-12 14:15 chy_2003 阅读(9) 评论(0) 编辑
摘要: 解题思路 我们很愉快地发现了这题可以离线。然后我们就尝试预处理所有时间所有点对间的方案数。我们将其维护在$F$里。$F[i][j][k]$表示从$i$到$j$,经过$k$个点的方案数。 当我们从$k$向$k+1$转移的时候,我们枚举点$u$、$v$,如果$u$到$v$有一条边,那么我们将$F[i][阅读全文
posted @ 2018-10-11 18:24 chy_2003 阅读(7) 评论(0) 编辑
摘要: 解题思路 题目里要求$\sum_{i=1}^kA^i$,我们不妨再加上一个单位矩阵,求$\sum_{i=0}^kA^i$。然后我们发现这个式子可以写成这样的形式:$A(A(A...)+E)+E)+E$于是,我们可以将$ A+E$看做一次变换,然后尝试构造一个矩阵。我们发现: $$ (\left[ \阅读全文
posted @ 2018-10-11 16:48 chy_2003 阅读(9) 评论(0) 编辑
摘要: 解题思路 首先肯定是考虑如何快速求出一段铁路的价值。 $$ \sum_{i=1}^k \sum_{j=1, j\neq i}^kA[i]A[j]=(\sum_{i=1}^kA[i])^2 \sum_{i=1}^kA[i]^2 $$ 那么我们要维护如下两个东西,就可以在$O(1)$内求出一段铁路的价值阅读全文
posted @ 2018-10-10 19:56 chy_2003 阅读(10) 评论(0) 编辑
摘要: 问题分析 首先,如果一个人的$w$和$h$均小于另一个人,那么这个人显然可以被省略。如果我们将剩下的人按$w[i]$递增排序,那么$h[i]$就是递减。 之后我们考虑DP。 我们设$f[i][j]$为到第$i$个人,打了$j$个洞的花费。于是我们可以得到如下DP过程: C++ for( LL i =阅读全文
posted @ 2018-10-09 09:39 chy_2003 阅读(4) 评论(0) 编辑
摘要: 题目大意 定义一个从小到大的数列的中位数为第 $ \frac{n}{2}+1 $ 项。求一个序列的所有连续子序列的中位数的中位数。 $ (n \leqslant 100000)$ 问题分析 由于$n$的范围较大,所以不可能把序列构造出来。我们不妨换个角度分析。我们设最后的序列总共有$N=\frac{阅读全文
posted @ 2018-10-07 20:44 chy_2003 阅读(19) 评论(0) 编辑
摘要: 解题思路 第一步显然是将原数组排序嘛……然后分成一些不相交的子集,这样显然最小。重点是怎么分。 首先,我们写出一个最暴力的$DP$: 我们令$F[ i ][ j ] $ 为到第$i$位,分成$j$组的代价,我们可以写出如下 $ DP$ C++ for( LL i = 1; i k$且从$l$转移优于阅读全文
posted @ 2018-10-07 20:23 chy_2003 阅读(9) 评论(0) 编辑
摘要: 题目大意 给定一个长度为$n(n \leqslant 500000)$的数列,将其分割为连续的若干份,使得 $ \sum ((\sum_{i=j}^kC_i) +M) $ 最小。其中$C_i$为序列中的项的值,$M$为常数。$ j,k $ 表示在原序列中连续的某一段的起始位置和结束位置。 解题思路 阅读全文
posted @ 2018-10-07 13:18 chy_2003 阅读(10) 评论(0) 编辑
该文被密码保护。
posted @ 2018-09-19 22:18 chy_2003 阅读(33) 评论(2) 编辑
摘要: [TOC] 本文章内,若无特殊说明,数字指的是整数,除法指的是整除。 什么是逆元 我们称$a$是$b$在模$p$情况下的逆元,则有$a \times b \equiv 1 ( mod\,\,p)$。 所以呢,我们其实可以将逆元看成一个数的相反数。所以在除以一个数的时候,就相当于乘上它的相反数。 如何阅读全文
posted @ 2018-09-16 17:49 chy_2003 阅读(97) 评论(0) 编辑
摘要: ~~我概率期望真是垃圾……,这题搞了两个钟头……~~ 题意 有$n$个人,$m$个浴室,每个浴室里有$a_i$个浴缸。每个人会等概率随机选择一个浴室,然后每个浴室中尽量平分到每个浴缸。问期望最长排队队伍长度是多少? 解题思路 我看网上的题解都是直接$DP$期望,然而本蒟蒻看不懂那个递推式是什么鬼……阅读全文
posted @ 2018-09-14 15:08 chy_2003 阅读(14) 评论(0) 编辑
摘要: 题意 有一个含有$2n(n \leqslant2000)$个实数的数列,取出$n$个向上取整,另$n$个向下取整。问取整后数列的和与原数列的和的差的绝对值。 就是说,令$a$为原数列,$b$为取整后数列,求 $$ min(abs(\sum_{i=1}^{2n}a \sum_{i=1}^{2n}b))阅读全文
posted @ 2018-09-13 21:07 chy_2003 阅读(12) 评论(0) 编辑
摘要: ~~51Nod是个好地方啊~~ 题意 51Nod基础题第二题,高精度加法,可能有负数。 解题 如果按照一般的高精度,我们发现要分情况讨论,还要写高精度加法和减法,代码实现有点烦。而初中数学里说,省略加号的和。也就是说,只有加法,没有减法。那么我们又没有办法在做高精度的时候也统一加减法? ~~当然有咯阅读全文
posted @ 2018-09-13 14:44 chy_2003 阅读(19) 评论(0) 编辑
摘要: [TOC] 主定理 递归中,一个规模为n的问题分成a个规模为n/b的问题,额外计算复杂度为c n^d,那么 $$T(n) = O(n^d\log{n})(a = b^d)$$ $$T(n) = O(n^d) (a b^d)$$ 证明 我们画出递归树,则递归树共有logb(n)+1层。对于第j层,有a阅读全文
posted @ 2018-09-13 11:26 chy_2003 阅读(25) 评论(0) 编辑
摘要: 题目大意 设有一个数组A和对A的一个操作f。那么f(A)返回一个最小的k,使得A能分成k组(每组元素不一定连续,但每个元素一定属于某一组),且每组里的任意两个元素的乘积是完全平方数。 现有一个长度为n的数组A,问有多少中情况,从A中取出一段连续的子序列B,使f(B)=k(k = 1...n) 解题思阅读全文
posted @ 2018-09-13 11:25 chy_2003 阅读(8) 评论(0) 编辑
摘要: 题意 给定一个长度为n的数组A,将它变为一颗k叉树(1 using namespace std; struct Node{ int x, id; Node(int x_ = 0, int id_ = 0) {x = x_; id = id_;} }; const int MAXN = 200010;阅读全文
posted @ 2018-09-13 11:24 chy_2003 阅读(5) 评论(0) 编辑
摘要: "原题链接" 题目大意 给定一棵根为1,初始时所有节点值为0的树,进行以下三个操作: 将以某点为根的子树节点值都变为1 将某个节点及其祖先的值都变为0 询问某个节点的值 解题思路 这是一道裸的树链剖分题。下面详细地介绍一下树链剖分。 树链剖分预备知识: 线段树、DFS序 树链剖分想法|起源 首先,如阅读全文
posted @ 2018-09-13 11:23 chy_2003 阅读(6) 评论(0) 编辑
摘要: 概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行。时间复杂度O(δX × δY),空间复杂度O(1)。 参考程序段 TopCoder SRM 667 Div.2 T2 解题思路 可能大家的阅读全文
posted @ 2018-09-13 11:22 chy_2003 阅读(6) 评论(0) 编辑