随笔分类 - 搜索—dfs
摘要:首先看两条链怎么合并,贪心可得是从大到小取max,多条链同理 所以dfs合并子树的大根堆即可,注意为了保证复杂度,合并的时候要合并到最长链上,证明见长链剖分 cpp include include include using namespace std; const int N=200005; in
阅读全文
摘要:把连边和不连边看成黑白染色,然后就变成了 https://www.cnblogs.com/lokiii/p/10055629.html 这篇讲得好!https://blog.csdn.net/wzq_qwq/article/details/48035455 cpp include include u
阅读全文
摘要:参考 https://wenku.baidu.com/view/fee9e9b9bceb19e8b8f6ba7a.html?from=search 的最后一道例题 首先无向完全图是个若干点的置换,但是实际上要染色边,也就是要求边的置换 首先,通过dfs构造一个点的置换,然后再把每个置换分割加起来就是
阅读全文
摘要:誰か 名前を呼んで 僕の
突然悲しくなるのは何故
阅读全文
摘要:残弾、既に無くなった 此処で一度引き返そうか
阅读全文
摘要:遠くからあなたに出会うため
生まれてきたんだぜ
阅读全文
摘要:枚举起点做spfa,然后一条边在最短路上的条件是dis[e[i].to]==dis[u]+e[i].va,所以每次spfa完之后,dfs出a[i]表示经过i点的最短路的起点数,b[i]表示经过i点的最短路的终点数,一条边(u,v)在当前起点下的答案就是a[u] b[v],最终答案是总和 因为最短路构
阅读全文
摘要:数论+爆搜 详见这位大佬https://blog.csdn.net/eolv99/article/details/39644419 cpp include include include using namespace std; const int N=100000; int s,p[N+5],to
阅读全文
摘要:大力剪枝,最后洛谷上还开了o2才过…… 大概这样剪枝: 1.搜索中,一个队当前得分超过要求或者一个队剩下的比赛场数全赢也达不到要求则return; 2.注意到如果平局,最总分的贡献是2,否则是3,所以可以计算出非平局的常数,dfs中记录一下当前非平局有几场,如果超出要求或者剩下的场次全都非平局也达不
阅读全文
摘要:爆搜卡线过 并不知道正解是啥 cpp include include using namespace std; const int N=40; int n,ans,a[N][N],l[N],h[N],c[N]; void dfs(int x) { if(x==n+1) { ans++; return
阅读全文
摘要:长久以来的心理阴影?但是其实非常简单…… 预处理出deep和每组st的lca,在这里我简单粗暴的拿树剖爆算了 然后考虑对于一组s t lca来说,被这组贡献的观察员x当且仅当: x在s到lca的路径上,且w[x]==de[s] de[x]—— de[x]+w[x]==de[s]; x在lca到t的路
阅读全文
摘要:有一个性质就是组成最小生成树总边权值的若干边权总是相等的 这意味着按边权排序后在权值相同的一段区间内的边能被选入最小生成树的条数是固定的 所以先随便求一个最小生成树,把每段的入选边数记录下来 然后对于每一段dfs找合法方案即可,注意dfs中需要退回并查集,所以用不路径压缩的并查集 然后根据乘法定理,
阅读全文
摘要:C Minimization 枚举就可以了 因为最后一定会变成1,所以第一次操作的区间就包含1会比较优,然后枚举1在第一次操作区间里排第几个取min即可 D Snuke Numbers 卡死在这道题上了,思路比较迷 首先打表发现,Snuke数只会出现在结尾为9,99,999,9999……的数中,9的
阅读全文
摘要:真是神奇 根据斐波那契数列,这个a[i] include using namespace std; const int N=1005; int n; long long a[N],b[N],tot,s[N],c,ans; void dfs(int w,long long v) { if(v+s[w
阅读全文
摘要:思路还是挺好玩的 首先简单粗暴的想法是dfs然后用离散化权值树状数组维护,但是这样有个问题就是这个全局的权值树状数组里并不一定都是当前点子树里的 第一反应是改树状数组,但是显然不太现实,但是可以这样想,就是现在统计子树之前把查到的答案减去,然后再查子树最后加上查到的答案,这样相当于去重了 方便起见,
阅读全文
摘要:A. Infinity Gauntlet 模拟就行了(不过这个题面啊……) cpp include include include include using namespace std; int n; string s[10]; maphas; mapv; int main() { has["pu
阅读全文

浙公网安备 33010602011771号