09 2020 档案

摘要:区间DP 不多说了 和上面那个题一样 还是日常DFS写DP 不会循环 #include<bits/stdc++.h> #define fi first #define se second #define io std::ios::sync_with_stdio(false) using namesp 阅读全文
posted @ 2020-09-29 19:17 摸鱼选手LLF 阅读(161) 评论(0) 推荐(0) 编辑
摘要:区间合并石子 每次合并相邻的两堆,求最大和最小能获得的值 cao。。一开始直接排序然后贪心,想了半天不知道哪里错了,原来是我眼瞎了抱歉 然后区间DP一下 不会写循环 DP只会写搜索 嘻嘻 #include<bits/stdc++.h> #define fi first #define se seco 阅读全文
posted @ 2020-09-29 18:59 摸鱼选手LLF 阅读(206) 评论(0) 推荐(0) 编辑
摘要:性质题: 如果一个连通块可以构成欧拉回路或者路径,显然一笔画完事 然后如果有多个奇数度的点,设奇数度的点为ans,显然我们会发现这个要画ans/2笔,(奇数度的点一定成对存在) #include<cstdio> #include<algorithm> #include<cstring> #inclu 阅读全文
posted @ 2020-09-22 18:27 摸鱼选手LLF 阅读(185) 评论(0) 推荐(0) 编辑
摘要:题解: 还是建模问题,把单词看成边,字母看成点 然后问题就是走过所有边 看看能不能构成欧拉通路就行, #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<stack> using namesp 阅读全文
posted @ 2020-09-22 18:24 摸鱼选手LLF 阅读(246) 评论(0) 推荐(0) 编辑
摘要:题解: 欧拉回路板子题 DFS的板子 ,要点是当前弧优化(类似网络流),以及开个 边的vis数组 就可以了 #include<cstdio> #define N 100005 #define M 200005 using namespace std; int last[N], ecnt = 1, c 阅读全文
posted @ 2020-09-22 18:12 摸鱼选手LLF 阅读(403) 评论(0) 推荐(0) 编辑
摘要:题解: 题意比较绕,写出模型 街是边,路口是点, 自环在DFS里无所谓(重边也无所谓) 然后显然是个欧拉回路 ,(走过所有边回到起点) 然后图保证联通,只要判断能不能构成欧拉回路就行了 然后发现LOJ居然没pe,pe是直接wa,难受啊马飞 #include<bits/stdc++.h> #defin 阅读全文
posted @ 2020-09-22 18:09 摸鱼选手LLF 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-09-22 18:00 摸鱼选手LLF 阅读(118) 评论(0) 推荐(0) 编辑
摘要:题解:求第K大,要求第K大最小,一般都是二分答案 然后不是同一行同一列,显然又是匹配问题 考虑<=x的值,要大于等于n-k+1 然后不断找最小答案, 每次判断答案把图给clear掉,然后重新建图就行了 建模的问题的话,考虑是行和列作为点,然后点作为边,这样考虑就行了,把小于x的元素建边就行了 , 因 阅读全文
posted @ 2020-09-20 11:01 摸鱼选手LLF 阅读(157) 评论(0) 推荐(0) 编辑
摘要:我是不知道我当时咋想的。。。 不知道自己在想啥, 题解: 直接DFS找连通块的数量 N 然后答案是N-1 #include <bits/stdc++.h> using namespace std; int n,x[101],y[101],vis[101]; void dfs(int i) { vis 阅读全文
posted @ 2020-09-20 10:54 摸鱼选手LLF 阅读(110) 评论(0) 推荐(0) 编辑
摘要:vector.clear()不会释放内存,只是把size置零 和你链式存图 head=0 一样的,然后后面覆盖上 阅读全文
posted @ 2020-09-19 11:55 摸鱼选手LLF 阅读(129) 评论(0) 推荐(0) 编辑
摘要:题解: 显然 我们在越高的地方增加越好,然后注意这个最大值不能经过这里, 一次dfs找最大值, 一次dfs处理每个点的min 然后最后一次dfs计算答案 依次往下找就行了 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) 阅读全文
posted @ 2020-09-15 12:00 摸鱼选手LLF 阅读(129) 评论(0) 推荐(0) 编辑
摘要:我们发现维护左边的0和右边的1就行了 线段树区间维护一下 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) for(int i=n;i>=a;--i) #define pb push 阅读全文
posted @ 2020-09-15 10:51 摸鱼选手LLF 阅读(146) 评论(0) 推荐(0) 编辑
摘要:题解 我们发现这个是带修改的,显然点分治做不了, 然后这个是个动态点分治,俗称点分树,暂时没看懂,以后补 ,(大概是,只维护分治时的fa一路更新上去。) 然后有一个比较稳定的括号序列做法(比点分树快。) 括号序列可以快速求一个树上两点之间距离 以下资料转自洛谷大佬博客 :https://www.lu 阅读全文
posted @ 2020-09-15 10:43 摸鱼选手LLF 阅读(153) 评论(0) 推荐(0) 编辑
摘要:题意 给一棵树,1是根; 然后树上有M个资源站,现在要求你断开一些边,让根连不到所有的资源站, 考虑显然o(n)的树DP 但是有M次询问 复杂度nm 然后我们发现ki的加和比较小 然后建立虚树,每次只处理ki个点就行了 然后虚树怎么建立,我们发现只需要包含这ki个点,和他们的lca就可以了; 以下内 阅读全文
posted @ 2020-09-15 10:23 摸鱼选手LLF 阅读(188) 评论(0) 推荐(0) 编辑
摘要:链接 :。。 zbr说这是签到,看了半天没看出来, 题解: 我们要这么考虑。。 单独把M个数和X搞出来 一共(m+1)!种排列 然后x在最后的有m!种 然后我们发现x在最后的排列数量为m!/(m+1)! 也就是占比 1/(m+1) 所以在N!中,也是占比这么多 所以最终答案就是n!/(m+1) 强啊 阅读全文
posted @ 2020-09-12 23:38 摸鱼选手LLF 阅读(117) 评论(0) 推荐(0) 编辑
摘要:优先队列默认由大到小,由小到大可以为 priority_queue<int,vector<int>,greater<int> > q; typedef struct node { int pi; int di; bool operator < (const node &b)const { if(pi 阅读全文
posted @ 2020-09-12 20:29 摸鱼选手LLF 阅读(163) 评论(0) 推荐(0) 编辑
摘要:训练了一波读脑残题 训练了一波后台数据出错还没得骂的心态,or蜜汁 题意? 复习了一波STL用法,练了一波手速, 题解:码农大模拟,end。。 #include<bits/stdc++.h> #define fi first #define se second #define io std::ios 阅读全文
posted @ 2020-09-11 21:01 摸鱼选手LLF 阅读(178) 评论(0) 推荐(0) 编辑
摘要:树剖 LCA DFS序板子题 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) for(int i=n;i>=a;--i) #define pb push_back #define 阅读全文
posted @ 2020-09-11 11:56 摸鱼选手LLF 阅读(152) 评论(0) 推荐(0) 编辑
摘要:水题 建两个自动机跑转移就行了 #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) for(int i=n;i>=a;--i) #define pb push_back #define 阅读全文
posted @ 2020-09-11 11:42 摸鱼选手LLF 阅读(148) 评论(0) 推荐(0) 编辑
摘要:#include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i,a,n) for(int i=n;i>=a;--i) #define pb push_back #define fi first #defin 阅读全文
posted @ 2020-09-11 11:28 摸鱼选手LLF 阅读(117) 评论(0) 推荐(0) 编辑
摘要:链接 https://www.luogu.com.cn/problem/P3518 题解: 玄学 显然 gcd(x,n)是答案, 考虑如果一个数y是答案 ,那么2y 3y 4y是答案 然后考虑所有答案的GCD 下同 发现如果最小的答案是y,那么所有答案就是2y 3y 4y,因为最小的GCD也是答案, 阅读全文
posted @ 2020-09-11 10:57 摸鱼选手LLF 阅读(117) 评论(0) 推荐(0) 编辑
摘要:如题 N<=250000 倍增后缀数组和DC3都过不了 ,据说有的人DC3能过 后缀自动机 首先对A串建立后缀自动机 然后让B在A上匹配 考虑B的逐位匹配,维护一个cur节点,一开始这个节点是空节点,也就是1 然后如果cur的转移里面有B[i] ,那么ans++, cur转移到下个节点 如果匹配不到 阅读全文
posted @ 2020-09-10 16:20 摸鱼选手LLF 阅读(122) 评论(0) 推荐(0) 编辑
摘要:链接: https://www.luogu.com.cn/problem/P3975 题意如题 题解:先DFS累加后面的串出现的次数, 然后跑trans找就可以了 当不同位置看作同一个字串时,显然这时候每个状态只出现一次,出现次数siz就是1;(同时注意设置clone节点的siz,因为建立时clon 阅读全文
posted @ 2020-09-10 11:12 摸鱼选手LLF 阅读(157) 评论(0) 推荐(0) 编辑
摘要:题意 给你一个无向图 不会有重边和自环 然后要求你把所有点分成两个集合,每个集合的点必须是个完全图, 如果满足不了上述条件 输出-1; 题解:考虑建原图的补图; 即,若两点之间没有边,则连边; 若这个图不是二分图,那么无解,感性理解一下就行了 注意你虽然是二分图,但是不一定是全联通,可能是很多个连通 阅读全文
posted @ 2020-09-09 22:23 摸鱼选手LLF 阅读(111) 评论(0) 推荐(0) 编辑
摘要:链接https://atcoder.jp/contests/arc097/tasks/arc097_b 题意 给你一个排列 然后给你M个pair,这两个pair位置的值可以互换, 然后问你最多能换成多少个位置的pi=i; 题解: 手玩了一下,发现你连起来的pair,可以互换成全排列, 然后这就是个并 阅读全文
posted @ 2020-09-09 21:55 摸鱼选手LLF 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题意:一个数组 每次选K个连续的数,然后删掉其中最小的数 然后你可以进行Q次操作 要求删去的最大数和最小数的差值最小 求这个差值 题解: 枚举最小数x,依次把每个数作为最小的数, 然后统计答案,发现小于x的数会把整个数组分成各个区间,然后取这些区间里的最小数, 然后用这些最小数里最大的,更新答案就可 阅读全文
posted @ 2020-09-09 21:40 摸鱼选手LLF 阅读(219) 评论(0) 推荐(0) 编辑
摘要:题意: 给一个长度为N的数组 然后求满足 他们的异或和 加和相等的区间 题解: 我们发现,一旦两个数字有一位都是1,他们会变成0,所以这时候肯定就少了值,换句话说,两个数异或的最大值,是两个数的加和 所以枚举每个位置,然后向前异或,因为,所以每次最多20次向前 复杂度20*n,也就是log(ai)* 阅读全文
posted @ 2020-09-09 21:34 摸鱼选手LLF 阅读(144) 评论(0) 推荐(0) 编辑
摘要:链接https://atcoder.jp/contests/arc099/tasks/arc099_a 题意 一个长度为N 的排列 每次选K个连续的数,然后所有的数都会变成这K个里的最小值,求最小操作次数 题解:水题 显然最后全变成1 从左到右覆盖过去就行了,注意下边界问题就行了 代码 #inclu 阅读全文
posted @ 2020-09-09 21:27 摸鱼选手LLF 阅读(208) 评论(0) 推荐(0) 编辑
摘要:链接:https://atcoder.jp/contests/arc097/tasks/arc097_a 题意: 给一个字符串 求出第K小的字串 后缀自动机,但这是第一题 发现长度比较小,然后我把每个前缀都push进trie树里,mle。。。 然后看了看题解 发现我们只要把长度小于=5的子串拉出来排 阅读全文
posted @ 2020-09-09 21:23 摸鱼选手LLF 阅读(146) 评论(0) 推荐(0) 编辑
摘要:链接:https://atcoder.jp/contests/arc100/tasks/arc100_b 题意 :给一个数组 分成四块 要求最大的加合与最小的加合相差最小 枚举中间的一刀 然后左边的一刀尽量满足差值最小 右边的也是,因为这样才能满足全局最小 , 然后取枚举中间一刀的所有答案 然后发现 阅读全文
posted @ 2020-09-09 21:17 摸鱼选手LLF 阅读(158) 评论(0) 推荐(0) 编辑
摘要:题意 给你一堆x轴上的点 然后让你在x轴找一个点,使所有点到他的距离总和最小 考虑之前那个所有点都是x,y表示的题 那个题显然是个二次函数 这个题也是求距离,就套三分算一算, #include<bits/stdc++.h> #define pb push_back #define fi first 阅读全文
posted @ 2020-09-09 20:31 摸鱼选手LLF 阅读(191) 评论(0) 推荐(0) 编辑
摘要:链接:https://atcoder.jp/contests/arc101/tasks/arc101_b 题意: 先给出中位数定义 若为奇数 就是中位数 若为偶数,则为两个中间的数中较大那个 给一个长度为N的数组,把他们任意取l,r的连续区间 ,求sort后的中位数,放在一起,组成一个新序列,然后再 阅读全文
posted @ 2020-09-09 20:21 摸鱼选手LLF 阅读(124) 评论(0) 推荐(0) 编辑
摘要:水题 ; 最优解最多只会回头一次 所以依次判断就行了 链接 :https://atcoder.jp/contests/arc101/tasks/arc101_a #include<bits/stdc++.h> #define pb push_back #define fi first #define 阅读全文
posted @ 2020-09-09 15:53 摸鱼选手LLF 阅读(147) 评论(0) 推荐(0) 编辑
摘要:这题纯脑残了 分奇偶处理一下就行了 链接 :https://atcoder.jp/contests/arc102/tasks/arc102_a #include<bits/stdc++.h> #define rep(i,a,n) for(int i=a;i<=n;++i) #define per(i 阅读全文
posted @ 2020-09-09 15:50 摸鱼选手LLF 阅读(146) 评论(0) 推荐(0) 编辑
摘要:首先板子 const int L = 63; ll d[L]; bool add(ll x) { for(int i = L - 1; i >= 0; i--) if(x & 1ll << i) { if(d[i] == -1) { d[i] = x; return true; } x ^= d[i 阅读全文
posted @ 2020-09-09 15:47 摸鱼选手LLF 阅读(150) 评论(0) 推荐(0) 编辑
摘要:T组样例 题意 博弈游戏 一开始有个value是0 第一个人的目标是让value保持0 第二个人是让value不为0 给一个长度为N数组 然后给一个长度为N字符串 0代表第一个人可以选择此数进行异或,也可以什么都不干 1代表第二个人 题解: 显然 第二个人没动手之前,第一个人不动 所以倒着来一次线性 阅读全文
posted @ 2020-09-09 00:19 摸鱼选手LLF 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题意 给你一个角度,每次向前走一米,然后变换角度再向前走一米,问多久回到原点 显然 这就是个lcm和360度的问题 然后用计算几何模拟了一下练练手 还出了挺多问题 #include<bits/stdc++.h> #define pb push_back #define fi first #defin 阅读全文
posted @ 2020-09-08 23:32 摸鱼选手LLF 阅读(190) 评论(0) 推荐(0) 编辑
摘要:题意: 给一堆字符串 问你有多少个pair,是满足条件的 1 x是y的 后缀 2 x是y 的后缀加上y前面的任意一个字符 题解 开个trie树处理一下 #include<bits/stdc++.h> //#include<tr1::unordered_map> #define rep(i,a,n) 阅读全文
posted @ 2020-09-08 23:23 摸鱼选手LLF 阅读(225) 评论(0) 推荐(0) 编辑
摘要:链接 https://atcoder.jp/contests/agc047/tasks/agc047_a 题意:给N个数 问两两相乘是整数的pair的个数 每个数最多有九位小数 题解 把每个数乘1e9 然后判断乘积%1e18是不是0就行了 然后要快速处理这个 我们发现1e18 有18个2和18个5 阅读全文
posted @ 2020-09-08 23:19 摸鱼选手LLF 阅读(217) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示