随笔分类 - c++——算法
摘要:思路: 自己想的是 记忆化搜索 题解 是 在合法点建图连边 本来有仙人掌 就边权为0, 不然为1, 从左端到达有段的最短路径 由于边权是1 或者0 , 直接双端bfs 即可, deque, 0放前面, 1放后面, deque<> q;
阅读全文
摘要:思路: 性质1, 相当于重新对这个序列排序 性质2, 等式关于 值域, 对于任意一个都满足, 那么就是 当前点 比前面放入的点 的最大值 - k 都要大, 比后面最小值+k都要小, --> 每一个点都要满足, 那么对于当前点的放置是有限制的,以 值域 来看 1-i 里面都已经放置了, 那么放置 后面
阅读全文
摘要:思路: 利用操作 使得题目更好分析, t 的后缀,反转t , 来看t 的前缀, 实际操作的时候, 把s 和 t 的前缀在反转一下进行交换就可以了, 发现性质 1 C(si, ti) 他们的相对位置不会变化, 一直是匹配的 然后利用 翻转的性质, 一定会产生任意我想要的排列 (从后开始构造, 先把目标
阅读全文
摘要:题目补充: 使得 a=b, 思路: 在 y<=x 好处理 在 y>x 时 利用区间dp处理 a==b 0, a!=b 1, 1要变 先预处理 把 0的 位置删了 删除多余信息 方便后面处理 然后 对于 取2个点 为 y ,另外一种操作就是 选2个连续的点直接 (他们位置差)*x 以此区间dp即可 或
阅读全文
摘要:思路 : 找各种性质 1 每一秒只有 史莱姆进入起始点 , 然后他会选一个方向走(右或者下), 每一秒 史莱姆都会这样走 在考虑 前 t 秒内 有S个史莱姆到达这个点, 然后就会 有 s+1/2 个 往右走, s/2 往下走 而且 问t秒 只会 有 t-n-m-1 秒后的时刻影响 (诈骗t ) 于是
阅读全文
摘要:思路 : 区间dp(区间DP的时间复杂度 不一定是 n^3 ,可能是 n^2 更具题意) 直接题 直接 区间dp, 0 Alice 赢 1 平局 2 Bob 赢 (于是 alice 尽可能小, bob 尽可能大) alice 选 l , bob 可以选 l+1, 或者 r alice 选 r , b
阅读全文
摘要:#include<iostream> #include<cstring> using namespace std; const int Maxn=1e7; int phi[Maxn];//记录数的约数个数(欧拉函数) bool vis[Maxn];//记录数字是否访问 int prime[Maxn]
阅读全文
摘要:思路 : 题意 性质 : 要让某个人赢, 从上往下 右走了几次到他, 因此 就是 从 n轮中 选择 k 次往右走的 所有情况 ans 就是 tot- C(n,i) i>k 的选择次数, 把大的数往里面赛就行了.
阅读全文
摘要:题目大意: 给一个序列 n 会有n次操作, 每次都会 删除 一个数 这个数 是 连续子序列里面 最大的逆序对的个数 ^ Q[i], q[i] 给出 思路 : 启发式 拆分, 每次选择长度小的序列来 进行处理 数学化: rev(逆序对个数) rev(x + 1, r) = rev(l, r) - re
阅读全文
摘要:CF1712F Triameter - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
阅读全文
摘要:思路: CF1712 E1/E2 LCM Sum (easy/hard version) 二维数点/二维偏序: 二维前缀和+扫描线+树状数组+ 离线处理 应用: 求 Q次询问, L-R内 x-y的 点的数量(矩形内点的数量) 直接用二维前缀和, 时间复杂度, 一定不允许, 发现 二维前缀和是由 4个
阅读全文
摘要:思路 : 首先发现 性质 : 2个点的距离 就是 min(最小值ai X2, 2个点直接的距离) 二分答案, 什么是 单调的? 操作次数的影响是单调的 于是看 这个 答案, 需要几次操作即可. 直接枚举相邻2个点的距离为 最大值, 看看要修改多少次 或者贪心的直接 修改 k-1 小的值, 最后一个看
阅读全文
摘要:应用: 问 2人依次走, 但是不能走到历史状态 看题意是否满足 二分图建图 性质 结论: 如果起始点, 必然在 最大匹配上, 那么先手必赢 不一定在最大匹配上, 那么先手必败 实现: 利用网络流, 先让 和 开始点的边权为0,跑一次 在恢复边权跑一次, 看ans 变大没有
阅读全文
摘要:题意:给定一个 个点 条边的无向图 ,可以将其中任意一条边分裂成一条长度为任意的链(向边中插任意多个 点),可以操作任意多次(也可以不操作)。问经过这样处理之后,从 号节点出发,至多走 步最多可以到多少 个节点。 , , 。 官方题解: 由于需要考察从 出发走 步所能到的点,那么显然需要首先构造出
阅读全文
摘要:题目大意: 给一个树, 然后 有k 种颜色可以给树上色 权值是 2个相同颜色节点的最短距离 问 让权值为 D 的方案数 题解: 首先 要让2个节点为D, 怎么处理呢? 利用 f(D)- f(D+1) 即可 因为问的是 2个相同颜色点的最短距离, 因此直接bfs用一个bfs序列 然后在bfs一下, 因
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; const double eps = 1e-9; //浮点数精度控制 #define Vector point #define Point point const double PI = acos(-1); s
阅读全文
摘要:rope: #include<ext/rope> using namespace __gnu_cxx; 定义方法:rope<变量类型>变量名称; 人话解释:超级string 算法解释:块状链表(即讲链表与数组的优势结合,形成分块思想) 用途解释:这本来是一个用于快速操作string的工具,却一般被定
阅读全文
摘要:应用: 遇到每一个点 只会有一个方向作用到其他点, 这样产生的图形就是 一个 基环树深林 通常解决方法: 利用树形dp把除去环的值更新出来, 然后在对这个环经行处理即可 模板题: 一共有 � 个岛,每个岛都有一条出边,且该图是无向图,因为桥是可以双向行走的。给定桥的长度,即两点之间的边权。同时每对岛
阅读全文
摘要:题目大意: 给出一个n*m的田地矩阵,每个格子上种着一种植物。给格子施肥t次,每一次给出五个数字,x1,y1,x2,y2,k,要施肥的区域坐标和要施的肥料种类。如果植物和施肥种类不匹配,植物会死亡。问最终会死多少个植物。 思路: 判断 一个植物 死不死, 判断植物种类*施肥次数==施肥种类总和 某些
阅读全文