题目
文章平均质量分 50
.
Jacky_50
请多指教 :)
展开
-
H. Excluded Min (思维、线段树)
简而言之,学会了一种套路,求一些线段中选出不被任何一个线段完全覆盖的所有线段,支持删除线段操作。写了一坨答辩代码,已经神志不清了,后面再补上思路吧,先给上题解的描述还有草稿纸上一些图。原创 2022-11-25 13:49:48 · 522 阅读 · 1 评论 -
J. Counting Trees (树,卡特兰数)
大意就是,规定一棵二叉树,每个节点的值都大于等于其父节点的值。给出一个中序遍历值序列,问有多少棵这样的树满足其中序遍历是这个。节点数范围 1e6,节点值范围 1e6。原创 2022-09-04 14:30:32 · 628 阅读 · 0 评论 -
【2022 CCPC 华为云计算挑战赛】1007 三角函数 (数论)
数论原创 2022-08-21 16:19:40 · 681 阅读 · 0 评论 -
kuangbin 斜率优化题单 代码
题单链接推荐:1,2,5。原创 2022-08-15 17:00:10 · 169 阅读 · 0 评论 -
【2022牛客多校9】I-The Great Wall II (dp, 单调栈, 思维)
【2022牛客多校9】I-The Great Wall II (dp, 单调栈, 思维)原创 2022-08-15 16:57:57 · 274 阅读 · 0 评论 -
【2022牛客多校4】A-Task Computing (数学,dp)
【2022牛客多校4】A-TaskComputing(数学,dp)原创 2022-07-30 17:06:52 · 205 阅读 · 0 评论 -
【2022牛客多校3】A-Ancestor (LCA)
...原创 2022-07-25 17:52:53 · 260 阅读 · 0 评论 -
B. Balance of the Force (思维)
https://codeforces.com/gym/102055/problem/B样例原创 2022-07-13 17:11:31 · 186 阅读 · 0 评论 -
kuangbin 线段树题单 代码
题单链接https://vjudge.net/article/752原创 2022-07-12 11:39:30 · 222 阅读 · 0 评论 -
F. Points (线段树)
https://codeforces.com/contest/1701/problem/F样例思路这里有官方题解https://codeforces.com/blog/entry/104671时间复杂度,每个询问都是几个查询修改,所以是 O(q*Log)。线段树最大线段长度是 a[i] 的最大值,即 200000。......原创 2022-07-11 11:25:57 · 281 阅读 · 0 评论 -
J. Straight Master (差分)
https://codeforces.com/gym/101775/problem/J原创 2022-07-11 08:51:35 · 223 阅读 · 0 评论 -
H. AND = OR (线段树,思维)
https://codeforces.com/gym/103102/problem/H原创 2022-07-06 16:31:03 · 242 阅读 · 0 评论 -
D. Evolution of Weasels (思维,字符串,代数)
题目https://codeforces.com/contest/1662/problem/D大意:字典为 {A,B,C},给两个字符串u, v,问能不能通过增减{AA, BB, CC, ABAB, BCBC}的操作,将 u 变成 v。思路一开始,我们发现了 ABA, CBC 可以和 B 互相变;BAB 可以和 A 互相变;BCB 可以和 C 互相变。于是写了个不断删 AA, BB, CC, 替换 ABA, CBC, BAB, BCB 的代码,结果假了。然后就想,好像 A 和 C 看起来很对称原创 2022-04-29 07:59:05 · 286 阅读 · 0 评论 -
第46屆ICPC亚洲区域赛(昆明)G.Glass Bead Game(数学)
题目https://ac.nowcoder.com/acm/contest/32708/G思路直接看每个数对 (i, j) 的贡献:只有当后面那个数被选到,并往前跨了,才有一个贡献。因为 m 足够大,所以第 m 次开始之前,i 在 j 前面的概率是 a[i]/(ai+aj),在后面的概率是 aj/(ai+aj),然后这一对的贡献就是 aj*(ai/(ai+aj)) + ai*(aj/(ai+aj))总的答案就是两倍的 sum ai*aj/(ai+aj)代码#include <cstd原创 2022-04-17 17:41:05 · 1544 阅读 · 5 评论 -
2022namo div1 删数 (差分)
题目http://oj.daimayuan.top/course/10/problem/703思路差分数组出来后,就变成了合并相邻项。dp做。令 f[i][t] = x 代表原差分数组第 i 项往左合并合并到和为 t 时,到第几项。t因为范围较大,开个map。总的时间复杂度 n*log(*log ?)。代码// http://oj.daimayuan.top/course/10/problem/703#include <bits/stdc++.h>using names原创 2022-04-04 10:33:42 · 376 阅读 · 0 评论 -
2022namo div1 平方计数 (数论)
题目http://oj.daimayuan.top/course/10/problem/607分析a^2+b=c^2b =(c+a)(c-a) =(x+2a)(x)对每个数b,枚举约束 x,检查是否存在对应的a即可。一百万以内的数,最大约数个数是240。代码// http://oj.daimayuan.top/course/10/problem/607#include <bits/stdc++.h>using namespace std;const int MAX原创 2022-03-21 11:34:35 · 491 阅读 · 0 评论 -
D. Cross the Maze (网络流)
题目https://codeforces.com/gym/103427/problem/D大意:给一个 a*b 的地图,有 n 个人和 n 个出口。出口只能用一次,人到了出口可以选择不出去。每次人可以LRUDS(不动)P(在出口或已经出去了才有这个,代表出去)五种操作(都是瞬移)。每个时刻每个位置只能有一个人。问 n 个人全出去的最少时间以及给出一种方案。思路注意数据都是100级别的。首先,肯定有解,且不大于 a*b。因为可以把地图按贪吃蛇那样展开成一条线,然后一次分配出口即可。那么,就可以先原创 2022-03-13 22:47:42 · 946 阅读 · 0 评论 -
Codeforces Round #772 (Div. 2)
A. Min Or Sum(https://codeforces.com/contest/1635/problem/A)[https://codeforces.com/contest/1635/problem/A]无限次操作,那就是最后剩一个数,其他都是0。#include <bits/stdc++.h>using namespace std;int n;long long a[200];void solve(){ scanf("%d",&n);原创 2022-02-21 17:54:18 · 256 阅读 · 0 评论 -
D. Big Brush (思维,搜索)
题目https://codeforces.com/contest/1638/problem/D大致题意就是:给一个 nm 的网格,要求用 22 的刷子刷最多 n*m 次将它刷成目标颜色状态。若不能则输出 -1.。思路逆时过来想:从最后一刷开始,那肯定是完整的 22 的同色田字A。那么紧贴着这个 22 的最后一次刷田字B,就应该满足除了原来A中的色块,其他色块颜色相同,以此类推,紧贴着 A,B 的最后一次刷田字 C ,就应该除了AB刷过的块,其他色块颜色相同……那么就有了一个刷法:起初,先把图案中原创 2022-02-15 08:57:41 · 495 阅读 · 4 评论 -
E. Fair Share (思维,欧拉回路)
题目https://codeforces.com/contest/1634/problem/E题意大概:给出 m 个偶数长度的数字串,要你把全部数字分到两个集合(L, R)中,使得每个串中一半数字在L,另一半在 R,且最终两个集合成分相同。若可以构造,要给出一种构造;若无法构造,则输出NO。思路https://codeforces.com/blog/entry/99563看了题解做的。题解很巧妙地把这个问题转化为了图论问题,求欧拉环。先看看怎样会无解:若所有数列算在一起,某个数字只出现了奇数原创 2022-02-08 17:06:19 · 719 阅读 · 0 评论 -
斜率优化几道题
1https://codeforces.com/contest/713/problem/C#include <bits/stdc++.h>using namespace std;const int MAXN = 3005;const long long INF = 1e14;int n;long long a[MAXN];long long b[MAXN];long long f[MAXN][MAXN];long long g[MAXN][MAXN];void原创 2022-01-25 18:46:31 · 383 阅读 · 0 评论 -
C. Divisors of the Divisors of An Integer
题目https://codeforces.com/gym/102040分析可以把 n! 分解质因数,成为 sigma( p[i] ^ a[i] ) 的形式,然后从空开始每次讨论加入一个质因数 p,次数为 a ,设上一次加了之后答案是 tmp,则在 n! 的所有约数中,所有最大质因子恰为 p 的数x的 d 函数和为 (2+3+...+(a+1)) * (1 + tmp),左半部分意思是 x 中 p 的不同次数得到的贡献,右半部分是除了 p 以外其它因子得到的贡献(加一1代表无其他银子)。然后再加上 t原创 2021-10-12 11:34:04 · 106 阅读 · 0 评论 -
G. Rikka with Intersections of Paths (树上差分)
题目2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest G. Rikka with Intersections of Pathshttps://codeforces.com/gym/102012/problem/H大意就是给一棵 n 个点的树,和其中 m 条简单路径,以及一个数 k 。要你在这 m 个路径中选 k 个,使得这 k 个路径至少包含一个公共点。问有多少种选法。n,m: 1e5k: m多组数据思路考虑对每个点,要是知道通过它的路径数为原创 2021-10-02 09:57:01 · 488 阅读 · 0 评论 -
Codeforces Round #745 (Div. 2)
A. CQXYM Count Permutationshttps://codeforces.com/contest/1581/problem/A就是 3*3*4*...*(2n)#include <bits/stdc++.h>using namespace std;#define Ha 1000000007long long n;void solve(){ scanf("%lld",&n); long long ret=1; for (int i=3; i&l原创 2021-09-30 23:52:23 · 222 阅读 · 4 评论 -
kuangbin题单9-连通图
题单链接:https://vjudge.net/article/752推荐:1,1. POJ-1236 Network of SchoolsTarjan,缩点缩完点后,第一问就是 “入度为零的点” 的个数,第二问就是 “入度为零的点的个数” 与 "出度为零的点的个数"的最大值,因为每次找一个出度为零的点 x,和一个入度为零的点 y,添加一条边 x->y,就各减少了一个点。总可以构造,使得最后变成一个强连通图。参考这篇博文 https://xiaoxiaoh.blog.csdn.ne原创 2021-09-16 14:03:36 · 111 阅读 · 0 评论 -
Luogu-P3384 【模板】轻重链剖分/树链剖分
学习是看这篇博文学习的。https://www.cnblogs.com/chinhhh/p/7965433.html代码#include <bits/stdc++.h>using namespace std;#define MAXN 100005long long Ha;int n,m,root;vector<int> graph[MAXN];int siz[MAXN];int son[MAXN];int fa[MAXN];int dep[MAXN]原创 2021-09-14 10:59:07 · 88 阅读 · 0 评论 -
L. Random Permutation (概率,推公式)
题目https://codeforces.com/gym/103119/problem/L分析代码#include <cstdio>int main(){ int n; scanf("%d",&n); double ans=1; for (int i=2; i<=n; i++) { ans=ans*i*(n-i+1)/n; } printf("%.15f\n",ans); return 0;}原创 2021-09-11 12:00:50 · 845 阅读 · 0 评论 -
A. Accelerator (分治+FFT)
题目https://codeforces.com/gym/103119/problem/A分析https://fanfansann.blog.csdn.net/article/details/118528285这篇博客讲得好清楚了。代码#include <bits/stdc++.h>using namespace std;#define MAXN 100005#define Ha 998244353#define GHa 3long long A_[MAXN<&原创 2021-09-11 11:52:03 · 588 阅读 · 0 评论 -
H. The Boomsday Project (dp)
题目The 2020 ICPC Asia Shenyang Regional Programming ContestH. The Boomsday Project大意:有一个人总是租单车。每次租车要 r 元。现在已知他将来m天的租车情况(每天要租p[i]辆车)。有 n 种优惠卡,第 i 种卡有个期限 d[i] 天(自买卡那天算起到第 d 天结束),可以免去这些天内的 k[i] 次租车钱,买卡要花 c[i] 元,一旦买了一张新卡,那之前的卡全部立即作废。问最少要花多少钱。n<=500sum§原创 2021-09-07 12:16:55 · 743 阅读 · 0 评论 -
牛客多校10-D Diameter Counting (图论-求所有包含 n 个(有标记)点的树的直径之和)
题目题意:给一个数 n ,求所有包含 n 个(有标记)点的树的直径之和。分析关于直径,有这样一个求法:要求一个树的直径,可以这样一轮轮删点直到剩下一个点或没有点:每一轮把它所有的叶子节点删掉。这样,删了 x 轮,直径就是 2x 或 2x+1。那么我们反过来,要构造一个直径为 d 的树,也可以一轮轮加:只要每一轮加的点都满足上每个叶子节点上都至少加了一个点,这样每一轮过后直径都加了2(除了往单独一个点上加一个点这种极端情况)。于是就有下面的dp思路。f[i][j] 代表 i 个(有标记原创 2021-08-20 23:18:22 · 184 阅读 · 0 评论 -
Luogu-T91116 (启发式合并)
题目题意:给一个树,每个边有个权值。一条路径的代价为路径上的边权中的最小值。求一个点,使得其它点到它的路径代价和最大。分析按边权给边排序,然后从大到小依次加入图中,那么每次这个边所连接的两团,相互到达的路径代价就是这个边的权值。用并查集,然后又需要每次对并查集内的所有点加某个数,于是想到可以只给这个集合的代表点加,然后用启发式合并保证时间复杂度。最后按新的有根扫一遍,把每个点的答案(即选这个点的话路径代价和),取最大值即可。关于启发式合并,就是说并查集在查询的时候,不进行路径压缩,在合并的时候,总原创 2021-08-18 10:27:52 · 119 阅读 · 0 评论 -
牛客多校9-A Math Challenge (类欧+拉格朗日插值+哈希)
题目https://ac.nowcoder.com/acm/contest/11260/A样例inout1 1 1 1 1 131 1 4 5 1 412678 9 3 8 9 38116858011000000000 1000000000 1000000000 50 50 10000000008216229421 1 1 50 50 999999999482598534分析难点两处,一是类欧几里得算法,二是利用拉格朗日插值求下面这个多项原创 2021-08-16 18:32:42 · 457 阅读 · 0 评论 -
力扣小题集锦
5844. 数组元素的最小非零乘积给你一个正整数 p 。你有一个下标从 1 开始的数组 nums ,这个数组包含范围 [1, 2p - 1] 内所有整数的二进制形式(两端都 包含)。你可以进行以下操作 任意 次:从 nums 中选择两个元素 x 和 y 。选择 x 中的一位与 y 对应位置的位交换。对应位置指的是两个整数 相同位置 的二进制位。比方说,如果 x = 1101 且 y = 0011 ,交换右边数起第 2 位后,我们得到 x = 1111 和 y = 0001 。请你算出进行以原创 2021-08-15 11:29:26 · 120 阅读 · 0 评论 -
牛客多校9-E (树+LCA+区间维护)
题目题意:给一个有根树,树的每个节点都有个权值,且都不比其父亲权值大。然后有 q(1e5) 个询问,问从点 x 开始,走遍所有与其相连,权值在 [l,r] 以内的点的个数。分析由于这个树权值的性质,对于每个询问,其实可以先从 x 往上跳到最大的小于等于 r 的祖先 F ,然后查询以 F 为根的子树中大于等于 l 的点的个数即可。可以用主席树。但因为是树上的区间值域维护,所以也可以利用 dfs序 ,用一个树状数组就行。时间复杂度 O n lgn代码#include <bits/st原创 2021-08-14 21:25:19 · 90 阅读 · 0 评论 -
牛客多校9-C Cells (LGV引理+线代+NTT)
题目https://ac.nowcoder.com/acm/contest/11260/C分析(截图题解的,在推了……)答案就是这三部分乘起来,前两部分好说,最后那部分,注意到值域比较小,于是统计一下在数组 a[] 中每种数的个数,然后正着一个生成函数,倒着一个生成函数,相乘,得到的系数就是差是某个数对应的 a[i]-a[j] 数量,然后乘出来就行。时间复杂度是 O(n lgn) 的。代码#include <bits/stdc++.h>using namespace std;原创 2021-08-14 21:11:38 · 210 阅读 · 0 评论 -
2021-8-12 校内个人赛题目和代码 (ST表、树状数组)
挑了两题放上来1ST表区间 gcd ,然后要某个区间可以有留着的话,只可能是那个 gcd 且是区间最小值,所以再弄个东西统计一下区间最小以及其个数就行了。#include <bits/stdc++.h>using namespace std;#define MAXN (100005)int a[MAXN][30];int b[MAXN][30];int c[MAXN][30];int n,Q;int gcd(int a, int b){ return b ? gcd原创 2021-08-13 20:14:31 · 90 阅读 · 0 评论 -
牛客多校3-E Math (数学)
题目样例Input101010010001000010000011451419198102019010412312312312310000001000000Output2514316567158326522622091分析因为是 k^3,所以 k 最大是 1e5,枚举 k ,递推出所有解,统统塞到一个 vector 里面,然后每次询问二分找一下位置就行了。代码#include <bits/stdc++.h>using name原创 2021-08-13 20:04:33 · 151 阅读 · 0 评论 -
牛客多校7-F xay loves trees (dfs序&线段树)
题目样例:输入352 12 55 32 42 11 51 33 455 33 15 43 25 35 13 43 255 35 15 25 45 33 15 23 4输出312分析选的点在第一棵树上是连续的一条链;而在第二棵树上是互不为祖先,即他们的子树不重叠。那么令 ans[x] 为以 x 点为最末端的点,在第一棵树往上最长符合条件的链。在第一棵树上遍历,用双向队列记录集合中的点,然后对第二棵树的dfs序列维护区间即可。原创 2021-08-09 10:10:41 · 111 阅读 · 0 评论 -
【模板题】Luogu-P4717 快速莫比乌斯/沃尔什变换 (FMT/FWT)
题目https://www.luogu.com.cn/problem/P4717就是给两个序列,分别求它们的 或、与、异或 卷积分析FWT 分治总体时间复杂度 O(n lgn)具体见博客里的FWT笔记代码#include <bits/stdc++.h>using namespace std;const long long Ha=998244353;const int MAXN=1<<18;int n,m;long long a[MAXN],b[MAXN];原创 2021-08-06 15:47:51 · 179 阅读 · 0 评论 -
牛客多校6-D (cdq分治+FWT)
题目题意有一个转盘,每次转动得到 0~(n-1) (n 是 2 的幂) ,转到的概率分别给出。最开始有一个数 x = 0,每次转动转盘得到一个属 y ,若 (x 异或 y) 大于 x,就令 x = (x 异或 y),否则 x 不变。求使得 x 变到 (n-1) 所需的期望转动转盘次数。分析代码...原创 2021-08-05 16:14:48 · 145 阅读 · 0 评论