- 博客(10)
- 收藏
- 关注
原创 [NOI2008] 假面舞会
如果整个图没有环,且不存在两条共用起点和终点的相交链,显然最多能分的种类数是每个连通分量内最长链的长度之和。如果整个图是由若干个不相交的环构成的话,最多能分的种类数是所有环长度的最大公约数(找环的时候,可以从连通块内的任意一点开始编号,第二次经过一个点的时候,它第二次的编号减去第一次的编号就是环的大小)。除了这两种特殊情况之外,还有两种情况:两个环之间有公共部分(指至少共用两个点)。 存在两个链共用起点和终点。对于情况 1,合法的面具数一定是这两个环长度的公约数。对于情况 2,合法的面具
2021-12-21 13:21:43
358
1
原创 [USACO03FALL]Beauty Contest G /【模板】旋转卡壳
题目描述给定平面上n个点,求凸包直径。输入格式第一行一个正整数n。接下来n行,每行两个整数x,y,表示一个点的坐标。输出格式输出一行一个整数,表示答案的平方。输入输出样例输入 #140 00 11 11 0输出 #12说明/提示【数据范围】对于100\%100%的数据,2≤n≤50000,10^4∣x∣,∣y∣≤104。实现首先我们求出来一个凸包(绿色),然后才能找直径(红色)找直径的方式:找两个点,做一条平行...
2021-12-21 13:13:16
366
1
原创 CSP-S 2021解题分析
提高组初赛还是蛮难的,我压着56分的线过来的1.廊桥分配 今年T1也是特别的水,导致后三题比较难首先有一个关键结论:如果给廊桥编上号,每当一架飞机到达后,如果强制让它进入编号最小的廊桥,这样不会影响进入廊桥飞机的集合,且当廊桥总数增加后,原本在哪个廊桥的飞机,仍旧会进入原来的廊桥。这个性质也很好理解:新加入廊桥可以视为原先的远机位的一部分,进入新加的这个廊桥的飞机可以视为在原来该进入远机位的飞机中贪心选择一轮。至此本题已经有了优秀的解决方案:...
2021-12-19 15:42:42
1754
1
原创 NOIP2021解题报告
1.报数像今年 T1 这种几年不遇的水题你是不可能再遇见第二次的。这道题提前预处理单纯地筛一筛就可以了,没有别的任何操作。需要注意的是,在预处理时要合理的剪枝,保证时间复杂度控制在(是数据范围T是询问数)。我们用f数组表示该数是否被标记。如果一个数i被标记过了,就直接跳过;如果i含有数字7,我们就将i的所有倍数(包括i本身)全部标记。我们用nx数组(也就是next的缩写)来记录该数的下一个报的数是多少。在处理的时候,我们需要记录上一个报的数ls(...
2021-12-18 21:21:43
647
1
原创 [NOI Online #3 提高组] 优秀子序列
写一个复杂度的题解吧,思路简单一些,虽然复杂度高,但是能过。首先,我们把每一个数字看成是一个集合。每个数字可以写成二进制,那么看这个二进制形式中,从右往左的每个位置上的数字。如果第i位上是1,表示这个集合中有2^i2i,否则表示这个集合中没有2^i2i。这里i从0开始。下文中,我们用小写字母表示数字,对应的大写字母表示集合。举个例子,数字5对应成二进制是,那么把5看成是集合。数字9对应二进制是,表示。现在要求我们找到一个子序列,子序列中任意两个数字a和b,都满足a&b=0...
2021-12-18 10:26:41
387
1
原创 [NOI Online #1 入门组] 跑步
本题就是正整数拆分问题,很容易想到一种O(n^2)的 DP:记 ,j表示用了前i个数和为j的方案数,那么=+,初始时=1 。这其实就是完全背包,但只能拿70分(也可能乱搞到80分)。那么怎么办呢?我们采用分块的思路,令m=,对于 i<m的数采用以上完全背包来求,这部分时间复杂度为。而对于大于等于m的数,采用另外一种 DP:记表示用了i个大于等于m的数和为j的方案数,那么,初始时=1。转移方程的第一项 表示在拆分序列中增加一个数m。 转移方...
2021-12-18 10:17:35
360
1
原创 [NOIP2007 提高组] 矩阵取数游戏
首先这个题的转移方程楼下的都说过了,就是在每行上的[i,j]区间的最大值dp[i][j]=max{dp[i+1][j]+2^(m-(j-i))×v[i],dp[i][j-1]+2^(m-(j-i))×v[j]}但是这题会爆long long,得用高精,但是高精很慢,这个方程又是O(nm^2)的,于是我受到讨论“为什么int128会CE”的启发,自己手写了个128位的整数运算,一点循环都没用,比高精快多了,主要就是各种高低位的操作。不过值得一提的就是在输出时肯定要模10除10,我用了这样一个除法公
2021-12-18 10:05:54
2028
原创 [NOI2016] 网格 题解
一个显而易见的性质是答案不大于2(角上的跳蚤最多与两个相邻)继而发现答案其实只可能是-1,0,1,2~~(废话)~~,分类讨论:-1:nm−c<2或者nm−c=2且剩下的两只跳蚤相邻;0:原图不连通;1:原图联通且有割顶;否则为2。但n,m\le 10^9n,m≤109这种数据范围肯定不能直接做了,发现只有蚱蜢周围的跳蚤可能是割顶,是不是可以把它们选出来建图呢?hack:(以下均用#表示蚱蜢,*表示选出的跳蚤,.表示其余跳蚤).**.*#.**中间的*成为
2021-12-17 23:58:17
279
原创 CSP-J 2021解题报告
好好复习初赛,我压线过的瞎搞的封面1.分糖果一般来说T1都不会太难,其实他还是不是很难我太蒻了,考场半小时才想出来咳咳,一看数据范围有有 10^9,一看就不是用暴力做的。假如有n个小朋友(包括你),你搬了k块糖果,那么你最终得到的奖励就是 k mod n 块糖果。也就是说,假如你最少搬l块糖果,最多搬k块糖果,你如果要得到最多的奖励,就要在l到r之间选一个数,使得这个数模n的值最大。那么最优的情况下会剩 n - 1 块糖果,当然,样例 2告诉我们,有时候我们没法这...
2021-12-17 23:44:25
963
原创 CSP-J 2021解题报告
好好复习初赛,我压线过的瞎搞的封面1.分糖果一般来说T1都不会太难,其实他还是不是很难我太蒻了,考场半小时才想出来咳咳,一看数据范围有有10^9109,一看就不是用暴力做的。假如有n个小朋友(包括你),你搬了k块糖果,那么你最终得到的奖励就是 k mod n块糖果。也就是说,假如你最少搬l块糖果,最多搬k块糖果,你如果要得到最多的奖励,就要在l到r之间选一个数,使得这个数模n的值最大。那么最优的情况下会剩n - 1 块糖果,当然,样例2告诉我们,有时候...
2021-12-17 23:13:28
822
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人