上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 75 下一页
摘要: 原题链接 考察:迭代加深搜索 思路: 迭代加深适用于预测的答案较小的情况,它比bfs更省空间.这里的加成序列在n<=10000的情况下,长度最长不超过14.因此可以用迭代加深. 光是迭代加深还是会T到爆,所以需要一些剪枝: 1.搜索顺序剪枝:每次优先处理结点少的分支,所以尽可能枚举大的点.所以我们从 阅读全文
posted @ 2021-04-19 13:05 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:搜索+背包dp 思路: 枚举n中选m个的组合数.最后在用dp求n-m个数能表示的和.时间复杂度Cnm * n*2000 ,数据跑不满.... 1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 con 阅读全文
posted @ 2021-04-17 14:46 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:最短路 思路: dist[v]表示到v的最短距离,cnt[v]表示达到v最短距离条数.dijkstra算法里,一旦v出队,那么它的最短距离就已经确定了.因为到达点v的最短距离,一定比当前点再去扩展的距离小.所以这道题不需要担心重复遍历点v,使得此路径后面的点方法数全部+1 这里注意相 阅读全文
posted @ 2021-04-17 10:34 acmloser 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:枚举+dfs or bfs 错误思路: 枚举每个点,求往下能到达的点和往上能到达的点,用st数组标记去过的点,set收集当前枚举点i能到达的点. 此思路错在如果存在双向边,有的点能去的点还未更新完就用来更新其他点.这使得这些点获得的点是不完全的,使得答案偏小. 正确思路: 枚举每个点 阅读全文
posted @ 2021-04-17 01:16 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:背包dp 思路: 组合问题一般用背包dp解决.f[i][j][k]表示前i个数选j个数,余数为k的最大和. 很容易想到状态转移方程f[i][j][k] = f[i-1][j-1][Get_Mod(k-a[i],K)]+a[i],f[i-1][j][k]之间取最值.时间复杂度是105* 阅读全文
posted @ 2021-04-16 20:57 acmloser 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:并查集 思路: 很容易想到用并查集的根节点代表此集合的权值和.但是注意在结点合并的时候,会出现本不属于这里的权值.被路径压缩加到子结点上. 这里有两种处理方式: 一、建立虚点. 在x,y之上建立一个结点s,在路径压缩时就不会合并到y集合的权值k. 二、特殊处理x结点权值,在x权值和上 阅读全文
posted @ 2021-04-16 13:01 acmloser 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:贪心+模拟 思路: 枚举从开始时间到结束时间每一天的收益.设收益为w,每天最多取min(树的苹果,v-w)个.注意不是最多取v个.因为是按天数枚举的.考虑存在苹果树没有取完隔天再取的情况,所以用了优先队列. 1 #include <iostream> 2 #include <cstr 阅读全文
posted @ 2021-04-15 01:37 acmloser 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:模拟 思路: 总共就三种方式,每个检验一下就行.但是注意日期不为0,且注意存在相同的答案,经过排序会将相同的日期排在一起.所以直接判断前一个是否与当前相同即可. 1 #include <iostream> 2 #include <cstring> 3 #include <algori 阅读全文
posted @ 2021-04-15 00:17 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:堆+枚举+贪心 md完全没想到,我是fw 思路: 有贪心思想可知,我们可以确定离开当前鱼塘后,去其他鱼塘钓鱼比折返更优.所以我们可以枚举最远到达哪个鱼塘,这样走路的时间就确定了.剩下就是在枚举的鱼塘范围内取最大的T-走路时间的鱼数. 时间复杂度O(n*Tlog2T) 1 #inclu 阅读全文
posted @ 2021-04-14 01:45 acmloser 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:思维 思路: 和CF817D一样的思路,考虑单点对答案的贡献.这题没必要统计左右边界.只需要记录上一个与当前字符相同的位置,右边界是字符串最右边.详情见代码 1 #include <iostream> 2 #include <cstring> 3 using namespace st 阅读全文
posted @ 2021-04-13 22:59 acmloser 阅读(58) 评论(0) 推荐(0) 编辑
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 75 下一页