算法
ah是你啊
算法 / 后端 / 前端 欢迎交流
展开
-
Codeforces Round #703 (Div. 2) C1. Guessing the Greatest (easy version) 二分
原题链接题意 :给一个数字n , 然后每次询问 区间[l , r] , 给出该区间的第二大值的索引 , 问在不超过40次的询问下 ,输出最大值的索引 。思路 :整体用二分 , 先询问[l , r]的值 为x1, 然后再询问[l , mid] 和[mid , r]的值 分别为x2 , x3 ,进行比较 , 有三种情况 ,x1 == x2 , x1 == x3 , x1 != x2 && x1 != x3 , 分别对应最大值在左半边 , 最大值在右半边 ,最大值在异于x1所在区间的另一半原创 2021-02-19 09:17:21 · 443 阅读 · 0 评论 -
牛客小白月赛17-J(组合数学)
原题链接思路 :隔板法就是在n个元素间插入(b-1)个板,即把n个元素分成b组的方法。比如将20个大小形状完全相同的小球放入3个不同的盒子,允许有盒子为空,但球必须放完,有多少种不同的方法?将20个小球分成三组需要两块隔板,因为允许有盒子为空,不符合隔板法的原理,那就人为的再加上3个小球,保证每个盒子都至少分到一个小球,那就符合隔板法的要求了(分完后,再在每组中各去掉一个小球,即满足了题设的要求)。然后就变成待分小球总数为23个,球中间有22个空档,需要在这22个空档里加入2个隔板来分隔为3份,共有原创 2021-02-01 19:08:18 · 123 阅读 · 0 评论 -
牛客小白月赛17 G-区间求和
原题链接思路 :刚学的莫队算法 , 就用来写一下吧 , 可以在纸上模拟一下相加相减的操作 ,比较容易理解。代码 :#include<bits/stdc++.h>using namespace std ;typedef long long ll ;const int maxn = 1e5 + 10 ;const int block = 300 ;ll w[maxn] , ans , v[maxn] , sum[maxn] ;struct shudui{ ll l , r ,原创 2021-02-01 18:20:55 · 61 阅读 · 0 评论 -
牛客小白月赛19 F「水」悠悠碧波 kmp
原题链接思路一道裸的kmp , 不过处理next数组的时候稍微改一下 , next[i]对应的是最长匹配的前缀的下一个字母 , 方便处理和输出 。代码#include<iostream>#include<cstring> #include<cstdio>#include<algorithm> using namespace std ;const int maxn = 1e5 + 10 ;int Next[maxn] ;char s[max原创 2021-01-27 15:46:29 · 88 阅读 · 0 评论 -
牛客NC13331 城市网络 树上倍增
牛客NC13331 城市网络 树上倍增链接https://ac.nowcoder.com/acm/problem/13331题目描述有一个树状的城市网络(即 n 个城市由 n-1 条道路连接的连通图),首都为 1 号城市,每个城市售卖价值为 a_i 的珠宝。你是一个珠宝商,现在安排有 q 次行程,每次行程为从 u 号城市前往 v 号城市(走最短路径),保证 v 在 u 前往首都的最短路径上。 在每次行程开始时,你手上有价值为 c 的珠宝(每次行程可能不同),并且每经过一个城市时(包括 u 和原创 2021-01-17 21:13:08 · 159 阅读 · 0 评论 -
Codeforces-1467 E. Distinctive Roots in a Tree(dfs序,树上差分)
Codeforces-1467 E. Distinctive Roots in a Tree(dfs序,树上差分)https://codeforces.com/contest/1467/problem/E题意:一棵有点权的无根树,定义特殊点:该点到树上任意一点路径上的点权不重复。问特殊点的数量。题解:任取一个作为根节点。定义特殊值:只有特殊点的特殊值为0。我们考虑当前节点u 。树会被分成三个部分,点集A = { x ∣ d f n [ x ] < d f n [ u ] },也就是在u原创 2021-01-17 11:49:01 · 136 阅读 · 0 评论