摘要: 首先奇数肯定不行 构造如果都是1 一个1的价值为2 肯定是不够的 考虑尽可能构造0 如果是 10 那次数分别是 4 2 倒一下就是 2 4 如果是 100 那次数分别是 8 4 2 倒一下就是 2 4 8 所以尽可能接尽可能多的0 模拟一下就好 #include <bits/stdc++.h> us 阅读全文
posted @ 2022-04-22 19:04 wzx_believer 阅读(108) 评论(0) 推荐(0)
摘要: 首先能想到floyed暴力做法 60分是没问题的 进一步 两点之间路径可能会有多条 但是我们只用找到路径上最长边最小的那条 但是因为有多个询问 所以我们不能单方面考虑两个点 而是考虑很多对两个点 考虑建立最大生成树 这样的解一定是最优的!!!很巧妙 最后找两点之间的最短的那条边 用倍增lca 顺便维 阅读全文
posted @ 2022-04-22 15:53 wzx_believer 阅读(79) 评论(0) 推荐(0)
摘要: 先看道板子题 初始化 F1 F2 F3 进行n-1次加速以后 变成 Fn Fn+1 Fn+2 点击查看代码 #include<bits/stdc++.h> using namespace std; #define lowbit(x) x&(-x) #define ll long long const 阅读全文
posted @ 2022-04-22 13:09 wzx_believer 阅读(30) 评论(0) 推荐(0)
摘要: 预处理 nxt[i,j] 表示i到j最近距离i的下一个位置 最后记忆化搜索就好 #include<cstdio> #include<queue> #include<cstring> #include<iostream> using namespace std; int cur,n,m,s,t; in 阅读全文
posted @ 2022-04-22 12:52 wzx_believer 阅读(29) 评论(0) 推荐(0)
摘要: 不得不说这个树形dp做法真牛 题目大意:给出一棵树,求一条路径,选择路上的V个点,使得被选择的点的相邻且不在路径上的点的权值和最大。 考虑换根的话很麻烦 还是类似毛毛虫那个题 每个点一定是处于一个路径的中间的 可能是一上一下 一下一上 一下 一上这四种情况 因为这个题目是有方向性的 a->b 的权值 阅读全文
posted @ 2022-04-22 10:15 wzx_believer 阅读(59) 评论(0) 推荐(0)