随笔分类 -  1-source-省选

摘要:"传送门" 神™这题暴力能A,这出题人都没造那种我考场就想到的数据,~~难怪我的垃圾做法有分~~ 先考虑没有撤销操作怎么做,因为每次插入一段一样的字符,所以我们可以把$x$个字符$c$定义为$cx$,然后用这种新字符做$\mathrm{kmp}$.但是直接把一般的$\mathrm{kmp}$搬过来做 阅读全文
posted @ 2019-04-13 09:09 ✡smy✡ 阅读(411) 评论(7) 推荐(0)
摘要:"传送门" 这是什么神仙操作... 首先要注意一些性质.首先每一个$(x,n)$的边可以把当前多边形分成两半,这两半的操作是独立的.然后对于某一个没有$(x,n)$的边的多边形,最优操作是唯一的.拿样例举例,必须先选$(1,5)$,然后多边形被分成两半,这两半分别只能选$(1,3)$,$(3,5)$ 阅读全文
posted @ 2019-04-09 10:15 ✡smy✡ 阅读(175) 评论(0) 推荐(0)
摘要:"传送门" $HNOI2019$前最后一题了qwq 这题要分情况,如果$p=2$或$5$,那么只要区间内最后一个数字是$p$的倍数就好了,这个可以莫队,也有更优秀的做法.莫队做法可以看代码~~懒~~ 否则,考虑一个数怎么表示,记$s_i$为前$i$为构成的数,可以知道区间$[i,j]$的数应该是$s 阅读全文
posted @ 2019-04-05 20:18 ✡smy✡ 阅读(113) 评论(0) 推荐(0)
摘要:"传送门" ~~gugugu~~ 首先每个人管理的区域是一个多边形,并且整个矩形是被这样的多边形填满的.现在的问题是求一条经过多边形最少的路径到达边界,这个可以最短路. 现在的问题是建图,显然我们应该给相邻的多边形连边,考虑一个人和另一个人的多边形交界线,这个线就是两点线段的中垂线,于是我们可以每次 阅读全文
posted @ 2019-04-05 19:52 ✡smy✡ 阅读(162) 评论(0) 推荐(0)
摘要:"传送门" 对抗搜索都不会,我真是菜死了qwq 首先根据题目条件,可以发现从上到下每一行的棋子数是单调不增的,然后n m都比较小,如果把状态搜出来,可以发现合法状态并不多,所以可以用一个11进制数表示状态,然后对应的值存在map里.然后状态之间的转移就看这个状态应该是谁下,如果是先手就取max,否则 阅读全文
posted @ 2019-03-24 22:29 ✡smy✡ 阅读(182) 评论(2) 推荐(1)
摘要:"传送门" 题目要求割掉一条边后使得图不连通,那么可以使用tarjan算法求出所有的割边,然后把边双缩成点,就能得到一棵树,现在问题是在加入一条边的情况下,割掉最小的一条边使得图不连通,割掉的这条边权值最大是多少 加入的边如果是$(x,y)$,就可以使得链$(x,y)$上所有边不被割,要最大化答案就 阅读全文
posted @ 2019-03-02 20:38 ✡smy✡ 阅读(210) 评论(0) 推荐(0)
摘要:"传送门" (下面记年龄为$a_x$)题目要求的是$$\sum_{x=1}^{n} [a_x\in [l,r]] dis(x,u)=\sum_{x=1}^{n} [a_x\in [l,r]] de_x+\sum_{x=1}^{n} [a_x\in [l,r]] de_u 2 \sum_{x=1}^{ 阅读全文
posted @ 2019-02-26 16:51 ✡smy✡ 阅读(138) 评论(0) 推荐(0)
摘要:"传送门" md这题和矩阵树定理没半毛钱关系qwq 首先先不考虑有环,一个$DAG$个外向树个数为$\prod_{i=2}^{n}idg_i($就是$indegree_i)$,因为外向树每个点入度为一,对于一个点有入度个父亲可选,然后乘法原理起来就是答案 现在可能加一条边会有环,那么答案可以考虑总方 阅读全文
posted @ 2019-02-25 20:14 ✡smy✡ 阅读(122) 评论(1) 推荐(0)
摘要:"传送门" 其实这题难点在于处理路径包含关系 先求出树的dfn序,现在假设路径$xy$包含$uv(dfn_x define LL long long define db double define il inline define re register using namespace std; c 阅读全文
posted @ 2019-02-25 20:01 ✡smy✡ 阅读(127) 评论(0) 推荐(0)
摘要:"传送门" 我们把一种方案的$\sum a_{i,j}$和$\sum b_{i,j}$看成点$(\sum a_{i,j},\sum b_{i,j})$,那么就只要求横纵坐标之积最小的点,类似于最小乘积生成树 首先跑出$\sum a_{i,j}$最小和$\sum b_{i,j}$最小的,得到的点记为$ 阅读全文
posted @ 2019-02-25 19:44 ✡smy✡ 阅读(118) 评论(0) 推荐(0)
摘要:"传送门" 首先根据题目条件,题目中如果是=的点可以缩起来,然后$a define LL long long define db double define il inline define re register using namespace std; const int N=100+10,mo 阅读全文
posted @ 2019-02-22 22:36 ✡smy✡ 阅读(125) 评论(0) 推荐(0)
摘要:"传送门" "吐槽题目标题" 这个依赖关系是个树,可以考虑树型dp,~~设f_i表示子树i的答案~~ 因为这是个序列问题,是要考虑某个数的位置的,所以设$f_{i,j}$表示子树i构成的序列,i在第j个位置的方案.转移依次合并儿子$y$,每次枚举一个位置j,以及枚举儿子$y$的序列中有k个数放在插前 阅读全文
posted @ 2019-02-22 17:26 ✡smy✡ 阅读(125) 评论(0) 推荐(0)
摘要:"传送门" 显然我们可以先算出每种卡牌在整场游戏触发概率,然后乘上权值,加起来就是答案 然而一个卡牌触发了,后面会直接跳过,这个看着很烦 注意到一个卡牌触发概率和自身概率以及前面牌的情况相关(和在哪一轮触发无关).设$f_{i,j}$表示 整场游戏 中前i种牌触发了j种牌的概率,每次转移只要讨论第i 阅读全文
posted @ 2019-02-22 17:09 ✡smy✡ 阅读(120) 评论(0) 推荐(0)
摘要:"传送门" 这什么题啊,乱搞就算了,不知道SPFA已经死了吗 ~~不对那个时候好像还没死~~ 暴力就是删掉边后跑~~Dijkstra~~ SPFA 然后稍微分析一下,可以发现题目中要求的不经过最短路某条边的路径,一定是先在最短路上走,然后走不是最短路的边,然后走回在最短路上的点走完最短路,因为绕两次 阅读全文
posted @ 2019-02-21 22:22 ✡smy✡ 阅读(158) 评论(0) 推荐(0)
摘要:"传送门" 这题又是我什么时候做的(挠头) 首先是个和SG函数有关的博弈论,SG=0则先手必败.显然一堆石子就是一个游戏,而若干堆石子的SG值就是每堆SG的异或和,所以算出每堆石子SG就能知道答案 然后怎么求SG,根据定义,一个局面SG是后继局面SG的$mex$,我们枚举某堆石子(有x个)分成多少堆 阅读全文
posted @ 2019-02-21 22:12 ✡smy✡ 阅读(141) 评论(0) 推荐(0)
摘要:"传送门" ~~谢特运输~~ 先要搞懂题目是什么意思,简化版题意就是一棵有根树,要使得每个点都满足任意一个儿子的权值等于这个点权值除以儿子数量,问最少要修改多少个点的点权 就可以一边dfs求出每个点权值是点1的多少倍,显然一个方案至少要有一个点的权值没有被改,所以一个暴力是枚举某个点权值没有被改,然 阅读全文
posted @ 2019-02-21 17:29 ✡smy✡ 阅读(101) 评论(0) 推荐(0)
摘要:"传送门" 我是什么时候写的这题的qwq 首先,发现关键点的总数被限制了,很自然想到虚树,并且,对于一个关键点,他管理的点显然是一个联通块 然后把虚树先建出来,然后两次dfs,第一次是向祖先更新离每个点最近的关键点是哪个,然后第二次向子树更新,这样就能得到每个虚树上的点属于哪个集合 然后还要考虑不在 阅读全文
posted @ 2019-02-21 15:59 ✡smy✡ 阅读(149) 评论(0) 推荐(0)
摘要:"传送门" ~~nmdwsm~~ "自己看吧,不想写了qwq" 垃圾代码如下 ~~和题解完全不一样~~ cpp include define LL long long define uLL unsigned long long define il inline define re register 阅读全文
posted @ 2019-02-21 15:42 ✡smy✡ 阅读(256) 评论(0) 推荐(0)
摘要:"传送门" 考虑只有一个询问,怎么使用暴力枚举最快的得到答案.因为要求最大的,所以可以把链按权值从大往小排序,然后往后扫,找到一个没有交的就是答案,直接退出 一堆询问,可以考虑整体二分,先二分一个值$mid$,然后从前往后扫,如果是加入/删除操作,并且权值$ mid$就把这个操作贡献记上;如果是询问 阅读全文
posted @ 2019-02-21 09:15 ✡smy✡ 阅读(152) 评论(0) 推荐(0)
摘要:"传送门" 先考虑暴力,显然每次是把一个位置集合和另一个集合合并,同时维护答案,合并的过程中如果两个集合每有一对元素相邻,答案就减1 优化暴力的话,说到合并,怎么能不想起启发式合并呢?每次把一个大小小的集合并到大的上面,如果一个元素合并一次是$O(1)$,总复杂度就是$O(nlogn)$.实现的化可 阅读全文
posted @ 2019-02-21 09:02 ✡smy✡ 阅读(127) 评论(0) 推荐(0)