- 博客(10)
- 收藏
- 关注
原创 P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈
链接:P2252 [SHOI2002]取石子游戏|【模板】威佐夫博弈前言:第一眼大水题,第二眼努力思考,第 N 眼我是大水逼。题意:不看题目标题都应该能看出来是取石子类的博弈论。有两堆石子,可以在任意一堆取走任意正整数的石子,也可以同时在两堆中取走相同任意正整数的石子。判断当前状态。分析:这就是大名鼎鼎的威佐夫博弈了。本着不会正解就暴力打表的思想,我们可以打出暴力,这其实是解决本题的关键所在。在暴力中我们可以发现只有以下状态先手必败: (0,0),(1,2),(3,5),(4,7),
2021-06-16 19:13:47
253
原创 欧拉定理学习笔记
欧拉定理:前言:数论以外怎么还有这么多欧拉定理??stO @Euler Orz前置需要:欧拉函数:φ(x)\varphi(x)φ(x) 表示小于 xxx 的正整数中和 xxx 互质的数的个数。手欧拉定理:当 a,ma,ma,m 互质时,aφ(m)≡1(modm)a^{\varphi(m)}\equiv1\pmod maφ(m)≡1(modm)证明:设 x1,2,⋯ ,φ(m)x_{1,2,\cdots,\varphi(m)}x1,2,⋯,φ(m) 为小于 mmm 且与 mmm 互质
2021-06-03 15:39:17
275
原创 扩展欧几里得算法学习笔记
扩展欧几里得算法学:前言:学了两周数据结构发现数论图论忘光了,所以回来补一下,顺便写下笔记。前置需要:欧几里得算法,裴蜀定理,脑子欧几里得算法:即辗转相除法,gcd(a,b)=gcd(b,a mod b)\gcd(a,b)=\gcd(b,a \bmod b)gcd(a,b)=gcd(b,amodb)裴蜀定理:若 a,ba,ba,b 是整数,且 gcd(a,b)=d\gcd(a,b)=dgcd(a,b)=d,那么对于任意的整数xxx和yyy,ax+byax+byax+by 都一定是
2021-06-03 15:38:18
213
原创 点分治学习笔记
点分治:前言:我太菜了。前置需要:分治思想树的重心心用途:点分治用于静态树上统计路径一类的问题。如查询边带边权的树上是否存在长度为 kkk 的点对等。算法:由于只有统计路径的操作,所以这棵树的根是任意取的,先假设树根为1。那么对于所有路径,只有经过树根。(图中红色)不经过树根。(图中蓝色)对于情况1,我们当然可以从根遍历整棵树,从而根据每个节点到根的距离等数据得出1的答案。对于情况2,发现不经过树根的路径必然在根节点的某一棵子树内,所以可以递归树根的每一
2021-06-03 15:37:48
169
原创 P6075 [JSOI2015]子集选取
链接:P6075前言:虽然其他大佬们的走分界线的方法比我巧妙多了,但还是提供一种思路。题意:%&¥……@#直接看题面理解罢。分析过程:看到这样的题面我脑里第一反应就是DP,但是看到n和k的范围只能作罢。想到各种柿子又根本推不出来,于是颓废地打了个复杂度算不来的貌似是 2n32^{n^3}2n3 的深搜。于是有以下测试:input output1 2
2021-06-03 15:37:10
185
原创 P4774 [NOI2018] 屠龙勇士
链接:P4774前言:交了18遍最后发现是多组数据没清空/ll题意:其实就是个扩中。分析过程:首先发现根据题目描述的选择剑的方式,每条龙对应的剑都是固定的,有查询前驱,后继(在该数不存在前驱时,最小值即为后继),和插入,删除操作,所以想到平衡树维护每条龙的剑的攻击力,记为b[i]。建议使用非旋treap,非常之好写。根据题目描述,a[i]为每条龙生命值,p[i]为每条龙回复量。发现能够击杀这条龙的条件可以列成一个方程:xb[i]−yp[i]=a[i]xb[i]-yp[i]=a[i]x
2021-06-03 15:36:44
160
原创 P3147 [USACO16OPEN]262144 P
链接:P3147 P3146双倍经验前言:今天发现的一道很有意思的DP题分析:第一眼以为是区间DP,于是设f[i][j]为从第i个数到第j个数可以合出的最大值,但思考后发现并不能简单合并,并且n的范围也不支持。于是想贪心,但是贪着贪着发现自己想不出,于是看题解,发现唯一的贪心也被hack了,果然正解不是贪心。 决定放弃。于是回头重新看题分析,首先根据n的范围分析后可以发现答案范围很小,最大为58,又回到刚开始的区间DP,我们发现其中有三个关键值,左端点,右端点和答案,那么我们可以尝试改变思
2021-06-03 15:36:04
259
2
原创 P2680 [NOIP2015 提高组] 运输计划
链接:P2680 题意:在树上把一条边边权变为0使得最长给定路径最短。分析:最大值最小可以想到二分答案,对于每一个mid,寻找所有大于mid的路径,再寻找是否存在一条边使得删去它后大于mid的路径都小于等于mid,可以将这个条件分成两部分。所有大于mid的路径都经过该边。可以想到统计路径数和每条边被经过的次数,前者可以在添加大于mid的路径时统计,后者则可以用树上边的差分搞定。每条大于mid的路径删去这条边后都小于等于mid。我们发现在添加路径时如果大于mid的路径数为零则任何一条边
2021-06-03 15:35:41
195
原创 P1505 [国家集训队]旅游
链接:P1505题意:给定一棵树,边带权值,五种操作:修改一条边的权值将两节点之间的所有边权值变为相反数询问两节点间边权和询问两点间最大权值询问两点间最小权值分析:所有操作都是对树上路径的询问和修改,说明这是道树链剖分模板题,思想简单,码量较大,也有一些踩坑的地方,适合初学树剖的来练手。算法:先解释下这几个:ttol[N],ltot[N],wtop[N]; 意思分别是treetoline,linetotree,weighttopoint前两个即树剖中树与线段树的对应关系,后
2021-06-03 15:34:36
136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅