上一页 1 2 3 4 5 6 7 8 ··· 13 下一页
摘要: Power Calculus 题意:问最少经过多少次乘除法混合运算之后,可以用$x$计算得到$x^n$。可以使用中间值,但不能出现负次方幂。 思路:因为$n<≤1000$,可以直接用一个数组记录得到的中间值。每一次用当前得到的数进行下一步计算,都遍历一次所有中间值,乘和除都试一遍就好了。 但如果单纯 阅读全文
posted @ 2020-09-22 17:56 StreamAzure 阅读(257) 评论(1) 推荐(1)
摘要: P2901 [USACO08MAR]Cow Jogging G 思路:先反向建边求各点到节点1的最短路,再A*依次得到节点$n$到节点$1$的第$k$短路。 总体来说就是改进版的BFS,在BFS的基础上另外设定了一个估价函数作为节点出队顺序的依据,而不像BFS那样先入队者先出队。在本题中,估价最小的 阅读全文
posted @ 2020-09-22 17:54 StreamAzure 阅读(213) 评论(0) 推荐(0)
摘要: P1880 [NOI1995]石子合并 做过类似的,不过这题稍微有点不一样:是环不是链。 只要把链复制一遍原来的链的后面,就可以化环为链了。 注意题目求的是N堆石子合并,枚举区间长度的时候依然是从2枚举到N。 int a[maxn]; int b[maxn]; //前缀和 int dp1[maxn] 阅读全文
posted @ 2020-09-18 23:15 StreamAzure 阅读(240) 评论(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 阅读(122) 评论(0) 推荐(0)
摘要: P1273 有线电视网 注意最里面那一层循环是在枚举物品:“选1个叶子节点”、“选2个叶子节点”…… 因为最多只能选$cnt$个叶子节点($cnt$为当前子树中的叶子节点个数),一种优化是先统计出这个$cnt$,最里面那层循环从1跑到$cnt$与$j$两者之间的最小值就可以结束了,都跑到$j$会TL 阅读全文
posted @ 2020-09-18 08:25 StreamAzure 阅读(149) 评论(0) 推荐(0)
摘要: P5322 [BJOI2019]排兵布阵 因为看到这题目分类在分组背包下,所以一直在试图抽象出分组背包的模型来……最后很接近答案了,对于第$i$座城堡所有玩家的出兵数量视为一组物品……再想到分组背包的板子,应该每组只能挑一个物品。但是结合题目,挑的物品不一样收益也不一样,这个收益该怎么计算卡住了我… 阅读全文
posted @ 2020-09-17 23:24 StreamAzure 阅读(136) 评论(0) 推荐(0)
摘要: 一、01背包 \(dp[i][j]:=\) 决策第$i$种物品、背包总容量为$j$时的最大价值 则$dp[i][j]$的取值有两种: 不取第$i$种物品,直接继承$dp[i-1][j]$ 在$dp[i-1]k$的基础上,取了第$i$种物品,装入。装入之后容量为$j$的背包恰好装满或装不满。 则 \[ 阅读全文
posted @ 2020-09-13 22:11 StreamAzure 阅读(215) 评论(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 阅读(250) 评论(0) 推荐(0)
摘要: P5490 【模板】扫描线 首先有这么一张图,要求它的面积并。 我们想,如果可以有一条扫描线从下往上扫,记录它所扫到的边的长度(并)\(len\),再求出这条边与即将扫到的下一条边的距离$h$,那么我们就可以求出第一块面积(紫色)\(S_1=len\times h\) 然而如何求出这个$len$? 阅读全文
posted @ 2020-09-04 21:59 StreamAzure 阅读(170) 评论(0) 推荐(0)
摘要: 畅通工程再续 HDU - 1875 思路: 1.将一条边加入最小生成树时有额外条件,注意一下即可。 2.如果所有点均可连通,那么应该在同一个集合里,也就是有同一个根节点;如果出现了不同的根节点说明没有全部连通。 然后就是套模板。 const int maxn = 100 + 10; const in 阅读全文
posted @ 2020-08-14 20:34 StreamAzure 阅读(115) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 ··· 13 下一页