摘要:
传送门 这个题是典型的除法分块,对题目中的式子进行变形: n∗k−∑ni=1(k/i)∗i 发现k/i的值只有O(n√)种,那么就可以进行分块了。 代码:#include#include#define ll long longusing namespace std;l... 阅读全文
摘要:
传送门 30分做法:(边权为0) 我一开始就在想30分做法,然后就想到了: 首先老套路,正着删边就是倒着加边。 并查集维护连通块大小,每次加边后将两个端点的size值乘起来累加答案。 20分做法: 当n#include#define ll long longusing... 阅读全文
摘要:
首先是一道比较简单的例题:传送门 题目的提示很明显,元素无重复,然后看看样例,手玩一下,就会发现选的元素在上面对应着上升的位置,而且这还是两个排列,那么就可以建立一个从排列A到排列B的映射,然后就可以转化成为LIS问题了,这个问题是有O(nlogn)的解法的。 代码:... 阅读全文
摘要:
传送门 首先肯定是线段树,然后问题就是怎么打标记。 观察题目,可以发现,修改操作其实就是给一段区间加上从1到r-l+1的斐波那契数列。 那么思路就是:预处理斐波那契数列前缀和,这样可以O(1)查询斐波那契数列和。然后打标记的时候,比如要修改[L,R],那么统一都打成L... 阅读全文
摘要:
传送门 不得不吐槽一句,这题出题人真的很逗 以下我copy一段别人的题解: 1/x+1/y=1/n! 先通分 (x+y)/xy=1/n! 再化整数 xy-(x+y)*n!=0 然后配平 (n!)^2-(x+y)*n!+xy=(n!)^2 ... 阅读全文
摘要:
题目大意:求gcd(fib(n),fib(m)) 这个题就是结论题: gcd(fib(n),fib(m))=fib(gcd(n,m)) 没什么可说的。 代码:#include#include#include#include#include#include#includ... 阅读全文
摘要:
传送门1 传送门2 这个题又是一个双倍经验题。 对于这种题,我的思路从来都是: 1.暴力打表 2.找规律 3.试着写正解 首先打表,我当时打出了小于等于100000的所有符合条件的数,直接看也没看出来什么,然后当然就是老套路了–质因数分解,发现规律: 1.分解出来的质... 阅读全文
摘要:
传送门用逆元的看这里!还是和前面几个一样: 因为要取模,所以除法要换成逆元,然后我就愉快地写完交了上去,60分,4个WA,发现,逆元求出来之后可以是负的,也可以是零,于是就加了这么一个特判: if(num2#include#include#include#inclu... 阅读全文
摘要:
传送门 这个题真的很神奇。 数据10000000,所以肯定是线性做法,然后我就不会了,一看题解,并查集,看完了之后,发现真的很巧妙,就是像一个链表一样用并查集。 copy一段: 这道题可以用并查集来打(然而我一开始脑抽竟然用了双向链表-.-),从最后开始往前进行涂色... 阅读全文
摘要:
模板传送门 很久以前我就听说Splay很好写,也很实用,今天晚上抄了一个看起来不错的代码,发现的确挺好懂,也挺好写,不过就是有点儿长了,刚好150行。 我还没有怎么好好研究过,这几天打算研究研究,所以我也不讲原理了,自行百度吧。 代码:#include#include... 阅读全文