随笔分类 -  网站->LOJ

上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
摘要:题解 之前尝试HNOI2016的时候弃坑的一道,然后给补回来 (为啥我一些计算几何就写得好长,不过我写啥都长orz) 我们尝试给这个平面图分域,好把这个平面图转成对偶图 怎么分呢,我今天也是第一次会 首先我们把一条边拆成两条有向边,每个点的出边按照弧度排序 显然,相邻的两条边一定夹着一个域 我们从一 阅读全文
posted @ 2018-08-19 10:09 sigongzi 阅读(162) 评论(0) 推荐(0)
摘要:题解 可持久化可并堆 用$f[i,j]$表示最大的质数标号为i,然后有j个质数乘起来 用$g[i,j]$表示$\sum_{k = 1}^{i}f[k,j]$ 转移是 $f[i,j] = \sum_{k= 1}^{j} g[i 1,j k] p_{i}^{k}$ $g[i,j] += f[i,j]$ 阅读全文
posted @ 2018-08-18 16:23 sigongzi 阅读(163) 评论(0) 推荐(0)
摘要:题解 题面太长无法阅读系列…… 这里说的选择改变指的是在下面区间里碰上了一个更长的可匹配的地址,如果可匹配但是匹配长度没有当前的值大,那么不算改变 我们建一个可持久化的trie,查询的时候先在前$a 1$个里找到最长的可以得到的地址 然后再在区间的trie里找到那条链上,如果碰到一个结束点且比我们初 阅读全文
posted @ 2018-08-18 11:13 sigongzi 阅读(184) 评论(0) 推荐(0)
摘要:题解 这显然是一道题拆成两道 然后我胡乱分析了一波,决定第一题就用点度贪心(反正散播的能量肯定能被使用),然后过了 第二题开始mengbier 设$f_u$表示第u个点在父亲发动之后才发动的最小价值 $g_u$表示第u个点在父亲发动之前发动最小价值 转移的时候 $son_f$表示在父亲发动之后才发动 阅读全文
posted @ 2018-08-18 10:10 sigongzi 阅读(239) 评论(0) 推荐(0)
摘要:题解 一道非常神仙的计数题 如果只有一个点,就是非常简单的树型dp $f_{u} = (siz_{u} 1)! \prod_{v \in son_{u}} \frac{f_{v}}{siz_{v}!}$ $\frac{f_{u}}{siz_{u}!} = \frac{1}{siz_{u}} \pro 阅读全文
posted @ 2018-08-02 22:35 sigongzi 阅读(423) 评论(0) 推荐(0)
摘要:题解 我原来根本不会KM 更新每个节点增加的最小值的时候,要忽略那个方访问过的右节点!!! 然后就和最小乘积生成树一样了 代码 cpp include include include include include include define enter putchar('\n') define 阅读全文
posted @ 2018-06-24 15:40 sigongzi 阅读(122) 评论(0) 推荐(0)
摘要:题解 一道神仙的题 include include include include include define enter putchar('\n') define space putchar(' ') define mp make_pair define pb push_back define 阅读全文
posted @ 2018-06-23 20:09 sigongzi 阅读(247) 评论(0) 推荐(0)
摘要:题解 感觉极其神奇的状压dp $dp[i][S]$表示答案为i,然后不可选的点集为S 我们每次往答案里加一个点,然后方案数是,设原来可以选的点数是y,新加入一个点后导致了除了新加的点之外x个点不能选,那么方案就是把x个数在y 1(由于空余位置的第一个要放我们选的那个点)个位置里任意排列,方案数是$A 阅读全文
posted @ 2018-06-23 15:52 sigongzi 阅读(176) 评论(0) 推荐(0)
摘要:题解 由于强化卡都是大于1的,我们分析一下就会发现,尽可能多的用强化卡,至少用一张攻击卡,一定是每组卡牌的最优选择 所以我们把攻击卡和强化卡从大到小排序 我们设$g[i][j]$表示前i张卡牌里选择j张强化卡,能强化的倍数之和 如果$j include include include include 阅读全文
posted @ 2018-06-23 13:43 sigongzi 阅读(163) 评论(0) 推荐(1)
摘要:题解 加法没写取模然后gg了QwQ,de了半天 思想还是比较自然的,线段树合并的维护方法我是真的很少写,然后没想到 很显然,我们有个很愉快的想法是,对于每个节点枚举它所有的叶子节点,对于一个叶子节点的值为v,然后查询另一棵树小于v的概率和×该节点的p + 大于v的概率和 × 该节点的(1 p),作为 阅读全文
posted @ 2018-06-22 17:18 sigongzi 阅读(160) 评论(0) 推荐(0)
摘要:题解 建出一个主席树,因为出现大于区间一半的数只能有一个,就看看左右区间的增加有没有大于一半,如果有就走向那个子树,如果没有那么返回0 代码 cpp include include include include include include include include include def 阅读全文
posted @ 2018-06-20 18:02 sigongzi 阅读(188) 评论(0) 推荐(0)
摘要:题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位置的最小值有没有超过最小横坐标 第二次按照纵坐标把车加进去,然后查询最大纵坐标所在位置的矩形,横坐标 阅读全文
posted @ 2018-06-20 15:58 sigongzi 阅读(276) 评论(0) 推荐(0)
摘要:题解 波兰人的j是苹果,p是橘子 还真是跟中国过不去啊= =写的时候很难受 我们先求出每个点作为起点,能延伸到的最大长度,这个可以处理成前缀和,查询一下区间最小值是不是小于0,用st表实现,如果区间最小值大于等于0,那么这段区间,以该点作为起点是合法的 然后求出每个点作为终点能延伸到的最大长度,处理 阅读全文
posted @ 2018-06-20 15:06 sigongzi 阅读(196) 评论(0) 推荐(0)
摘要:题解 可以说是什么找规律好题了 但是要推生成函数,非常神奇…… 任何的一切都可以用$n^2$dp说起 我们所求即是 所有树的叶子总数/所有树的方案数 我们可以列出一个递推式,设$g(x)$为$x$个节点构成的树的总数 那么有 $g(n) = \sum_{i = 0}^{n 1}g(i) g(n 1 阅读全文
posted @ 2018-06-20 13:59 sigongzi 阅读(201) 评论(0) 推荐(1)
摘要:题解 我们枚举右端点判断合法的左端点有哪些 首先,记录一下右端点右边的点的pre,也就是这个数字前一个出现的位置,取所有小于枚举右端点r的值中最大的一个做为l,用优先队列维护即可,[l + 1,r]就是可能取到的左端点的区间 然后我们对于每一种数字,最前一次出现的位置p,最后一次出现的位置q,覆盖[ 阅读全文
posted @ 2018-06-19 18:57 sigongzi 阅读(124) 评论(0) 推荐(0)
摘要:题解 考虑朴素的暴力,相当于枚举u点的每个祖先f,然后统计一下这个点f除了某个儿子里有u的那个子树之外的节点个数,乘上f到u距离的二进制1的个数 那么我们用倍增来实现这个东西,每次枚举二进制的最高位j,用dfs序枚举点u,找到u的距离为$2^j$的祖先,那么在fa[u][j]这个祖先的位置,j这一位 阅读全文
posted @ 2018-06-19 15:05 sigongzi 阅读(192) 评论(1) 推荐(0)
摘要:题解 对于75分来说,操作肯定不会成环,可以暴搜 看成空格在移动,空格移动到原来的位置肯定经历了偶数个格子,但是操作的人是两个不同的人,所以肯定不会成环 对于满分做法,要找到一种更好的方式判先手是否会胜 我们看成空格在移动,每次空格必然是走一个黑棋,走一个白棋,这显然是一条交错路,我们考虑二分图 把 阅读全文
posted @ 2018-06-19 12:03 sigongzi 阅读(167) 评论(0) 推荐(0)
摘要:题解 一道神奇的dp 我们发现关于两个东西的记录很难办,但是我们发现在固定时间区间内,如果A场地举办的活动数是一定的,那么B场地肯定举办的活动越多越好 我们预处理一个$num[i][j]$表示时间区间$[i,j]$有多少个活动会在这个区间里举办(被区间完整包含) $pre[i][x]$表示$[1,i 阅读全文
posted @ 2018-06-19 08:44 sigongzi 阅读(157) 评论(0) 推荐(0)
摘要:题解 看完题目我的第一个反应是……要求最小花费的方案?!怎么求??? 然后我把题读完了。好吧。 记录一下size就行,比NOIP普及组还要不如的题= = 代码 cpp include include include include include include define enter putch 阅读全文
posted @ 2018-06-18 20:13 sigongzi 阅读(125) 评论(0) 推荐(0)
摘要:题解 显然是个$n^2$的dp 我们要找每个点不穿过非赛道区域能到达哪些区域的交点 可以通过控制两条向量负责最靠下的上边界,和最靠上的下边界,检查当前点在不在这两条向量之间即可,对于每个点可以$O(n)$求出来哪些点是可以到达的 之后dp即可 注意判断S点所在区域的时候需要找靠后的那个区域…… 代码 阅读全文
posted @ 2018-06-18 19:52 sigongzi 阅读(283) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页