合集-搜索
摘要:原题链接 题解 1.虫洞等价于建立负权边 2.回到过去等价于存在负权环 这里就相当于检测是否存在负权环,怎么判定呢?广搜,对于任意不含有负权环的,任意两点间的点数一定小于n 如果存在负权环,那么搜索会一直沿着这个环进行下去,其路径的点数会大于n code #include<bits/stdc++.h
阅读全文
摘要:原题链接 这真的是橙题吗 题解 读题,每个材料都有用或不用两种选择,然后n的数据范围也很小,所以考虑二进制dp (别管我为什么不叫状态压缩) 遍历 0 到 \(2^{20}-1\)(十进制下),如果存在互相矛盾的1,代表这个状态不能用 code #include<bits/stdc++.h> usi
阅读全文
摘要:原题链接 题解 模拟,遍历n个物品,一开始一个箱子不给,遍历到某个物品时,先把所有已经给了的箱子放进去试试,再创一个新箱子放进去试试 code #include<bits/stdc++.h> using namespace std; int n,w; int cnt,ans; int chongdi
阅读全文
摘要:原题链接 题解 \(gcd\) 一定能被 \(a[1][1],a[n][m]\) 整除 2.\(gcd\) 能被通过的路径上所有元素整除 由此分析:遍历 \([1,\sqrt{gcd(a[1][1],a[n][m])}]\) 判断能否通过(被路径上所有元素整除) 我还在思考是广搜还是深搜,由于起点终
阅读全文
摘要:原题链接 题解 确定起点和终点,求救援人数最长,路径最短的路径,只需要集群算法中优先队列中重载比较符修改一下就就行,由于数据量很小,所以输出路径的时候搜索就行(最优解唯一) code #include<bits/stdc++.h> using namespace std; struct node {
阅读全文
摘要:原题链接 题解 复杂图论题做多了这种题不会做了 直接模拟即可,标记被摧毁的城市,然后遍历所有城市,能一次性搜索到的城市是一个城市群,累积有几个城市群 code #include<bits/stdc++.h> using namespace std; vector<int> G[505]; int v
阅读全文
摘要:原题链接 题解 细节很多,看代码 code #include<bits/stdc++.h> using namespace std; string s; int num; int vis[55][100005]={0}; int ans[55][100005]={0}; int sou(int po
阅读全文
摘要:原题链接 题解 1.集合+搜索 2.把数字看成间隔而不是点 3.类似于差分约束,这里的建边意味着相对大小,根据传递性可知,如果ab建边,bc建边,那么ac之间的关系也能确定,可以用搜索维护 所以unknown代表两个点没有之间或者间接的边相连,可以用集合维护 code #include<bits/s
阅读全文

浙公网安备 33010602011771号