02 2021 档案

摘要:题目链接:https://codeforces.ml/problemset/problem/1285/D 题意:求一个非负整数x 使得 x^a[i] 的最大值最小 思路:考虑建一棵trie 从高位开始往低位扫,每次 如果只有0 或者只有1 那么x的 当前第k位 就肯定能取0,否则的话肯定是取1,然后 阅读全文
posted @ 2021-02-28 14:00 canwinfor 阅读(54) 评论(0) 推荐(0)
摘要:题目链接:https://www.acwing.com/problem/content/description/1416/ 思路:任意一段可以通过前缀和转换成两个点的最大值 那么就变成了最简单的trie求一对 数 的最大异或了,然后要求左边界最大,右边界最小 只需要 保留第一个答案 并且更新的时候直 阅读全文
posted @ 2021-02-28 11:21 canwinfor 阅读(104) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9984/F 思路:首先对于k=2 每一对人合并成一个集合,表示这个集合内都可以拿起某件装备 对不同的关系都可以合并集合,因为在集合中的任何人都可以拿起 这些装备,通过传递即可 那么再考虑贪心, 对于某件更有价值的装备 阅读全文
posted @ 2021-02-24 23:38 canwinfor 阅读(69) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9984/B 思路:先枚举 si 有多少个能匹配得上, 然后再从i+1的位置开始 找 t 最多能匹配上s的前缀有多少个 字符串哈希后用二分 找最大的k即可 每次长度为k的每一个都能产生贡献,所以每次+k 1 #incl 阅读全文
posted @ 2021-02-24 21:56 canwinfor 阅读(316) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9984/H 思路:直接从根开始dfs dfs额外维护两个参数,一个是上次的最后一个数,一个是除了上次的数的和 这样是为了再做乘法和除法的时候 能用上一次的最后一个数来做, 记得+2次mod 因为lst和now加起来的 阅读全文
posted @ 2021-02-24 20:01 canwinfor 阅读(84) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/problemset/problem/1083/A 题意:给定一棵树 每个节点和每条边都有权值,问如何选择一条路径使得 节点的权值-边权值最大, 并且在u-> v的过程中 权值-边权一定要≥0 思路:用树形dp dp[i] 为以i为根能走到的最远 阅读全文
posted @ 2021-02-22 18:52 canwinfor 阅读(46) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/problemset/problem/1118/F1 题意:每个节点染上红或蓝或者不染色, 问有多少条边 使得该边删去后的两个连通块都不同时包含红和蓝色 思路:对于每个子树来说,要满足题意只能够是子树全部有红色,然后上半部分全部有蓝色这种情况,或 阅读全文
posted @ 2021-02-21 23:07 canwinfor 阅读(86) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/contest/1213/problem/G 题意:给定一棵树,n-1条边, m次询问,每次询问 是有多少对点 的简单路径的边权最大不超过q 思路: 类似kruskal 的思想 从小到大边排序 然后再慢慢加进来,每次加边的过程 是sum[u]*s 阅读全文
posted @ 2021-02-21 11:30 canwinfor 阅读(68) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/problemset/problem/1286/B 题意:给定一棵有根树 每个节点上有c[i] 代表子树上 有 c[i]个 a[j]<a[i] 问能否找到给每个节点赋值a[i] 使得满足题意 思路: 考虑只用1到n 来编号, 可以证明 从根开始d 阅读全文
posted @ 2021-02-20 22:39 canwinfor 阅读(53) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/problemset/problem/1037/D 题意:给定一棵树 和一个bfs序列 问以1为根用bfs开始遍历能否得到这个序列 思路:考虑将相邻的边 按照先后排序后 跑一遍bfs 看是否能对的上,全部对的上即为合法序列 1 #include< 阅读全文
posted @ 2021-02-20 01:19 canwinfor 阅读(19) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/problemset/problem/1486/C2 题意:交互题 每次查询一段区间 返回你次大值, n个不同的数中 在20次内找出 最大值 思路:第一次找1~n 找出 次大值 smx 然后 通过查询1~sm看最大值在左边还是右边,假设在右边 的 阅读全文
posted @ 2021-02-19 23:11 canwinfor 阅读(113) 评论(0) 推荐(0)
摘要:总结acwing上的 贪心问题 记下结论即可 左端点升序应该对应右端点降序 左端点降序对应右端点升序 所以 只需要猜 左端点/ 右端点升序即可 而不用猜四种 1.区间选点问题,选最少的点使得每个区间至少包含一个点 思路:右端点升序排序,没有被覆盖的右端点全部选上 题目链接:https://www.a 阅读全文
posted @ 2021-02-15 22:02 canwinfor 阅读(11) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/problem/217803 思路:首先考虑如何求出所有的得分情况,可以发现每个p[i]对应的a[p[i]] 是肯定会出现的 而将p[i] 排序后 每段p[i] p[i+1] 中的最大值也是会出现的, 其他都不会出现, 那么这里就考虑 阅读全文
posted @ 2021-02-14 11:51 canwinfor 阅读(159) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9983/B 排序左端点 然后如果同分数的话 A的分要往后排 双指针 一直维护一个区间,合法的时候再更新ans 因为是单增的序列 所以可以保证正确答案一定在这 连续的一段产生 但写起来很多细节需要注意 1 #inclu 阅读全文
posted @ 2021-02-12 16:24 canwinfor 阅读(82) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9983/E 思路: 把问题转换成 求区间中的数的下一个与当前数相同的数的最小值, 即区间最小值如果 小于r的话 那么就证明当前区间至少有两个相同的数 用nxt[] 记录与当前数相同的下一个数的位置,last 为与当前 阅读全文
posted @ 2021-02-12 11:47 canwinfor 阅读(58) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9982/F 思路: 首先找出第一个i!=a[i] 的位置确定长度 然后考虑用双端队列来维护 翻转的操作, 即翻转一次我们就变为以尾为头, 再翻一次变成以头为头即可 写好翻转偶数次的操作后 复制一遍所有的front改成 阅读全文
posted @ 2021-02-11 22:31 canwinfor 阅读(105) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9982/G 思路: 扫描线思想, 左端点排序 维护sum来统计 当前通过 sum题的有多少人 [l,r]都为贡献1 r+1 才消去贡献 (记右端点要r+1才能合理消去 类似差分) 用cnt 数组存 过cnt[i] 题 阅读全文
posted @ 2021-02-11 14:38 canwinfor 阅读(104) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9982/I 思路: 埃氏筛的时候dp转移即可 即使会重复筛到,但最大的质因数会在最后更新保证正确性 因为是接在最后一位上面,假设当前的质因子是x位数 那么就记得把前面的数乘上10^x 1 #include<bits/ 阅读全文
posted @ 2021-02-10 21:12 canwinfor 阅读(66) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/contest/1480/problem/D1 题意:在给定数组中选出两段子序列 (每个元素都要选择)要求相邻元素没有一样的,问两段子序列长度和最长为多少 思路:贪心 只需要维护每一段的末尾元素 对于每个元素 如果两段子序列末尾元素只有一个不同 阅读全文
posted @ 2021-02-10 16:22 canwinfor 阅读(201) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/contest/1480/problem/C 题意:交互题, 不超过100次的询问下, 找出一个长度为n的排列中的谷底 0和n+1为正无穷 思路:100次以内很容易想到二分 , 不过这是无单调性的二分 每次check a mid 和a mid+1 阅读全文
posted @ 2021-02-10 12:10 canwinfor 阅读(153) 评论(0) 推荐(0)
摘要:acwing 树状数组 线段树 题目链接:https://www.acwing.com/problem/content/245/ ###K 类似于已知逆序对 还原原数组的过程, 从倒序开始还原, 本质是求数组中的第k小值 那么用树状数组的话就需要通过二分来做, 通过query(mid)>=k 来一直 阅读全文
posted @ 2021-02-04 15:10 canwinfor 阅读(35) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9981/C 思路: 先dfs一次把每个节点和父节点并成一对同颜色的,最终所有的点都可以配对上即是可以染色的,否则是不能成功染色的 然后再跑一次dfs 处理颜色, 在每个节点的时候判断 和子节点是否是同一对,不是的话就 阅读全文
posted @ 2021-02-02 22:51 canwinfor 阅读(136) 评论(0) 推荐(0)
摘要:并查集总结 维护连通块的数量的话 可以在修改f[t1]=t2的时候 让sum[t2]+=sum[t1] 即可 在维护每个点到根节点的距离的时候 需要在并查集的过程中维护 即 t=f][x] d[x]+=d[t] 题目链接:https://www.acwing.com/problem/content/ 阅读全文
posted @ 2021-02-01 10:57 canwinfor 阅读(12) 评论(0) 推荐(0)