随笔分类 -  学科竞赛--算法学习

摘要:《单调栈》 #include <iostream> #include <cstring> #include <algorithm> #include <stack> using namespace std; const int N = 3 * 1e6 + 2; int n; struct node 阅读全文
posted @ 2022-12-30 19:04 次林梦叶 阅读(23) 评论(0) 推荐(0)
摘要:《C. Even Subarrays》 异或和,前缀和 这道题如果用朴素的暴露解法为O(n^2),算出每一个子段的异或和,然后看一下这些异或和中哪个的除数是奇数个,但会超时 超时原因明显是因为我们要算出每一个子段的异或和; 在1~n的范围内的数进行异或和,其最大值不会超过2*n(因为2*n等价与n< 阅读全文
posted @ 2022-12-28 21:06 次林梦叶 阅读(63) 评论(0) 推荐(0)
摘要:《树状数组》 首先来学习一下与偏序问题息息相关的持久化数据结构 树状数组(线段树也是,但这里我就不多说了) 想看详细原理证明,这是一个好博客:https://zhuanlan.zhihu.com/p/435561765 https://blog.csdn.net/a591027895/article 阅读全文
posted @ 2022-12-27 21:19 次林梦叶 阅读(43) 评论(0) 推荐(0)
摘要:《E - Don't Isolate Elements》 dp 刚开始拿到这道题时,我总是在想:第一行翻不翻转对下面情况的影响,在什么情况下要反转,等一系列情况 最后我发现:这些情况不如我可以利用状态转移来实现,于是我朝着dp方向想。 一开始我设置的dp是dp[i][j]:在第i-1行即以上行都合法 阅读全文
posted @ 2022-12-27 20:09 次林梦叶 阅读(61) 评论(1) 推荐(1)
摘要:《Make Bipartite 2》 思维,二分图 这个简单图可以有两种情况: 1.全部点都通过边连起来,即连通分量只有一个,其自己 2.还有有些点没有全部连起来,即有多个连通分量 1.不管上面哪一种情况,如果对图跑一个二分图染色O(n+m),如果染色失败,则都是返回0,因为这时,不管再连上那一边都 阅读全文
posted @ 2022-12-18 20:51 次林梦叶 阅读(62) 评论(0) 推荐(0)
摘要:《D - Max Multiple》 dp 这道题意思即为:在序列A中任选K个数的和组成的序列S,求S中为D的倍数的最大的数,如果没有则输出-1 当时我考虑到了dp,但是完全觉得状态转移是不可能的,但是这道题仔细想一下他的框架: 对于一个下标为i的数,考虑选不选他,选则对a[i],进行操作 不选则不 阅读全文
posted @ 2022-12-14 17:36 次林梦叶 阅读(41) 评论(0) 推荐(0)
摘要:D - Factorial and Multiple 数论 首先上这道题需要的数论知识: n!的素因子分解中,n!=p1^a1 * p2^a2 * p3^a3 * ..... * pk^ak中 对于素因数pi,其对于的ai=n/pi+n/pi^2+n/pi^3+....直到n/pi^j==0为止 证 阅读全文
posted @ 2022-12-04 16:00 次林梦叶 阅读(89) 评论(0) 推荐(0)
摘要:《基于连通性的棋盘式状态压缩dp》 因为最典型的例子是放棋盘的一类问题所以我们叫他为棋盘式:典型例子如下:https://www.acwing.com/problem/content/1066/ 像这类题目如果以dfs的方式思考是不好想的,不如从上到下枚举一下到底每一行的状态到底是如何的, 因为由题 阅读全文
posted @ 2022-12-02 15:02 次林梦叶 阅读(106) 评论(0) 推荐(0)
摘要:《D - Freefall》 二分,三分 二分写法 其实可以算出T=x*b+a/sqrt(x+1); 然后让我们求T的最小值,因为很容易看出这个函数是大概如图 ,其实就是对T求导,然后找到让T’=0的x(二分找,因为这个时候导函数的图形是单调的),因为要求的是整数x,所以可能二分出来的x有偏差,要扩 阅读全文
posted @ 2022-11-27 18:29 次林梦叶 阅读(147) 评论(8) 推荐(0)
摘要:《F - Shiritori 》 博弈 首先在这个博弈题中有个很重要的结论: 1.如果一个点,走一步,能够到达的点如果其中有一个为先手必胜点,那么这个点必然是先手必败点 2.如果一个点,走一步,能够到达的点如果全部为先手必败点,那么这个点必然是先手必胜点 这道题如果用爆搜的方式: 首先我们可以根据他 阅读全文
posted @ 2022-11-24 11:06 次林梦叶 阅读(45) 评论(0) 推荐(0)
摘要:《D - Takahashi's Solitaire》 思维,看题,循环 注意到Ai<M,这个意味着 最大的数 与 最小的数 之间可能会有循环,即一个排好的数(从小到大): a1,a2,a3,.................,an-1,an; 可能(an+1)%m==a1; (这道题的难点是强迫自 阅读全文
posted @ 2022-11-17 11:05 次林梦叶 阅读(111) 评论(0) 推荐(0)
摘要:《货物摆放》 思维,约数 很明显,L,W,H都是n的约数,我们只要求一下n的约数,然后三重循环枚举其每一个约数看一下是否能L*W*H=n 有可能你会担心n的约数特别多,但是自己写个程序跑一下就知道十分少 才128个三重循环绝对不会超时,其实也可以优化到二重循环 1 #include <iostrea 阅读全文
posted @ 2022-11-09 10:35 次林梦叶 阅读(25) 评论(0) 推荐(0)
摘要:《X 进制减法》 贪心,数学推导 题目连接:https://www.acwing.com/problem/content/4407/ 我们先来看一下这个65是如何算出来的: 321:第一位为二进制,则逢2进1,ans+=1; 第二位为十进制,其上的数为2,它是由第一位进了两次位得来:即ans+=2* 阅读全文
posted @ 2022-11-03 00:10 次林梦叶 阅读(111) 评论(0) 推荐(0)
摘要:好博客: https://www.acwing.com/solution/content/53434/ https://ycw123.blog.luogu.org/ou-la-hui-lu-yu-ou-la-lu-jing 《介绍与性质》 对于无向图来说: 如果不是欧拉回路: 起点的度是奇数(度是出 阅读全文
posted @ 2022-10-26 21:19 次林梦叶 阅读(95) 评论(0) 推荐(0)
摘要:《二维离散化+二维前缀和+二维双指针算法+二分+以点代二维区间》 思路: 首先,利用二分,将求解问题变成判断问题,二分边长 关于在二维平面上的任意区域的数值问题可以用预处理二维前缀和解决 然后因为利用二分出来的边长,我们枚举在二维平面上的两个点,然后在通过前缀和算出这个区域上的草的数量,如果满足条件 阅读全文
posted @ 2022-10-22 19:08 次林梦叶 阅读(127) 评论(0) 推荐(0)
摘要:链接:https://blog.csdn.net/qq_51354600/article/details/120960472 阅读全文
posted @ 2022-10-16 21:08 次林梦叶 阅读(23) 评论(0) 推荐(0)
摘要:原题链接:https://codeforces.com/gym/403650/problem/C 题目的原意是:给定n个区间,求1-1e9这个数轴上,对于每一个数点,在给定区间上出现过的最大值 一个最朴素的想法是:每给出一段区间,我们就让这个区间上代表的数num,count[num]++ 然后排个序 阅读全文
posted @ 2022-10-15 15:05 次林梦叶 阅读(20) 评论(0) 推荐(0)
摘要:《题一:Subsequence Path》 原题链接:https://atcoder.jp/contests/abc271/tasks/abc271_e 原题详细题解:https://atcoder.jp/contests/abc271/editorial/4940 题目大意: 有N个城镇编号为1、 阅读全文
posted @ 2022-10-04 21:22 次林梦叶 阅读(24) 评论(0) 推荐(0)
摘要:《题一》 原题链接:https://atcoder.jp/contests/abc271/tasks/abc271_d 翻译: 问题陈述 有N张卡片,每面写一个整数。卡片 正面写着一个整数ai,背面写着一位整数bi。 您可以选择将每张卡片的正面或背面都显示出来。 确定您是否可以放置卡片,使可见整数的 阅读全文
posted @ 2022-10-04 12:54 次林梦叶 阅读(40) 评论(0) 推荐(0)