08 2021 档案
摘要:尼姆博弈: 一:给定n堆石子,每次可以从一堆中取任意数量个,最后一个取完的获胜。 二:给定n堆石子,每次可以从一堆中取最多k个,最后一个取完的获胜。 三:给定n堆石子,每次可以选最多k堆,每堆可以取任意数量个,最后一个取完的获胜。 Solution: 一:这是最经典的一种尼姆博弈,先手必胜态为所有堆
阅读全文
摘要:其实在上一年就已经学过了Min_25,但当时理解得不是很好,现在重新来写一下。(其实是洲阁筛找不到阳间的板子,所以还是果断回来Min_25) 好了回归正题,其实也没有什么好讲的好像,就是推公式就行了。(雾) 可以使用Min25筛的前提是,该函数是个积性函数,且它在质数处的前缀和可以很快求出来,而且是
阅读全文
摘要:题意:简化下就是给定一个n * m的棋盘,有q组询问,每次询问棋子是否能放置在该位置。 能放置的条件就是,该位置之前没棋子,且该位置可以走到棋盘外。 Solution: 很明显这里是一个搜索类的问题,但是因为询问次数过多,如果对于每次询问都去搜索显然会超时。 考虑对询问离线:假定我们目前已经放置下了
阅读全文
摘要:题目一题比一题难读..... A:签到了属于是。 考虑每个点操作偶数次才能保证方向不变。 那么对于它排序后的位置一定要保证距离为偶数距离才行。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long lon
阅读全文
摘要:div2的T3我就爬了orz........ 摸了半天只想出来了一个40分的做法: 第一1的判断:暴力dfs,感觉可以记忆化一下a的前缀再剪一下枝。不过数据大还是会T掉。 对于2的判断,我这个根据入度去贪心维护,感觉上复杂度和正确性都是在线的好像。 // Author: levil #include
阅读全文
摘要:A:水题 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> pii; const int N = 1e4 + 5; const int M
阅读全文
摘要:话不多说直接上题。 P3195 [HNOI2008]玩具装箱: // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> pii; const i
阅读全文
摘要:本来都是不搞计算几何的.. 但是由于斜率dp里要用到,所以被迫学一下。 定义:覆盖所有平面内的点的最小的凸多边形。 Graham算法: 以某个点为起点左右转移来维护凸包的边界的思路。 利用极角排序来对过程优化。且维护一个栈。 洛谷P2742 // Author: levil #include<bit
阅读全文
摘要:A:很显然对于每个bit位,只要存在一个0,最终都能通过很多次操作后全部变成0.统计全部为1的位数即可。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<
阅读全文
摘要:这里是个DAG,可以利用类似倍增的做法。 但是可以直接支配树做,建立一个虚点向所有的起点,然后支配树就即可。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pai
阅读全文
摘要:个人觉得理解起来比较抽象,自己可能也讲不好。 定义: 支配点:对于当前点u,如果删去点v后,点u就无法从起点s到达,那么称v为u的支配点。 支配树:将每个点和它的最近支配点连边,那么最后就会形成一棵树,称为支配树。 这个支配点具有类似传递性的性质,a是b的支配点,c是b的支配点,那么必定存在:a是b
阅读全文
摘要:这场前面几题感觉都不是很难。 A:很显然很大的时候都用最大的来塞就行了,对于较小的时候用背包计算下最优的方案。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pa
阅读全文
摘要:Fansblog: 虽然想到了威尔逊定理,但是觉得用不上。 这里有个结论,那就是相邻的质数之间的最大距离 <= 1e5 + 5。 有了这个结论,我们就能暴力找到Q。 然后根据威尔逊定理 (p - 1)! mod p = p - 1。 那么(p - 1) ! = (p - 1) * (p - 2) *
阅读全文
摘要:A:排序之后以某个点为分界线肯定是最优的。 // Author: levil #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<double,int> pii; const int N =
阅读全文
摘要:1001 : 点双连通分量: tarjan模板题:需要注意的是,点双连通分量是极大子图,也就是说他如果是很多个环拼成一个环,那么这个分量还是一个,就是最大的那个。 我们从环顶退栈即可,类似割点的位置。 / Author: levil #include<bits/stdc++.h> using nam
阅读全文
摘要:练完车了,回归了! Longest Subarray: 这题的做法抽象到了极点。还是没有完全看懂。 题解:https://www.cnblogs.com/vege-chicken-rainstar/p/11503606.html 只能写下大致的理解:对于不合法的区间 + 1,合法 - 1 最后满足
阅读全文
摘要:这题非常好。 dp[i][j][3] - 以i为根的子树保护了j个点的方案数,0 - 未放置自己,且没被子节点保护,1 - 未放置自己,被子节点保护,2 - 放置了自己. 这里的转移从所有子节点的状态转移过来来想比较好。 这里主要有一点就是会存在增加新节点的情况。 1:自己没有放置,但是被子节点覆盖
阅读全文
摘要:出题人卡的真的好. 宇佐大人的白旗 ~ Most Famous Hero: 这题有点无语了,比赛的时候数据出问题了,害我一直出问题,最后数据修了就过了。 做法1:直接最短路上更新就好了。 // Author: levil #include<bits/stdc++.h> using namespace
阅读全文

浙公网安备 33010602011771号