SCP-bzoj-3309
摘要:项目编号:bzoj 3309 项目等级:Safe 项目描述: "戳这里" 特殊收容措施: 以下用$(x, y)$表示$gcd(x, y)$。 $$ ans = \sum _ {i = 1} ^ {a} \sum _ {j = 1} ^ {b} f((i, j)) = \sum _ {g = 1} ^
阅读全文
SCP-bzoj-4734
摘要:项目编号:bzoj-4734 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 附录: 1 #include <bits/stdc++.h> 2 #define range(i,c,o) for(register int i=(c);i<(o);++i) 3 using namespace s
阅读全文
SCP-bzoj-1019
摘要:项目编号:bzoj-1019 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 对于一个hanoi,知道了各种移动操作的优先级,也就确定了方案。可以证明对于盘子数为N的hanoi,任意移动方案都等价于将数目为N-1的一叠盘子移动k次,并将最小的一个盘子经过b次后移动到目标柱顶端。这样,hano
阅读全文
SCP-bzoj-1090
摘要:项目编号:bzoj-1090 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 区间DP。设计状态f[i][j]表示压缩从第i位到第j位的字符串所需的最小长度。转移方式有三种: •初始化:j-i+1->f[i][j] •区间分割:f[i][k]+f[k+1][j]->f[i][j] •子串复制
阅读全文
SCP-bzoj-1069
摘要:项目编号:bzoj-1069 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 求凸包后在凸包上旋转卡壳。然而复杂度要求较低,故可直接枚举四边形的一条对角线,另两个顶点在凸包上随这条对角线的移动具有单调性,所以总复杂度O(n2)。 附录: 1 #include <bits/stdc++.h>
阅读全文
SCP-bzoj-1084
摘要:项目编号:bzoj-1084 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 分类讨论+DP。#滑稽 预处理前缀和s[i][s]=Σa[j][s](∀j∈[1,i])(m=1时略去第二维) 对于m=1,设计状态f[i][j]表示前i列中已选取j个矩形的最大分值。转移方程f[i][j]=max
阅读全文
SCP-bzoj-1058
摘要:项目编号:bzoj-1058 项目等级:Safe 项目描述: 戳这里 特殊收容措施: STL好题。维护两个set,一个存储数列里相邻元素差,另一个存储整个数列。 对于MIN_SORT_GAP操作,维护一个ans表示答案,每个INSERT操作时通过第二个set更新即可。 针对INSERT操作的特性,我
阅读全文
SCP-bzoj-1085
摘要:项目编号:bzoj-1085 项目等级:Safe 项目描述: 戳这里 特殊收容措施: A*(上下界剪枝)。 答案上界:15。 答案下界:当前步数+当前状态剩余步数估价。 这里我们简单地设计估价函数为当前状态与目标状态不相同的棋子数-1,与0的较大值。这样保证了0≤估价≤正确步数。 复杂度o(25*C
阅读全文
SCP-bzoj-1057
摘要:项目编号:bzoj-1057 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 首先枚举最左上角的点(记为(1,1))是黑点还是白点,这样就可以把与(1,1)不在同一对角线系的格点颜色翻转(形式化地,格点(x,y)被翻转颜色当且仅当(x+y) and 1=1),然后问题就等价于求整个棋盘中的颜
阅读全文
SCP-bzoj-1079
摘要:项目编号:bzoj-1079 项目等级:Safe 项目描述: 戳这里 特殊收容措施: DP。普通的状压状态数515,显然TLE+MLE,我们考虑把底数和幂换一换,压成155的状态数。 故状态设计为:f[last][rest1][rest2][rest3][rest4][rest5],表示上一个颜色为
阅读全文
SCP-bzoj-1078
摘要:项目编号:bzoj-1078 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 斜堆有一个著名的性质:如果一个节点没有左子树,则它一定没有右子树,这也是它“斜堆”名称的由来。 此题通过给出斜堆来生成插入序列,正着构造显然很难,我们考虑倒着删,这样只需考虑最后一个插入斜堆的节点的性质即可。 考虑
阅读全文
SCP-bzoj-1068
摘要:项目编号:bzoj-1068 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 区间DP。f[l][r][s]表示l到r的子串能最小被压成的长度,其中s∈[0,1]表示该串压缩后串中是否能含有M。 我们可以通过三种方式转移: •如果该区间含有缓冲区,则其可分成两个可能带有M的区间,中间插一个M
阅读全文
SCP-bzoj-1054
摘要:项目编号:bzoj-1054 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 直接状压BFS即可,我实现的比较渣。。复杂度O(45*216)。 附录: 1 #include <bits/stdc++.h> 2 #define range(i,c,o) for(register int i=(
阅读全文
bzoj1072题解
摘要:【解题思路】 状压DP。f[i][j][k]表示当前DP到第i位,模d意义下余数为j,状态为k的方案数。其中状态k表示每个数字还剩多少个没取,状态数最多210。 于是有递推式转移方程:f[i+1][(j+c)%d][k']+=f[i][j][k](c∈[0,9],k'为k删去数字c后的状态)。复杂度
阅读全文
bzoj1083题解
摘要:【题意分析】 给你一张无向图,求其最小瓶颈生成树的值。 【解题思路】 有一个很显然的定理:任意一张无向图的最小生成树即为最小瓶颈生成树。所以求最小生成树的时候取边权的最大值即可。 或者可以修改Dijkstra算法,dis[i]表示当前i离最小瓶颈生成树的最小瓶颈值,也可以证明是具有最优子结构的。 复
阅读全文
bzoj1098题解
摘要:【题意分析】 给你一张无向图,求其补图的联通块数及各个联通块大小。 【解题思路】 暴搜! 然而n2会T怎么办? 仔细观察发现m远小于n2,也就是说这是一张极其稠密的补图。 这时就要用到黑科技了:floodfill! 用邻接表维护原图的边,用链表维护当前剩余可选点,每次从队首出发从链表里找补图的边,把
阅读全文
bzoj1044题解
摘要:【题意分析】 本题等价于如下描述: 有一个长度为n的正整数序列,要求将其分解成m+1个子串,使最大子串和最小。求这个最大子串和及对应的分解方案数。 【解题思路】 第一问二分+贪心即可。容易证明对于确定的最大子串和,分解子串使子串个数最小是一个具有最优子结构的问题。复杂度O(nlog2Σli)。 第二
阅读全文
bzoj1047题解
摘要:【解题思路】 (p.s.:刚看的时候一脸懵逼。。没看见N已经给定了,还以为要用某些高明的方法。。果然还是太naive了。。) 两遍预处理,第一遍处理出f[i][j][0/1]表示第i行从j-n+1~j中的最小/大值,第二遍基于f数组处理出g[i][j][0/1]表示以(i,j)为右下角的长度为n的正
阅读全文
bzoj1050题解
摘要:【解题思路】 先把边按边权排序,然后O(m)暴力枚举最小边,对于每条最小边,将比其大的边按序加入直到起终点连通,此时最大边权/最小边权即为选择该最小边情况下的最小比值。复杂度O(m(m+n)α(n))。 【参考代码】 1 #include <bits/stdc++.h> 2 #define rang
阅读全文
bzoj1066题解
摘要:【解题思路】 考虑拆点,把每根石柱拆成两个点,具体可以理解为石柱底部和石柱顶部,能爬到石柱顶部的蜥蜴只有有限只,而且蜥蜴只有爬到了石柱顶部才能跳到其他石柱的底部。 这样,考虑如下建图: 将每个有蜥蜴的石柱底部和源点连边,容量为1; 将每个可以跳出边界的石柱顶部和汇点连边,容量为∞; 将每根石柱顶底相
阅读全文