[挖矿]BZOJ 第一页 除草

来源:互联网 发布:linux运维笔试题及答案 编辑:程序博客网 时间:2024/04/27 05:13

回来练习一下写代码能力,争取攻下基础数据结构和计算几何!

刷题进度:63 / 100

题解进度:31 / 100

代码链接:tangjz/acm-icpc/lydsy


1000:神题。

1001:原平面图最小割,转化为对偶(有向)图最短路。

1002:按照切分点设计dp,转化为数学公式,高精度模拟。

1003:令f[i]表示第i天完成的成本,转移代价是第j天到第i天的最短路。

1004:根据Polya定理,算出所有的置换的方案数求均值即可,m有逆元,每个置换里可以背包dp,f[i,j,k]表示三种卡片为(i,j,k)的方案。

1005:每个点的度数减一即它在树的Purfer编码里出现的次数,排列组合求可能的Purfer编码串个数,需要高精度。

1006:在只有三元环的图里求最少染色数,cdq的MCS算法。

1007:求半平面交,类似于维护一个凸壳。

1008:算反面排列组合即可,快速幂。

1009:利用KMP进行数位dp,f[i,j]表示长度为i、匹配j位的合法数字方案数,将第二维转化为矩阵加速。(可以加强成在AC自动机上的数位dp)

1010:f[i]表示前i个已装好的代价,转移时状态是单峰的,用单调队列维护即可。

1011:设定一个块上限,标号小于块上限的暴力,大于上限的由于部分转移的贡献可以忽略不计所以只暴力最近的一块。

1012:维护当前序列的一个单调栈,询问即在单调栈里二分最大值的位置,单调栈里元素是单减的、位置是单增的。

1013:写出方程,高斯消元。

1014:

1015:离线,逆着询问只有增边,并查集维护。

1016:具有相同权值的边不会超过10条,直接dfs看当前权值能满足最小生成树条件的方案,乘法原理组合起来。

1017:树dp,f[i,j]表示以i为根的子树花j代价能得到的最优值,g[i,j]表示以i为根的子树不考虑i的花j代价能得到的最优值,用孩子得到g,枚举父亲的合成数量即可。可以先做一遍dfs弄清每个节点可以得到的数量与单位代价。

1018:

1019:题中汉诺塔的游戏规则限定了答案一定是一个齐次线性递推,暴力搜索前两项的答案即可,dp不太方便。

1020:

1021:

1022:Anti-Nim游戏,先手必胜当且仅当所有堆的石子数都为1且游戏的SG值为0,或是存在一堆的石子数大于1且游戏的SG值不为0。

1023:

1024:搜索+剪枝,状态为当前长宽的蛋糕一应该尽量均匀的分成多少块,保证每块蛋糕的面积相等,划分状态时枚举从哪里切开即可。

1025:一个序列循环节等于其互不影响的置换循环的最小公倍数,这些循环节的和为n,于是转化为求一些质数的幂和不超过n,对应质数的幂乘积有多少种,利用背包计算即可。

1026:影响第i位数字取值的仅有第i-1位和第i+1位,于是可以计算前i位满足条件且第i位为j的方案数,满足条件是指不大于某个数字,用不大于B的答案减去不大于A-1的答案即可。

1027:第三维由前两维唯一确定,若选了k个材料,则它们能调配出的产品前两维对应的点一定在这k个材料对应的点组成的凸包里,于是可以利用半平面的性质,如果这m个产品点在材料的第i个点与第j个点的连线同侧,那么同时选第i个材料和第j个材料是优的,现在要找的就是一个闭路径使得这m个点在路径的同侧,于是利用floyd计算最小环代价即可,具体上可以看作是,如果i走到j是优的那么代价为1(路径上多一个点),产品点数较多的时候可以只留下一个凸包然后再凸包上二分检查。

1028:枚举听牌,枚举将牌,转化为判定一个序列能否胡牌,策略是顺序考虑每张牌,能碰就碰,不能则当作顺子的最小牌来考虑,贪心判断是否有解。

1029:贪心,利用堆维护最少的使用时间,依次判断是否调整即可。

1030:考虑问题反面,即求不成功匹配任何一个模板串的文本串个数,令f[i][j]表示长度为i,匹配模板Trie到第j个节点的方案数,dp计算不到达任何一个匹配节点的方案数即可。

1031:将循环串的后缀排序即可,Hash、后缀系列想用什么用什么。

1032:数据有问题,错误的算法是:令f[i][j]表示消去i到j的最大得分,区间dp即可。

1033:

1034:分别从双方贪心即可,使得我方最优的决策一定是用最少的代价获得最大的收益。

1035:

1036:

1037:令f[i][j][p][q]表示用i个男生,j个女生,男生最多比女生多p个,女生最多比男生多q个的方案数,判断合法情况后递推dp即可。

1038:

1039:不难发现本质相同的点列,相邻点的连线的转角和比例是相同的,或者关于y轴对称,那么先将每个长度为n的点列表示成n-2个二元组,不想损精度可以用整数四元组代替,然后离散化成数字,用后缀数组或者自动机做匹配即可,后缀数组可能st表内存不够可以用线段树维护在树上二分,自动机的后继节点可能需要map来存储。

1040:

坑,待填。


0 0