LINK:九个太阳 不可做系列. 构造比较神仙. 考虑FFT的求和原理有 \(\frac{1}{k}\sum_{j=0}^{k-1}(w_k^j)^n=[k|n]\) 带入这道题的式子. 有\(\sum_{i=0}^n\frac{1}{k}\sum_{j=0}^{k-1}(w_k^j)^iC(n,i)\) 颠倒求和符号 二项式定理合并即可klogn求. k次单位根在mod 998244353时就是 \(\frac{mod-1}{k}\) code //#include<bits/stdc++.h…
求 $\sum\limits_{i=1}^n [k | i] \times C_n^i$ 膜 $998244353$ $n \leq 10^{15},k \leq 2^{20}$ $k$ 是 $2$ 的正整数次方 sol: “不看题解拿头做” 系列 考虑构造一个序列 $a_i$ 满足只有 $[k|i]$ 时是 $1$,其它时候是 $0$ 之后就开始神仙了起来 构造 $k$ 次单位根 $\omega _k = g^{\frac{p-1}{k}}$,发现 $\frac{1}{k} \times \s…
[BZOJ 5252][LOJ 2478][九省联考2018] 林克卡特树 题意 给定一个 \(n\) 个点边带权的无根树, 要求切断其中恰好 \(k\) 条边再连 \(k\) 条边权为 \(0\) 的边重新连成一棵树, 最大化新树上某条路径的权值和. \(0\le k<n\le 3\times 10^5\). 边权的绝对值不超过 \(1\times 10^6\). 提示: 题目并不难 题解 当时场上做这题的时候根本不知道有wqs二分这种高端套路...看到提示之后果断跑路了qaq... 首先切断…
[LOJ#6485]LJJ 学二项式定理(单位根反演) 题面 LOJ 题解 显然对于\(a0,a1,a2,a3\)分开算答案. 这里以\(a0\)为例 \[\begin{aligned} Ans&=\frac{1}{4}a_0\sum_{i=0}^n [4|i]{n\choose i}s^i\\ &=\frac{1}{4}a_0\sum_{i=0}^n{n\choose i}s^i\sum_{j=0}^3 (\omega_4^{j})^i\\ &=\frac{1}{4}a_0\su…
//给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和 # include<stdio.h> void main() { ,sum1; ]={,-,,,,,-,,,-};//数组要定义的时候直接全部赋值 //int a[10];!!!!! // a[10]={1,-2,3,4,5,6, //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和 # include<stdio.h> void main(…
题目链接 洛谷. LOJ,LOJ机子是真的快 Solution 我直接上暴力了...\(O(n^2k)\)洛谷要\(O2\)才能过...loj平均单点一秒... 直接枚举每个点为第\(k\)大的点,然后\(dp\)出方案数统计答案就好了. \(f[i][j]\)\(dfs\)下去的时候表示考虑到\(i\),有\(j\)个大于\(i\)的点的方案数,此时没有考虑儿子. 然后回溯的时候从叶子节点把儿子的影响加回来就好了. #include<bits/stdc++.h> using namespac…
https://loj.ac/problem/6278 区间修改,查询区间第k大. 块内有序(另存),块内二分. 还是用vector吧,数组拷贝排序,下标搞不来.. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<cstdio> #i…
题目:https://loj.ac/problem/3058 先考虑 n=1 怎么做.令 a 表示输入的 w[1][1] . \( ans_t = \sum\limits_{i=0}^{L}C_{L}^{i} a^i [ k|(i-t) ] \) \(= \frac{1}{k}\sum\limits_{i=0}^{L}C_{L}^{i} a^i \sum\limits_{j=0}^{k-1} w_{k}^{j*(i-t)} \) \(= \frac{1}{k}\sum\limits_{j=0}^…
题意: k<=2^20,n<=10^15. 标程: #include<cstdio> using namespace std; typedef long long ll; ; ; ll wn,w,ans,l,n,k; ll ksm(ll x,ll y) { ll res=; ) res=res*x%mod; x=x*x%mod; y>>=;} return res; } int main() { scanf("%lld%lld",&n,&am…
https://loj.ac/problem/6280 区间修改,区间求和. 本来线段树的活. //Stay foolish,stay hungry,stay young,stay simple #include<iostream> #include<cstdio> #include<cctype> #include<cmath> using namespace std; typedef long long ll; const int MAXN=500005…