Processing math: 100%

09 2020 档案

摘要:最大流问题 最大流问题满足以下三个条件: 容量限制:f(u,v)c(u,v) 斜对称性:f(u,v)=f(v,u) 流量平衡:(u,v)Ef(u,v)=0(除s,t外的图中任意两点) 原图中不存在的边也假设存在,视为容量为0. 残量网络:计算出每 阅读全文
posted @ 2020-09-26 00:11 StreamAzure 阅读(1056) 评论(0) 推荐(0) 编辑
摘要:迭代加深搜索(IDDFS) 一、IDDFS是什么 IDDFS是在DFS基础上增加迭代加深这一步的一种搜索算法。 迭代加深体现在以下两步: 预先估算答案所在深度,即一个深度约束值; 若在当前约束值下未能找到答案,则加大深度约束值,继续搜索。 二、IDDFS解决什么问题 当问题的答案满足以下两个条件: 阅读全文
posted @ 2020-09-22 17:57 StreamAzure 阅读(569) 评论(0) 推荐(0) 编辑
摘要:Power Calculus 题意:问最少经过多少次乘除法混合运算之后,可以用x计算得到xn。可以使用中间值,但不能出现负次方幂。 思路:因为n<≤1000,可以直接用一个数组记录得到的中间值。每一次用当前得到的数进行下一步计算,都遍历一次所有中间值,乘和除都试一遍就好了。 但如果单纯 阅读全文
posted @ 2020-09-22 17:56 StreamAzure 阅读(250) 评论(1) 推荐(1) 编辑
摘要:P2901 [USACO08MAR]Cow Jogging G 思路:先反向建边求各点到节点1的最短路,再A*依次得到节点n到节点1的第k短路。 总体来说就是改进版的BFS,在BFS的基础上另外设定了一个估价函数作为节点出队顺序的依据,而不像BFS那样先入队者先出队。在本题中,估价最小的 阅读全文
posted @ 2020-09-22 17:54 StreamAzure 阅读(206) 评论(0) 推荐(0) 编辑
摘要:P1880 [NOI1995]石子合并 做过类似的,不过这题稍微有点不一样:是环不是链。 只要把链复制一遍原来的链的后面,就可以化环为链了。 注意题目求的是N堆石子合并,枚举区间长度的时候依然是从2枚举到N。 int a[maxn]; int b[maxn]; //前缀和 int dp1[maxn] 阅读全文
posted @ 2020-09-18 23:15 StreamAzure 阅读(128) 评论(0) 推荐(0) 编辑
摘要:P3146 [USACO16OPEN]248 G dp[l][r]:= 区间[l,r]全部合并时可得到的最大数字。 由题意可以推出状态转移方程(注意新的数值是原来的数值+1): dp[l][r]=max(dp[l][r],dp[l][k]+1) 注意,只有相邻且数字相同的两个 阅读全文
posted @ 2020-09-18 12:25 StreamAzure 阅读(119) 评论(0) 推荐(0) 编辑
摘要:P1273 有线电视网 注意最里面那一层循环是在枚举物品:“选1个叶子节点”、“选2个叶子节点”…… 因为最多只能选cnt个叶子节点(cnt为当前子树中的叶子节点个数),一种优化是先统计出这个cnt,最里面那层循环从1跑到cntj两者之间的最小值就可以结束了,都跑到j会TL 阅读全文
posted @ 2020-09-18 08:25 StreamAzure 阅读(124) 评论(0) 推荐(0) 编辑
摘要:P5322 [BJOI2019]排兵布阵 因为看到这题目分类在分组背包下,所以一直在试图抽象出分组背包的模型来……最后很接近答案了,对于第i座城堡所有玩家的出兵数量视为一组物品……再想到分组背包的板子,应该每组只能挑一个物品。但是结合题目,挑的物品不一样收益也不一样,这个收益该怎么计算卡住了我… 阅读全文
posted @ 2020-09-17 23:24 StreamAzure 阅读(134) 评论(0) 推荐(0) 编辑
摘要:一、01背包 dp[i][j]:= 决策第i种物品、背包总容量为j时的最大价值 则dp[i][j]的取值有两种: 不取第i种物品,直接继承dp[i1][j]dp[i1]k的基础上,取了第i种物品,装入。装入之后容量为j的背包恰好装满或装不满。 则 \[ 阅读全文
posted @ 2020-09-13 22:11 StreamAzure 阅读(197) 评论(0) 推荐(0) 编辑
摘要:D - Decrease the Sum of Digits 只要发现进位可以直接抹掉后面的位数就行了,剩下的就是在第几位进位的问题。写得繁琐了一点。 int main() { //ios::sync_with_stdio(false); //while (scanf("%d%d",&n,&m)!= 阅读全文
posted @ 2020-09-08 10:37 StreamAzure 阅读(239) 评论(0) 推荐(0) 编辑
摘要:P5490 【模板】扫描线 首先有这么一张图,要求它的面积并。 我们想,如果可以有一条扫描线从下往上扫,记录它所扫到的边的长度(并)len,再求出这条边与即将扫到的下一条边的距离h,那么我们就可以求出第一块面积(紫色)S1=len×h 然而如何求出这个len阅读全文
posted @ 2020-09-04 21:59 StreamAzure 阅读(157) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示